diff --git a/.gitignore b/.gitignore index 020989f2..fb29d664 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,13 @@ build/ **/PQAnalysis.egg-info/ **/__pycache* +# generated Cython artifacts (the .pyx sources stay tracked) +*.cpython-*.so +PQAnalysis/analysis/msd/_msd_kernel.c +PQAnalysis/analysis/vacf/_vacf_kernel.c +PQAnalysis/analysis/rdf/_rdf_kernel.c +PQAnalysis/io/traj_file/_slab_parser.c + _version.py **/*.ipynb diff --git a/MANIFEST.in b/MANIFEST.in index 086a8e1f..53d81fb3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,3 +3,7 @@ include README.md include CHANGELOG.md recursive-include PQAnalysis/grammar *.lark include PQAnalysis/io/traj_file/process_lines.pyx +include PQAnalysis/io/traj_file/_slab_parser.pyx +include PQAnalysis/analysis/msd/_msd_kernel.pyx +include PQAnalysis/analysis/vacf/_vacf_kernel.pyx +include PQAnalysis/analysis/rdf/_rdf_kernel.pyx diff --git a/PQAnalysis/analysis/__init__.py b/PQAnalysis/analysis/__init__.py index 864b575e..95109559 100644 --- a/PQAnalysis/analysis/__init__.py +++ b/PQAnalysis/analysis/__init__.py @@ -2,4 +2,13 @@ This is a collection of analysis subpackages. """ +from .momentum import Momentum, check_momentum +from .msd import MSD, MSDDiffusionFit, MSDInputFileReader, msd from .rdf import RDF, RDFInputFileReader, RDFDataWriter, RDFLogWriter, rdf +from .spectrum_broadening import broaden, build_spectrum +from .vacf import VACF, VACFInputFileReader, vacf, vacf_spectrum +from .vibrational import ( + VibrationalAnalysisInputFileReader, + VibrationalAnalysisResult, + vibrations, +) diff --git a/PQAnalysis/analysis/momentum/__init__.py b/PQAnalysis/analysis/momentum/__init__.py new file mode 100644 index 00000000..67ced758 --- /dev/null +++ b/PQAnalysis/analysis/momentum/__init__.py @@ -0,0 +1,28 @@ +""" +A package containing classes and functions to check the total linear +momentum of velocity trajectories. + +Classes +------- +:py:class:`~PQAnalysis.analysis.momentum.momentum.Momentum` + A class to calculate the norm of the total linear momentum of a + selection of atoms for every frame of a velocity trajectory. +:py:class:`~PQAnalysis.analysis.momentum.momentum_output_file_writer.MomentumDataWriter` + A class to write momentum data to output files. + +Functions +--------- +:py:func:`~PQAnalysis.analysis.momentum.api.check_momentum` + A function to calculate and write the total linear momentum norm + per frame of a velocity trajectory. +""" + +from .api import check_momentum +from .momentum import Momentum +from .momentum_output_file_writer import MomentumDataWriter + +__all__ = [ + "Momentum", + "MomentumDataWriter", + "check_momentum", +] diff --git a/PQAnalysis/analysis/momentum/api.py b/PQAnalysis/analysis/momentum/api.py new file mode 100644 index 00000000..abd675d1 --- /dev/null +++ b/PQAnalysis/analysis/momentum/api.py @@ -0,0 +1,84 @@ +""" +API functions for the momentum analysis. +""" + +from beartype.typing import List + +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io.formats import FileWritingMode +from PQAnalysis.topology import SelectionCompatible +from PQAnalysis.traj import MDEngineFormat +from PQAnalysis.type_checking import runtime_type_checking +from PQAnalysis.types import Np1DNumberArray, PositiveReal + +from .momentum import Momentum +from .momentum_output_file_writer import MomentumDataWriter + + + +@runtime_type_checking +def check_momentum( + trajectory_files: str | List[str], + output: str | None = None, + selection: SelectionCompatible = None, + use_full_atom_info: bool = False, + scale: PositiveReal | None = None, + md_format: MDEngineFormat | str = MDEngineFormat.PQ, + mode: str | FileWritingMode = "w", +) -> Np1DNumberArray: + """ + Calculate the total linear momentum norm per frame and write it. + + Reads the given velocity trajectory file(s) frame by frame, + calculates the norm of the total linear momentum + ``P = sum_i m_i * v_i`` of the selected atoms for every frame and + writes one row per frame containing the one-based frame index and + the scaled momentum norm. This is a port of the legacy + ``equipartition.jl`` tool. + + Parameters + ---------- + trajectory_files : str | List[str] + The velocity trajectory file(s) to read. + output : str | None, optional + The output file. If None, the output is printed to stdout, + by default None. + selection : SelectionCompatible, optional + The selection of atoms to include in the total momentum, + by default None (all atoms). + use_full_atom_info : bool, optional + Whether to use the full atom information of the trajectory + for the selection or not, by default False. + scale : PositiveReal | None, optional + The scaling factor applied to the momentum norm before + output, by default None (1e-15, which converts + amu*Angstrom/s to amu*Angstrom/fs). + md_format : MDEngineFormat | str, optional + The format of the trajectory, by default MDEngineFormat.PQ. + Use ``qmcfc`` for legacy trajectories with a leading dummy + 'X' atom. + mode : str | FileWritingMode, optional + The writing mode of the output file, by default "w". + + Returns + ------- + Np1DNumberArray + The scaled norms of the total linear momentum, one value + per frame. + """ + reader = TrajectoryReader(trajectory_files, md_format=md_format) + + momentum = Momentum( + reader, + selection=selection, + use_full_atom_info=use_full_atom_info, + scale=scale, + ) + + data_writer = MomentumDataWriter(output, mode=mode) + + momentum_norms = momentum.run() + + data_writer.write(momentum_norms) + + return momentum_norms diff --git a/PQAnalysis/analysis/momentum/exceptions.py b/PQAnalysis/analysis/momentum/exceptions.py new file mode 100644 index 00000000..fe78e3cd --- /dev/null +++ b/PQAnalysis/analysis/momentum/exceptions.py @@ -0,0 +1,13 @@ +""" +Exceptions for the momentum analysis. +""" + +from PQAnalysis.exceptions import PQException + + + +class MomentumError(PQException): + + """ + Exception raised for momentum analysis errors. + """ diff --git a/PQAnalysis/analysis/momentum/momentum.py b/PQAnalysis/analysis/momentum/momentum.py new file mode 100644 index 00000000..0da3574c --- /dev/null +++ b/PQAnalysis/analysis/momentum/momentum.py @@ -0,0 +1,279 @@ +""" +A module containing the Momentum class. The Momentum class is used +to calculate the norm of the total linear momentum of a selection +of atoms for every frame of a velocity trajectory. It can be used +to check a simulation for center of mass drift. +""" + +import itertools +import logging + +# 3rd party imports +import numpy as np + +from beartype.typing import Generator +from tqdm.auto import tqdm + +# local absolute imports +from PQAnalysis import config +from PQAnalysis.types import ( + Np1DNumberArray, + Np2DNumberArray, + PositiveReal, +) +from PQAnalysis.traj import Trajectory, TrajectoryFormat +from PQAnalysis.topology import Selection, SelectionCompatible +from PQAnalysis.utils import timeit_in_class +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.io import RawTrajectoryReader, TrajectoryReader +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +# local relative imports +from .exceptions import MomentumError + + + +class Momentum: + + """ + A class for calculating the norm of the total linear momentum + of a selection of atoms for every frame of a velocity trajectory. + + For every frame the total linear momentum + ``P = sum_i m_i * v_i`` is accumulated in float64 over all + selected atoms and the norm ``|P|`` is multiplied by a scaling + factor. With velocities in Angstrom/s (PQ velocity trajectories) + the default scaling factor of 1e-15 converts the momentum norm + from amu*Angstrom/s to amu*Angstrom/fs. + + Note that the velocities are parsed from file in single precision + by the TrajectoryReader, so reported norms below roughly + ``1e-7 * sum_i m_i * |v_i| * scale`` are parsing noise, not + physical center of mass drift. The legacy ``equipartition.jl`` + tool parses the velocities in double precision and therefore + resolves correspondingly smaller drift for momentum-conserving + trajectories. + + The Momentum class can be initialized with either a trajectory + object or via a TrajectoryReader object. If a trajectory object + is given, it is assumed to have a constant topology over all + frames! The main difference between the two is that the + TrajectoryReader object allows for lazy loading of the + trajectory, meaning that the trajectory is only loaded frame by + frame when needed. This can be useful for large trajectories + that do not fit into memory. + + When initialized with a TrajectoryReader of a velocity + trajectory, the frames are streamed through the raw fast-path + reader + (:py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader`) + without building an AtomicSystem per frame. The computed + momentum norms are bit-identical to the AtomicSystem based + stream. + """ + + _scale_default = 1e-15 + _use_full_atom_default = False + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + @runtime_type_checking + def __init__( + self, + traj: Trajectory | TrajectoryReader, + selection: SelectionCompatible = None, + use_full_atom_info: bool | None = False, + scale: PositiveReal | None = None, + ): + """ + Parameters + ---------- + traj : Trajectory | TrajectoryReader + The velocity trajectory to analyze. If a TrajectoryReader + is provided, the trajectory is read frame by frame via a + frame_generator. + selection : SelectionCompatible, optional + The selection of atoms to include in the total momentum, + by default None (all atoms). + use_full_atom_info : bool | None, optional + Whether to use the full atom information of the trajectory + for the selection or not, by default None (False). + scale : PositiveReal | None, optional + The scaling factor applied to the momentum norm before + output, by default None (1e-15, which converts + amu*Angstrom/s to amu*Angstrom/fs). + + Raises + ------ + MomentumError + If the trajectory is empty. + MomentumError + If the selection does not select any atoms. + MomentumError + If the mass of an atom of the selection is unknown. + """ + + if use_full_atom_info is None: + self.use_full_atom_info = self._use_full_atom_default + else: + self.use_full_atom_info = use_full_atom_info + + if scale is None: + self.scale = self._scale_default + else: + self.scale = scale + + self.selection = Selection(selection) + + self._raw_reader = None + self.frame_generator = None + self._n_frames_total = None + + if ( + isinstance(traj, TrajectoryReader) + and traj.traj_format == TrajectoryFormat.VEL + ): + # additive fast path: stream the raw float32 values of + # the velocity trajectory without building an + # AtomicSystem per frame (bit-identical values) + self._raw_reader = RawTrajectoryReader( + traj.filenames, + traj_format=traj.traj_format, + md_format=traj.md_format, + ) + self._n_frames_total = self._raw_reader.count_frames() + self.first_frame = self._raw_reader.read_first_frame() + elif isinstance(traj, TrajectoryReader): + # lazy loading of trajectory from file(s) + self._n_frames_total = sum( + traj.calculate_number_of_frames_per_file() + ) + self.frame_generator = traj.frame_generator() + self.first_frame = next(self.frame_generator) + elif len(traj) > 0: + # use trajectory object as iterator + self._n_frames_total = len(traj) + self.frame_generator = iter(traj) + self.first_frame = next(self.frame_generator) + else: + self.logger.error( + "Trajectory cannot be of length 0.", + exception=MomentumError + ) + + if traj.topology is not None: + self.topology = traj.topology + else: + self.topology = self.first_frame.topology + + self.indices = self.selection.select( + self.topology, + self.use_full_atom_info + ) + + if len(self.indices) == 0: + self.logger.error( + "The selection does not select any atoms.", + exception=MomentumError + ) + + masses = [self.topology.atoms[index].mass for index in self.indices] + + if any(mass is None for mass in masses): + self.logger.error( + ( + "The mass of at least one selected atom is unknown. " + "The total momentum cannot be calculated." + ), + exception=MomentumError + ) + + self.masses = np.asarray(masses, dtype=np.float64) + + self.momentum_norms = np.array([]) + + @timeit_in_class + def run(self) -> Np1DNumberArray: + """ + Runs the momentum analysis. + + For every frame of the trajectory the total linear momentum + of the selected atoms is accumulated in float64 and the + scaled norm of the momentum vector is stored. + + This method will display a progress bar by default. + This can be disabled by setting with_progress_bar to + False. + + Returns + ------- + Np1DNumberArray + The scaled norms of the total linear momentum, one value + per frame. + + Raises + ------ + MomentumError + If a frame does not contain velocity information for all + atoms of the topology. + """ + norms = [] + selected_masses = self.masses[:, None] + + for velocities in tqdm( + self._velocities(), + total=self._n_frames_total, + disable=not config.with_progress_bar): + + if velocities.shape[0] != self.topology.n_atoms: + self.logger.error( + ( + "The trajectory does not contain velocity " + "information for all atoms. Please provide a " + "velocity trajectory." + ), + exception=MomentumError + ) + + momentum = np.sum( + selected_masses * velocities[self.indices], + axis=0 + ) + + norms.append(float(np.linalg.norm(momentum)) * self.scale) + + self.momentum_norms = np.array(norms, dtype=np.float64) + + return self.momentum_norms + + def _velocities(self) -> Generator[Np2DNumberArray, None, None]: + """ + Yields the float64 velocities of all frames. + + Dispatches to the raw fast-path stream if the analysis was + constructed from a TrajectoryReader of a velocity trajectory + and to the AtomicSystem based stream otherwise. Both streams + yield bit-identical float64 arrays. + + Yields + ------ + Np2DNumberArray + The velocities of one frame with shape ``(n_atoms, 3)``. + """ + if self._raw_reader is not None: + for values, _cell in self._raw_reader.raw_frame_generator(): + yield np.asarray(values, dtype=np.float64) + else: + frames = itertools.chain( + [self.first_frame], self.frame_generator + ) + + for frame in frames: + yield np.asarray(frame.vel, dtype=np.float64) + + @property + def n_frames(self) -> int: + """int: The number of analyzed frames after calling run().""" + return len(self.momentum_norms) diff --git a/PQAnalysis/analysis/momentum/momentum_output_file_writer.py b/PQAnalysis/analysis/momentum/momentum_output_file_writer.py new file mode 100644 index 00000000..3a12c7ca --- /dev/null +++ b/PQAnalysis/analysis/momentum/momentum_output_file_writer.py @@ -0,0 +1,61 @@ +""" +A module containing the writer for the data of a +:py:class:`~PQAnalysis.analysis.momentum.momentum.Momentum` analysis. +""" + +# local imports +from PQAnalysis.io import BaseWriter +from PQAnalysis.io.formats import FileWritingMode +from PQAnalysis.types import Np1DNumberArray +from PQAnalysis.type_checking import runtime_type_checking + + + +class MomentumDataWriter(BaseWriter): + + """ + Class for writing the data of a + :py:class:`~PQAnalysis.analysis.momentum.momentum.Momentum` + analysis to a file. + + Each row contains the one-based frame index and the scaled norm + of the total linear momentum of that frame, reproducing the + legacy ``equipartition.jl`` output layout. + """ + + @runtime_type_checking + def __init__( + self, + filename: str | None = None, + mode: str | FileWritingMode = "w", + ) -> None: + """ + Parameters + ---------- + filename : str | None, optional + The filename to write to. If None, the output is printed + to stdout, by default None. + mode : str | FileWritingMode, optional + The writing mode, by default "w". + """ + self.filename = filename + super().__init__(filename, mode=mode) + + @runtime_type_checking + def write(self, data: Np1DNumberArray) -> None: + """ + Writes the momentum norms to the file. + + Parameters + ---------- + data : Np1DNumberArray + The scaled momentum norms as returned by the + :py:meth:`~PQAnalysis.analysis.momentum.momentum.Momentum.run` + method. + """ + super().open() + + for frame_index, norm in enumerate(data, start=1): + print(f"{frame_index} {norm:.12e}", file=self.file) + + super().close() diff --git a/PQAnalysis/analysis/msd/__init__.py b/PQAnalysis/analysis/msd/__init__.py new file mode 100644 index 00000000..f95d2602 --- /dev/null +++ b/PQAnalysis/analysis/msd/__init__.py @@ -0,0 +1,39 @@ +""" +A package containing classes and functions to handle mean square +displacement (MSD) analyses. + +Classes +------- +:py:class:`~PQAnalysis.analysis.msd.msd.MSD` + A class to calculate mean square displacements. +:py:class:`~PQAnalysis.analysis.msd.msd.MSDDiffusionFit` + A container for the result of a linear diffusion fit. +:py:class:`~PQAnalysis.analysis.msd.msd_input_file_reader.MSDInputFileReader` + A class to read MSD setups from input files. +:py:class:`~PQAnalysis.analysis.msd.msd_output_file_writer.MSDDataWriter` + A class to write MSD data to output files. +:py:class:`~PQAnalysis.analysis.msd.msd_output_file_writer.MSDLogWriter` + A class to write log files. + +Functions +--------- +:py:func:`~PQAnalysis.analysis.msd.api.msd` + A function to calculate MSDs from an input file. +""" + +from .api import msd +from .msd import MSD, MSDDiffusionFit +from .msd_input_file_reader import MSDInputFileReader +from .msd_output_file_writer import MSDDataWriter, MSDLogWriter +from .exceptions import MSDError, MSDWarning + +__all__ = [ + "MSD", + "MSDDataWriter", + "MSDDiffusionFit", + "MSDError", + "MSDInputFileReader", + "MSDLogWriter", + "MSDWarning", + "msd", +] diff --git a/PQAnalysis/analysis/msd/_msd_kernel.pyx b/PQAnalysis/analysis/msd/_msd_kernel.pyx new file mode 100644 index 00000000..7acb577a --- /dev/null +++ b/PQAnalysis/analysis/msd/_msd_kernel.pyx @@ -0,0 +1,249 @@ +# cython: language_level=3 +# cython: boundscheck=False +# cython: wraparound=False +# cython: initializedcheck=False +# cython: cdivision=True +""" +Cython kernel for the MSD accumulation hot loop. + +The kernel advances the running Diffcalc-style MSD state by one +trajectory frame: it gathers the selected atom positions of the frame +(float32 -> float64, exact), unwraps them with a running minimum image +convention applied to the per-frame displacement vectors, spawns, +replaces and drains time origins following the legacy Diffcalc +bookkeeping and accumulates the per-axis squared displacements of all +active time origins into the lag bins of the msd accumulator. + +The unwrapping uses the exact op semantics of the pure numpy +implementation: ``fractional = d @ B^-1.T`` and +``shift += -rint(fractional) @ B.T``, where the C ``rint`` rounds +half-even under the default rounding mode, matching ``np.rint``. + +A pure Python/numpy fallback with the identical signature lives in +:py:mod:`PQAnalysis.analysis.msd._msd_kernel_py`. +""" + +import numpy as np + +cimport numpy as np + +from libc.math cimport rint +from libc.string cimport memcpy, memmove + + +def msd_frame_update( + const np.float32_t[:, ::1] values, + const np.int64_t[::1] indices, + const np.float64_t[:, ::1] box, + const np.float64_t[:, ::1] inv_box, + long long is_vacuum, + np.float64_t[:, ::1] pos, + np.float64_t[:, ::1] prev_pos, + np.float64_t[:, ::1] shift, + np.float64_t[:, ::1] unwrapped, + np.float64_t[:, :, ::1] origins, + np.float64_t[:, ::1] msd, + np.int64_t[::1] state, + long long counter, + long long gap, + long long window, + long long n_start, + long long stop_frame, +): + """ + Advances the running MSD state by one trajectory frame. + + The selected rows of ``values`` are gathered into ``pos`` (exact + float32 -> float64 conversion). For every frame after the first + one the per-frame displacement ``pos - prev_pos`` is folded back + into the minimum image convention and the resulting change is + accumulated into ``shift`` (skipped for vacuum cells). The + unwrapped coordinates ``pos + shift`` are stored in ``unwrapped`` + and ``prev_pos`` is updated to ``pos``. Frames with + ``counter < n_start`` only update the unwrapping state. All other + frames run the legacy Diffcalc time origin bookkeeping (spawn, + final-lag accumulation, replace or drain every ``gap`` frames) and + accumulate the per-axis squared displacements of all active time + origins into the lag bins of ``msd``. + + Parameters + ---------- + values : np.float32 array of shape (n_atoms, 3), C-contiguous + The raw frame values (positions) of all atoms of the frame. + indices : np.int64 array of shape (n_sel,) + The indices of the selected atoms. + box : np.float64 array of shape (3, 3), C-contiguous + The box matrix of the current frame. Ignored for vacuum + cells. + inv_box : np.float64 array of shape (3, 3), C-contiguous + The inverse box matrix of the current frame. Ignored for + vacuum cells. + is_vacuum : int + Whether the cell of the current frame is a vacuum cell (no + unwrapping is applied then). + pos : np.float64 array of shape (n_sel, 3), C-contiguous + Scratch buffer, filled with the selected positions of the + current frame. + prev_pos : np.float64 array of shape (n_sel, 3), C-contiguous + The selected positions of the previous frame; updated in + place to the current frame. Its input content is ignored for + ``counter == 1``. + shift : np.float64 array of shape (n_sel, 3), C-contiguous + The cumulative unwrapping shift vectors; updated in place. + unwrapped : np.float64 array of shape (n_sel, 3), C-contiguous + Scratch buffer, filled with the unwrapped coordinates + ``pos + shift``. + origins : np.float64 array of shape (n_origins_max, n_sel, 3), C-contiguous + The unwrapped coordinates of the active time origins, oldest + origin at index 0; updated in place. + msd : np.float64 array of shape (window + 1, 3), C-contiguous + The raw (unnormalized) per-axis MSD accumulator; updated in + place. + state : np.int64 array of shape (2,) + The origin bookkeeping state ``[n_active, last]``; updated in + place. + counter : int + The 1-based frame counter of the current frame. + gap : int + The gap between two time origins in frames. + window : int + The correlation window size in frames. + n_start : int + The first frame (1-based frame counter) at which processing + starts. Earlier frames only update the unwrapping state. + stop_frame : int + The last frame (1-based frame counter) at which a time origin + may spawn. + """ + + cdef Py_ssize_t n_sel = indices.shape[0] + cdef Py_ssize_t n_origins_max = origins.shape[0] + cdef long long n_active = state[0] + cdef long long last = state[1] + cdef bint do_unwrap = counter > 1 and is_vacuum == 0 + cdef Py_ssize_t a, o, row + cdef long long lag + cdef double p0, p1, p2 + cdef double d0, d1, d2 + cdef double f0, f1, f2 + cdef double r0, r1, r2 + cdef double sx, sy, sz + cdef double dx, dy, dz + + # gather the selected positions (exact float32 -> float64) and + # unwrap them with the running minimum image convention + for a in range(n_sel): + row = indices[a] + p0 = values[row, 0] + p1 = values[row, 1] + p2 = values[row, 2] + + if do_unwrap: + d0 = p0 - prev_pos[a, 0] + d1 = p1 - prev_pos[a, 1] + d2 = p2 - prev_pos[a, 2] + + f0 = d0 * inv_box[0, 0] + d1 * inv_box[0, 1] + d2 * inv_box[0, 2] + f1 = d0 * inv_box[1, 0] + d1 * inv_box[1, 1] + d2 * inv_box[1, 2] + f2 = d0 * inv_box[2, 0] + d1 * inv_box[2, 1] + d2 * inv_box[2, 2] + + r0 = rint(f0) + r1 = rint(f1) + r2 = rint(f2) + + # adding an all-zero shift change never changes the + # accumulated shift, so it can be skipped + if r0 != 0.0 or r1 != 0.0 or r2 != 0.0: + shift[a, 0] -= r0 * box[0, 0] + r1 * box[0, 1] + r2 * box[0, 2] + shift[a, 1] -= r0 * box[1, 0] + r1 * box[1, 1] + r2 * box[1, 2] + shift[a, 2] -= r0 * box[2, 0] + r1 * box[2, 1] + r2 * box[2, 2] + + pos[a, 0] = p0 + pos[a, 1] = p1 + pos[a, 2] = p2 + + prev_pos[a, 0] = p0 + prev_pos[a, 1] = p1 + prev_pos[a, 2] = p2 + + unwrapped[a, 0] = p0 + shift[a, 0] + unwrapped[a, 1] = p1 + shift[a, 1] + unwrapped[a, 2] = p2 + shift[a, 2] + + if counter < n_start: + return + + if counter % gap == 0: + if n_active != n_origins_max and counter <= stop_frame: + # starting stage - add new origin + if n_active == 0: + last = counter + + memcpy( + &origins[n_active, 0, 0], + &unwrapped[0, 0], + n_sel * 3 * sizeof(double), + ) + n_active += 1 + + elif n_active > 0 and last + window == counter: + # oldest origin reached the full window: + # accumulate its final lag term + sx = 0.0 + sy = 0.0 + sz = 0.0 + + for a in range(n_sel): + dx = unwrapped[a, 0] - origins[0, a, 0] + dy = unwrapped[a, 1] - origins[0, a, 1] + dz = unwrapped[a, 2] - origins[0, a, 2] + sx += dx * dx + sy += dy * dy + sz += dz * dz + + msd[window, 0] += sx + msd[window, 1] += sy + msd[window, 2] += sz + + if n_active > 1: + memmove( + &origins[0, 0, 0], + &origins[1, 0, 0], + (n_active - 1) * n_sel * 3 * sizeof(double), + ) + + if counter > stop_frame: + # stopping stage - drop without replacement + n_active -= 1 + else: + # running stage - replace by a new origin + memcpy( + &origins[n_active - 1, 0, 0], + &unwrapped[0, 0], + n_sel * 3 * sizeof(double), + ) + + last += gap + + state[0] = n_active + state[1] = last + + # accumulate the squared displacements of all active origins + for o in range( n_active): + lag = counter - last - gap * o + + sx = 0.0 + sy = 0.0 + sz = 0.0 + + for a in range(n_sel): + dx = unwrapped[a, 0] - origins[o, a, 0] + dy = unwrapped[a, 1] - origins[o, a, 1] + dz = unwrapped[a, 2] - origins[o, a, 2] + sx += dx * dx + sy += dy * dy + sz += dz * dz + + msd[lag, 0] += sx + msd[lag, 1] += sy + msd[lag, 2] += sz diff --git a/PQAnalysis/analysis/msd/_msd_kernel_py.py b/PQAnalysis/analysis/msd/_msd_kernel_py.py new file mode 100644 index 00000000..a6e7880f --- /dev/null +++ b/PQAnalysis/analysis/msd/_msd_kernel_py.py @@ -0,0 +1,154 @@ +""" +Pure Python/numpy fallback for the MSD accumulation kernel. + +This module mirrors the API of the Cython extension +:py:mod:`PQAnalysis.analysis.msd._msd_kernel` and is used when the +extension is not available. It implements the frame update with the +exact numpy operations of the original pure numpy MSD hot loop +(``fractional = d @ B^-1.T`` and ``shift += -np.rint(fractional) @ B.T`` +with round-half-even ``np.rint``), so its results are bit-identical to +that implementation. +""" + +import numpy as np + + +def msd_frame_update( + values, + indices, + box, + inv_box, + is_vacuum, + pos, + prev_pos, + shift, + unwrapped, + origins, + msd, + state, + counter, + gap, + window, + n_start, + stop_frame, +): + """ + Advances the running MSD state by one trajectory frame. + + The selected rows of ``values`` are gathered into ``pos`` (exact + float32 -> float64 conversion). For every frame after the first + one the per-frame displacement ``pos - prev_pos`` is folded back + into the minimum image convention and the resulting change is + accumulated into ``shift`` (skipped for vacuum cells). The + unwrapped coordinates ``pos + shift`` are stored in ``unwrapped`` + and ``prev_pos`` is updated to ``pos``. Frames with + ``counter < n_start`` only update the unwrapping state. All other + frames run the legacy Diffcalc time origin bookkeeping (spawn, + final-lag accumulation, replace or drain every ``gap`` frames) and + accumulate the per-axis squared displacements of all active time + origins into the lag bins of ``msd``. + + Parameters + ---------- + values : np.float32 array of shape (n_atoms, 3), C-contiguous + The raw frame values (positions) of all atoms of the frame. + indices : np.int64 array of shape (n_sel,) + The indices of the selected atoms. + box : np.float64 array of shape (3, 3), C-contiguous + The box matrix of the current frame. Ignored for vacuum + cells. + inv_box : np.float64 array of shape (3, 3), C-contiguous + The inverse box matrix of the current frame. Ignored for + vacuum cells. + is_vacuum : int + Whether the cell of the current frame is a vacuum cell (no + unwrapping is applied then). + pos : np.float64 array of shape (n_sel, 3), C-contiguous + Scratch buffer, filled with the selected positions of the + current frame. + prev_pos : np.float64 array of shape (n_sel, 3), C-contiguous + The selected positions of the previous frame; updated in + place to the current frame. Its input content is ignored for + ``counter == 1``. + shift : np.float64 array of shape (n_sel, 3), C-contiguous + The cumulative unwrapping shift vectors; updated in place. + unwrapped : np.float64 array of shape (n_sel, 3), C-contiguous + Scratch buffer, filled with the unwrapped coordinates + ``pos + shift``. + origins : np.float64 array of shape (n_origins_max, n_sel, 3), C-contiguous + The unwrapped coordinates of the active time origins, oldest + origin at index 0; updated in place. + msd : np.float64 array of shape (window + 1, 3), C-contiguous + The raw (unnormalized) per-axis MSD accumulator; updated in + place. + state : np.int64 array of shape (2,) + The origin bookkeeping state ``[n_active, last]``; updated in + place. + counter : int + The 1-based frame counter of the current frame. + gap : int + The gap between two time origins in frames. + window : int + The correlation window size in frames. + n_start : int + The first frame (1-based frame counter) at which processing + starts. Earlier frames only update the unwrapping state. + stop_frame : int + The last frame (1-based frame counter) at which a time origin + may spawn. + """ + + # gather the selected positions (exact float32 -> float64) + pos[:] = values[indices] + + if counter > 1 and not is_vacuum: + # unwrap: fold the per-frame displacements back into the + # minimum image convention and accumulate the change + fractional = (pos - prev_pos) @ inv_box.T + shift += -np.rint(fractional) @ box.T + + prev_pos[:] = pos + np.add(pos, shift, out=unwrapped) + + if counter < n_start: + return + + n_active = int(state[0]) + last = int(state[1]) + + if counter % gap == 0: + if n_active != origins.shape[0] and counter <= stop_frame: + # starting stage - add new origin + if n_active == 0: + last = counter + + origins[n_active] = unwrapped + n_active += 1 + + elif n_active > 0 and last + window == counter: + # oldest origin reached the full window: + # accumulate its final lag term + disp = unwrapped - origins[0] + msd[window] += np.einsum('ax,ax->x', disp, disp) + + origins[:n_active - 1] = origins[1:n_active] + + if counter > stop_frame: + # stopping stage - drop without replacement + n_active -= 1 + else: + # running stage - replace by a new origin + origins[n_active - 1] = unwrapped + + last += gap + + state[0] = n_active + state[1] = last + + if n_active > 0: + # accumulate the squared displacements of all active origins + lags = counter - last - gap * np.arange(n_active) + + disp = unwrapped - origins[:n_active] + + msd[lags] += np.einsum('oax,oax->ox', disp, disp) diff --git a/PQAnalysis/analysis/msd/api.py b/PQAnalysis/analysis/msd/api.py new file mode 100644 index 00000000..37ae2d01 --- /dev/null +++ b/PQAnalysis/analysis/msd/api.py @@ -0,0 +1,66 @@ +""" +This module provides API functions for the mean square displacement (MSD) analysis. +""" + +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import MDEngineFormat +from PQAnalysis.type_checking import runtime_type_checking + +from .msd import MSD +from .msd_input_file_reader import MSDInputFileReader +from .msd_output_file_writer import MSDDataWriter, MSDLogWriter + + + +@runtime_type_checking +def msd(input_file: str, md_format: MDEngineFormat | str = MDEngineFormat.PQ): + """ + Calculates the mean square displacement (MSD) using a given input file. + + This is just a wrapper function combining the underlying classes and functions. + + For more information on the input file keys please + visit :py:mod:`~PQAnalysis.analysis.msd.msd_input_file_reader`. + For more information on the exact calculation of + the MSD please visit :py:class:`~PQAnalysis.analysis.msd.msd.MSD`. + + Parameters + ---------- + input_file : str + The input file. For more information on the input file + keys please visit :py:mod:`~PQAnalysis.analysis.msd.msd_input_file_reader`. + md_format : MDEngineFormat | str, optional + the format of the input trajectory. Default is "PQ". + For more information on the supported formats please visit + :py:class:`~PQAnalysis.traj.formats.MDEngineFormat`. + """ + + md_format = MDEngineFormat(md_format) + + input_reader = MSDInputFileReader(input_file) + input_reader.read() + + traj_reader = TrajectoryReader( + input_reader.traj_files, + md_format=md_format + ) + + _msd = MSD( + traj=traj_reader, + target_species=input_reader.target_selection, + use_full_atom_info=input_reader.use_full_atom_info, + window=input_reader.window, + gap=input_reader.gap, + n_start=input_reader.n_start, + time_step=input_reader.time_step, + fit_window=input_reader.fit_window, + ) + + data_writer = MSDDataWriter(input_reader.out_file) + log_writer = MSDLogWriter(input_reader.log_file) + log_writer.write_before_run(_msd) + + msd_data = _msd.run() + + data_writer.write(msd_data) + log_writer.write_after_run(_msd) diff --git a/PQAnalysis/analysis/msd/exceptions.py b/PQAnalysis/analysis/msd/exceptions.py new file mode 100644 index 00000000..2547d85a --- /dev/null +++ b/PQAnalysis/analysis/msd/exceptions.py @@ -0,0 +1,42 @@ +""" +A module containing different exceptions and warnings for +the :py:class:`~PQAnalysis.analysis.msd.msd.MSD` class +""" + +from ...exceptions import PQException, PQWarning + + + +class MSDError(PQException): + + """ + Exception raised if something goes wrong during the MSD setup or calculation. + """ + + def __init__(self, message: str) -> None: + """ + Parameters + ---------- + message : str + The error message. + """ + self.message = message + super().__init__(self.message) + + + +class MSDWarning(PQWarning): + + """ + Warning raised if something goes wrong during the MSD setup or calculation. + """ + + def __init__(self, message: str) -> None: + """ + Parameters + ---------- + message : str + The error message. + """ + self.message = message + super().__init__(self.message) diff --git a/PQAnalysis/analysis/msd/msd.py b/PQAnalysis/analysis/msd/msd.py new file mode 100644 index 00000000..d9861aa6 --- /dev/null +++ b/PQAnalysis/analysis/msd/msd.py @@ -0,0 +1,884 @@ +""" +A module containing the MSD class. The MSD class is used to +calculate the mean square displacement (MSD) of a selection +of atoms using multiple time origins on a sliding window. +The MSD is a measure of the average squared distance +particles travel within a given correlation time and gives +access to the self-diffusion coefficient via the Einstein +relation. +""" + +import dataclasses +import itertools +import logging + +# 3rd party imports +import numpy as np + +from beartype.typing import Dict, Tuple +from tqdm.auto import tqdm + +# local absolute imports +from PQAnalysis import config +from PQAnalysis.core import Cell +from PQAnalysis.types import ( + Np1DNumberArray, + Np2DNumberArray, + PositiveInt, + PositiveReal, +) +from PQAnalysis.traj import Trajectory, TrajectoryFormat +from PQAnalysis.topology import Selection, SelectionCompatible +from PQAnalysis.utils import timeit_in_class +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.io import TrajectoryReader, RawTrajectoryReader +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +# local relative imports +from .exceptions import MSDError + +try: + from ._msd_kernel import msd_frame_update # pylint: disable=import-error +except ModuleNotFoundError: + from ._msd_kernel_py import msd_frame_update + +#: float: Conversion factor from Angstrom^2/ps to m^2/s. +ANGSTROM2_PER_PS_TO_M2_PER_S = 1.0e-8 + + + +@dataclasses.dataclass(frozen=True) +class MSDDiffusionFit: + + """ + A container for the result of a linear diffusion fit of an + MSD component. + + The slope related quantities are given in Angstrom^2/ps, + the diffusion coefficient and its standard error are given + in m^2/s. + """ + + label: str + slope: float + slope_stderr: float + intercept: float + r_squared: float + diffusion_coefficient: float + diffusion_coefficient_stderr: float + + + +class MSD: + + """ + A class for calculating the mean square displacement (MSD) + of a target selection using multiple simultaneously active + time origins. + + A new time origin is spawned every ``gap`` frames until + ``window // gap`` origins are active. Every frame, each + active origin accumulates the squared displacement of every + selected atom relative to the origin position into the lag + bin given by the frame distance to the origin. Displacements + are unwrapped with a running minimum image convention applied + to the per-frame displacement vectors, so that trajectories + wrapped into the simulation box are handled correctly. When + the oldest origin has covered the full window, it accumulates + its final lag term and is replaced by a new origin (or + dropped without replacement once no new origins may spawn + anymore). + + This is a port of the ``Diffcalc`` tool of thh_tools and + reproduces its results exactly, including its normalization + convention: every lag bin is divided by the number of + selected atoms times ``total_origins``, where + ``total_origins = stop_frame // gap`` and + ``stop_frame = (n_frames - window) // gap * gap``. Note that + this normalization intentionally follows the legacy code + also for ``n_start > 0``. The legacy boundary case of a + trajectory of exactly ``window`` frames with ``gap == 1`` is + also kept: a single time origin spawns at the first frame + and the final lag bin (``lag == window``), which can never + be sampled, is written as exactly 0.0 (a warning is + emitted). Any shorter trajectory raises an + :py:class:`~PQAnalysis.analysis.msd.exceptions.MSDError`. + + If a time step is given, the trailing ``fit_window`` points + of the MSD components are fitted linearly to extract + self-diffusion coefficients via the Einstein relation + (slope / (2 * dimensionality), converted to m^2/s). + + The MSD class can be initialized with either a trajectory + object or via a TrajectoryReader object. The + TrajectoryReader allows for lazy loading of the trajectory, + which is useful for large trajectories that do not fit into + memory. For xyz trajectory files the frames are streamed via + the raw-frame fast path + (:py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader`) + and accumulated with a compiled kernel, which is considerably + faster and produces identical results. + """ + + _use_full_atom_default = False + _window_default = 1000 + _gap_default = 10 + _n_start_default = 0 + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + @runtime_type_checking + def __init__( + self, + traj: Trajectory | TrajectoryReader, + target_species: SelectionCompatible, + use_full_atom_info: bool | None = False, + window: PositiveInt | None = None, + gap: PositiveInt | None = None, + n_start: int | None = None, + time_step: PositiveReal | None = None, + fit_window: PositiveInt | None = None, + ): + """ + Parameters + ---------- + traj : Trajectory | TrajectoryReader + The trajectory to analyze. If a TrajectoryReader is + provided, the trajectory is read frame by frame via + a frame_generator. + target_species : SelectionCompatible + The target species of the MSD analysis. + use_full_atom_info : bool | None, optional + Whether to use the full atom information of the + trajectory or not, by default None (False). + window : PositiveInt | None, optional + The correlation window size in frames, + by default None (1000). + gap : PositiveInt | None, optional + The gap between two time origins in frames, + by default None (10). + n_start : int | None, optional + The first frame (1-based frame counter) at which + processing starts, by default None (0). Frames + before n_start are read (to keep the unwrapping + continuous) but do not contribute to the MSD. + time_step : PositiveReal | None, optional + The time step between two frames in ps. If given, + diffusion coefficients are calculated from a linear + fit of the MSD tail, by default None. + fit_window : PositiveInt | None, optional + The number of trailing MSD points used for the + diffusion fit, by default None (last 20% of the + window). + + Raises + ------ + MSDError + If n_start is negative. + MSDError + If the window is not a multiple of the gap. + MSDError + If time_step is not positive. + MSDError + If fit_window is smaller than 2. + MSDError + If fit_window is larger than window + 1. + MSDError + If the trajectory is empty. + MSDError + If the target selection is empty. + MSDError + If the trajectory is too short to establish at + least one full window (n_frames < window + gap and + not the legacy single-origin case of exactly + window frames with gap == 1). + MSDError + If n_start is larger than stop_frame, so that no + time origin could spawn. + + See Also + -------- + :py:class:`~PQAnalysis.traj.trajectory.Trajectory` + :py:class:`~PQAnalysis.topology.selection.Selection` + :py:class:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader` + """ + + ############## + # dummy init # + ############## + + self.lags = np.array([]) + self.msd_x = np.array([]) + self.msd_y = np.array([]) + self.msd_z = np.array([]) + self.msd_tot = np.array([]) + self.fit_results = None + self._msd_accumulator = None + + ##################################################### + # Initialize parameters with default values if None # + ##################################################### + + if use_full_atom_info is None: + self.use_full_atom_info = self._use_full_atom_default + else: + self.use_full_atom_info = use_full_atom_info + + self.window = window if window is not None else self._window_default + self.gap = gap if gap is not None else self._gap_default + self.n_start = n_start if n_start is not None else self._n_start_default + self.time_step = time_step + + if fit_window is None: + self.fit_window = max(2, self.window // 5) + else: + self.fit_window = fit_window + + self._check_parameters() + + ############################################ + # Initialize Trajectory iterator/generator # + ############################################ + + self._raw_reader = None + self.frame_generator = None + + if ( + isinstance(traj, TrajectoryReader) and + traj.traj_format == TrajectoryFormat.XYZ + ): + # fast path: lazy loading of the raw frame data from + # file(s) without per-frame AtomicSystem construction + self._raw_reader = RawTrajectoryReader( + traj.filenames, + traj_format=traj.traj_format, + md_format=traj.md_format, + ) + self.n_frames = self._raw_reader.count_frames() + self.first_frame = self._raw_reader.read_first_frame() + elif isinstance(traj, TrajectoryReader): + # lazy loading of trajectory from file(s) + self.n_frames = sum(traj.calculate_number_of_frames_per_file()) + self.frame_generator = traj.frame_generator() + self.first_frame = next(self.frame_generator) + elif len(traj) > 0: + # use trajectory object as iterator + self.n_frames = len(traj) + self.frame_generator = iter(traj) + self.first_frame = next(self.frame_generator) + else: + self.logger.error( + "Trajectory cannot be of length 0.", + exception=MSDError + ) + + if traj.topology is not None: + self.topology = traj.topology + else: + self.topology = self.first_frame.topology + + ################################ + # Initialize Selection objects # + ################################ + + self.target_species = target_species + self.target_selection = Selection(target_species) + + self.target_indices = self.target_selection.select( + self.topology, + self.use_full_atom_info + ) + + if len(self.target_indices) == 0: + self.logger.error( + "The target selection does not select any atoms.", + exception=MSDError + ) + + ########################################## + # Setup time origin bookkeeping (legacy) # + ########################################## + + self._setup_origin_bookkeeping() + + def _check_parameters(self): + """ + Checks the consistency of the setup parameters. + + This method is called by the __init__ method of the MSD + class after all parameters have been initialized. + + Raises + ------ + MSDError + If n_start is negative. + MSDError + If the window is not a multiple of the gap. + MSDError + If time_step is not positive. + MSDError + If fit_window is smaller than 2. + MSDError + If fit_window is larger than window + 1. + """ + + if self.n_start < 0: + self.logger.error( + "n_start must be a non-negative integer.", + exception=MSDError + ) + + if self.window % self.gap != 0: + self.logger.error( + ( + f"The window size {self.window} has to be an " + f"integer multiple of the gap {self.gap}." + ), + exception=MSDError + ) + + if self.time_step is not None and self.time_step <= 0.0: + self.logger.error( + "The time_step must be a positive real number.", + exception=MSDError + ) + + if self.fit_window < 2: + self.logger.error( + ( + f"The fit_window {self.fit_window} must be at " + "least 2 to perform a linear diffusion fit." + ), + exception=MSDError + ) + + if self.fit_window > self.window + 1: + self.logger.error( + ( + f"The fit_window {self.fit_window} cannot be larger " + f"than window + 1 = {self.window + 1}." + ), + exception=MSDError + ) + + def _setup_origin_bookkeeping(self): + """ + Sets up the time origin bookkeeping of the MSD analysis. + + This method is called by the __init__ method of the MSD + class. It follows the legacy Diffcalc conventions: origins + may only spawn until stop_frame, so that every origin can + cover the full window, and the total number of origins used + for the normalization is stop_frame // gap. + + One boundary case is kept from the legacy Diffcalc code: + for gap == 1 a trajectory of exactly window frames spawns + a single time origin at the first frame (stop_frame is + clamped from 0 to 1). In this case the final lag bin + (lag == window) can never be sampled and is written as + exactly 0.0, matching the legacy tool. A warning is + emitted, as this zero bin would bias a diffusion fit that + includes it. + + Raises + ------ + MSDError + If the trajectory is too short to establish at + least one full window (n_frames < window + gap and + not the legacy single-origin case of exactly + window frames with gap == 1). + MSDError + If n_start is larger than stop_frame, so that no + time origin could spawn. + """ + + self.n_origins_max = self.window // self.gap + + self.stop_frame = ( + (self.n_frames - self.window) // self.gap * self.gap + ) + + if self.stop_frame == 0 and self.gap == 1: + # legacy Diffcalc branch: with gap == 1 a trajectory of + # exactly window frames spawns a single time origin at + # the first frame instead of raising the + # too-short-trajectory error below + self.stop_frame = 1 + + self.logger.warning( + ( + f"The trajectory contains exactly window = " + f"{self.window} frames with a gap of 1. Following " + "the legacy Diffcalc convention a single time " + "origin is spawned at the first frame. The final " + f"lag bin (lag = {self.window}) can never be " + "sampled and is written as exactly 0.0; a " + "diffusion fit including this bin would be biased." + ) + ) + + self.total_origins = self.stop_frame // self.gap + + if self.total_origins < 1: + self.logger.error( + ( + f"The trajectory with {self.n_frames} frames is too " + f"short to establish a window of {self.window} frames " + f"with a gap of {self.gap} frames. At least " + f"window + gap = {self.window + self.gap} frames " + "are required (or exactly window frames for " + "gap == 1)." + ), + exception=MSDError + ) + + if self.n_start > self.stop_frame: + self.logger.error( + ( + f"The starting frame {self.n_start} is too large: " + "time origins only spawn at multiples of the gap " + f"{self.gap} up to stop_frame = (n_frames - window) " + f"// gap * gap = {self.stop_frame} (n_frames = " + f"{self.n_frames}, window = {self.window}), so no " + "time origin could spawn." + ), + exception=MSDError + ) + + @timeit_in_class + def run( + self + ) -> Tuple[Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray]: + """ + Runs the MSD analysis. + + This method runs the MSD analysis and returns the lag + indices and the MSD components. If a time step was + given, the diffusion coefficients are calculated from a + linear fit of the MSD tail and stored in the + fit_results attribute. + + This method will display a progress bar by default. + This can be disabled by setting with_progress_bar to + False. + + Returns + ------- + lags : Np1DNumberArray + The lag indices (in frames) of the MSD analysis, + ranging from 0 to window. + msd_x : Np1DNumberArray + The x-component of the MSD in Angstrom^2. + msd_y : Np1DNumberArray + The y-component of the MSD in Angstrom^2. + msd_z : Np1DNumberArray + The z-component of the MSD in Angstrom^2. + msd_tot : Np1DNumberArray + The total MSD (x + y + z) in Angstrom^2. + """ + + if self._raw_reader is not None: + self._calculate_msd_raw() + else: + self._calculate_msd() + + return self._finalize_run() + + def _calculate_msd(self): + """ + Calculates the raw (unnormalized) MSD accumulators. + + This method is called by the run method of the MSD + class. It streams over the frames of the trajectory and + accumulates the per-axis squared displacements of all + selected atoms for all active time origins into the + corresponding lag bins. The per-frame displacements are + unwrapped with a running minimum image convention so + that box-wrapped trajectories are handled correctly. + + Raises + ------ + MSDError + If a frame does not provide positions for all atoms + of the topology. + """ + + gap = self.gap + + msd = np.zeros((self.window + 1, 3)) + + # unwrapped origin coordinates, oldest origin at index 0 + origins = np.zeros( + (self.n_origins_max, len(self.target_indices), 3) + ) + displacements = np.zeros_like(origins) + n_active = 0 + last = 0 + + # cumulative unwrapping shift of the selected atoms + shift = np.zeros((len(self.target_indices), 3)) + prev_pos = None + counter = 0 + + for frame in tqdm( + itertools.chain([self.first_frame], self.frame_generator), + total=self.n_frames, + disable=not config.with_progress_bar): + + counter += 1 + + pos = np.asarray(frame.pos, dtype=np.float64) + + if pos.ndim != 2 or pos.shape[0] != self.n_atoms: + self.logger.error( + ( + f"Frame {counter} of the trajectory does not " + f"provide positions for all {self.n_atoms} " + "atoms of the topology. Please provide a " + "position trajectory (e.g. .xyz files) with " + "a consistent number of atoms." + ), + exception=MSDError + ) + + pos = pos[self.target_indices] + + if prev_pos is not None: + shift += self._unwrap_shift(pos - prev_pos, frame.cell) + + prev_pos = pos + + unwrapped = pos + shift + + if counter < self.n_start: + continue + + if counter % gap == 0: + + if ( + n_active != self.n_origins_max and + counter <= self.stop_frame + ): + # starting stage - add new origin + if n_active == 0: + last = counter + + origins[n_active] = unwrapped + n_active += 1 + + elif n_active > 0 and last + self.window == counter: + # oldest origin reached the full window: + # accumulate its final lag term + disp = unwrapped - origins[0] + msd[self.window] += np.einsum('ax,ax->x', disp, disp) + + origins[:n_active - 1] = origins[1:n_active] + + if counter > self.stop_frame: + # stopping stage - drop without replacement + n_active -= 1 + else: + # running stage - replace by a new origin + origins[n_active - 1] = unwrapped + + last += gap + + if n_active > 0: + lags = counter - last - gap * np.arange(n_active) + + disp = np.subtract( + unwrapped, + origins[:n_active], + out=displacements[:n_active] + ) + + msd[lags] += np.einsum('oax,oax->ox', disp, disp) + + self._msd_accumulator = msd + + def _calculate_msd_raw(self): + """ + Calculates the raw (unnormalized) MSD accumulators using the + raw-frame fast path. + + This method is the fast-path counterpart of + :py:meth:`_calculate_msd` used when the trajectory is read + from xyz file(s): it streams the raw per-frame coordinates via + :py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` + (no per-frame AtomicSystem construction) and advances the + unwrapping and time origin bookkeeping state with the MSD + frame kernel. The box matrix, its inverse and the vacuum flag + are loop invariants that are only recomputed when the Cell + object yielded by the reader changes identity (the raw reader + caches Cell objects, so constant-box trajectories compute them + exactly once). + + Raises + ------ + MSDError + If a frame does not provide positions for all atoms + of the topology. + """ + + gap = self.gap + n_atoms = self.n_atoms + n_sel = len(self.target_indices) + + msd = np.zeros((self.window + 1, 3)) + + # unwrapped origin coordinates, oldest origin at index 0 + origins = np.zeros((self.n_origins_max, n_sel, 3)) + + # origin bookkeeping state: [n_active, last] + state = np.zeros(2, dtype=np.int64) + + indices = np.ascontiguousarray(self.target_indices, dtype=np.int64) + + # per-frame scratch buffers and cumulative unwrapping state + pos = np.zeros((n_sel, 3)) + prev_pos = np.zeros((n_sel, 3)) + shift = np.zeros((n_sel, 3)) + unwrapped = np.zeros((n_sel, 3)) + + # loop-invariant cell data, recomputed only when the yielded + # Cell object changes identity + last_cell = None + box = np.eye(3) + inv_box = np.eye(3) + is_vacuum = 1 + + counter = 0 + + for values, cell in tqdm( + self._raw_reader.raw_frame_generator(), + total=self.n_frames, + disable=not config.with_progress_bar): + + counter += 1 + + if values.shape[0] != n_atoms: + self.logger.error( + ( + f"Frame {counter} of the trajectory does not " + f"provide positions for all {n_atoms} " + "atoms of the topology. Please provide a " + "position trajectory (e.g. .xyz files) with " + "a consistent number of atoms." + ), + exception=MSDError + ) + + if cell is not last_cell: + last_cell = cell + is_vacuum = 1 if cell.is_vacuum else 0 + + if not is_vacuum: + box = np.ascontiguousarray( + cell.box_matrix, dtype=np.float64 + ) + inv_box = np.ascontiguousarray( + cell.inverse_box_matrix, dtype=np.float64 + ) + + msd_frame_update( + values, + indices, + box, + inv_box, + is_vacuum, + pos, + prev_pos, + shift, + unwrapped, + origins, + msd, + state, + counter, + gap, + self.window, + self.n_start, + self.stop_frame, + ) + + self._msd_accumulator = msd + + def _finalize_run( + self + ) -> Tuple[Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray]: + """ + Finalizes the MSD analysis after running. + + This method is called by the run method of the MSD + class. It normalizes the raw MSD accumulators by the + number of selected atoms and the total number of time + origins (legacy Diffcalc convention) and performs the + diffusion fit if a time step was given. + + Returns + ------- + lags : Np1DNumberArray + The lag indices (in frames) of the MSD analysis. + msd_x : Np1DNumberArray + The x-component of the MSD in Angstrom^2. + msd_y : Np1DNumberArray + The y-component of the MSD in Angstrom^2. + msd_z : Np1DNumberArray + The z-component of the MSD in Angstrom^2. + msd_tot : Np1DNumberArray + The total MSD (x + y + z) in Angstrom^2. + """ + + norm = float(len(self.target_indices) * self.total_origins) + + self.lags = np.arange(self.window + 1) + self.msd_x = self._msd_accumulator[:, 0] / norm + self.msd_y = self._msd_accumulator[:, 1] / norm + self.msd_z = self._msd_accumulator[:, 2] / norm + self.msd_tot = self.msd_x + self.msd_y + self.msd_z + + if self.time_step is not None: + self.fit_results = self._fit_diffusion( + self.lags, + self.msd_x, + self.msd_y, + self.msd_z, + self.msd_tot, + self.time_step, + self.fit_window + ) + + return ( + self.lags, + self.msd_x, + self.msd_y, + self.msd_z, + self.msd_tot + ) + + @property + def n_atoms(self) -> int: + """int: The number of atoms of the MSD analysis.""" + return self.topology.n_atoms + + @staticmethod + def _unwrap_shift( + displacement: Np2DNumberArray, + cell: Cell + ) -> Np2DNumberArray: + """ + Calculates the change of the unwrapping shift vectors + for the given per-frame displacements. + + The displacement vectors are folded back into the + minimum image convention with respect to the given cell + by subtracting the box matrix multiplied with the + rounded (round-half-even) fractional displacement. For + orthorhombic cells this reduces exactly to the legacy + Diffcalc expression -box * rint(displacement / box). + + Parameters + ---------- + displacement : Np2DNumberArray + The per-frame displacement vectors of shape (n, 3). + cell : Cell + The unit cell of the current frame. + + Returns + ------- + Np2DNumberArray + The change of the unwrapping shift vectors of + shape (n, 3). + """ + + if cell.is_vacuum: + return np.zeros_like(displacement) + + fractional = displacement @ cell.inverse_box_matrix.T + + return -np.rint(fractional) @ cell.box_matrix.T + + @classmethod + def _fit_diffusion( + cls, + lags: Np1DNumberArray, + msd_x: Np1DNumberArray, + msd_y: Np1DNumberArray, + msd_z: Np1DNumberArray, + msd_tot: Np1DNumberArray, + time_step: PositiveReal, + fit_window: PositiveInt + ) -> Dict[str, MSDDiffusionFit]: + """ + Fits the trailing part of the MSD components linearly + and calculates diffusion coefficients. + + The last fit_window points of every MSD component are + fitted with scipy.stats.linregress. The diffusion + coefficient is calculated from the slope via the + Einstein relation D = slope / (2 * dim) with dim = 1 + for the per-axis components and dim = 3 for the total + MSD. The slopes (Angstrom^2/ps) are converted to m^2/s. + + Parameters + ---------- + lags : Np1DNumberArray + The lag indices (in frames) of the MSD analysis. + msd_x : Np1DNumberArray + The x-component of the MSD in Angstrom^2. + msd_y : Np1DNumberArray + The y-component of the MSD in Angstrom^2. + msd_z : Np1DNumberArray + The z-component of the MSD in Angstrom^2. + msd_tot : Np1DNumberArray + The total MSD in Angstrom^2. + time_step : PositiveReal + The time step between two frames in ps. + fit_window : PositiveInt + The number of trailing MSD points used for the fit. + + Returns + ------- + Dict[str, MSDDiffusionFit] + The fit results for the keys "x", "y", "z" and + "total". + """ + + # Lazy import: scipy.stats is expensive to import and only + # needed when a diffusion fit is requested. + from scipy.stats import linregress # pylint: disable=import-outside-toplevel + + times = lags * time_step + + results = {} + + for label, series, dimension in ( + ("x", msd_x, 1), + ("y", msd_y, 1), + ("z", msd_z, 1), + ("total", msd_tot, 3), + ): + fit = linregress(times[-fit_window:], series[-fit_window:]) + + factor = ANGSTROM2_PER_PS_TO_M2_PER_S / (2.0 * dimension) + + results[label] = MSDDiffusionFit( + label=label, + slope=float(fit.slope), + slope_stderr=float(fit.stderr), + intercept=float(fit.intercept), + r_squared=float(fit.rvalue)**2, + diffusion_coefficient=float(fit.slope) * factor, + diffusion_coefficient_stderr=float(fit.stderr) * factor, + ) + + return results diff --git a/PQAnalysis/analysis/msd/msd_input_file_reader.py b/PQAnalysis/analysis/msd/msd_input_file_reader.py new file mode 100644 index 00000000..4f51665e --- /dev/null +++ b/PQAnalysis/analysis/msd/msd_input_file_reader.py @@ -0,0 +1,219 @@ +""" +A module containing a class to read input files to setup the +:py:class:`~PQAnalysis.analysis.msd.msd.MSD` class. +""" +import logging + +# local imports +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.io import PQAnalysisInputFileReader as Reader +from PQAnalysis.io.input_file_reader.exceptions import InputFileError +from PQAnalysis.io.input_file_reader.pq_analysis._parse import ( + _parse_int, + _parse_positive_int, + _parse_positive_real, +) +from PQAnalysis.types import PositiveInt, PositiveReal +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + + + +class MSDInputFileReader(Reader): + + """ + A class to read input files to setup the + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` class. + """ + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + window_key = "window" + gap_key = "gap" + first_frame_key = "first_frame" + start_key = "start" + time_step_key = "time_step" + fit_window_key = "fit_window" + + #: List[str]: The required keys of the input file + required_keys = [ + Reader.traj_files_key, + Reader.target_selection_key, + Reader.out_file_key, + ] + + #: List[str]: The optional keys of the input file + optional_keys = required_keys + [ + window_key, + gap_key, + first_frame_key, + start_key, + time_step_key, + fit_window_key, + Reader.log_file_key, + Reader.use_full_atom_info_key, + ] + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename of the input file + """ + self.filename = filename + super().__init__(filename) + + def read(self): + """ + Reads the input file and parses it. + It also sets the raw_input_file and the dictionary. + It checks if all required keys are set and if all keys are known. + + Raises + ------ + InputFileError + if not all required keys are set in the input file + InputFileWarning + if unknown keys are set in the input file + InputFileError + if both the first_frame and the start key are set + InputFileError + if the first_frame or start key is negative + InputFileError + if the time_step key is not positive + """ + super().read() + super().check_required_keys(self.required_keys) + super().check_known_keys(self.required_keys + self.optional_keys) + super().not_defined_optional_keys(self.optional_keys) + + first_frame = _parse_int(self.dictionary, self.first_frame_key) + start = _parse_int(self.dictionary, self.start_key) + + if first_frame is not None and start is not None: + self.logger.error( + ( + f"The keys '{self.first_frame_key}' and " + f"'{self.start_key}' are aliases and cannot be " + "used at the same time." + ), + exception=InputFileError, + ) + + if self.n_start is not None and self.n_start < 0: + self.logger.error( + ( + f"The '{self.first_frame_key}'/'{self.start_key}' " + "value has to be a non-negative integer - " + f"It actually is {self.n_start}!" + ), + exception=InputFileError, + ) + + if self.time_step is not None and self.time_step <= 0.0: + self.logger.error( + ( + f"The '{self.time_step_key}' value has to be a " + "positive real number - " + f"It actually is {self.time_step}!" + ), + exception=InputFileError, + ) + + @property + def window(self) -> PositiveInt | None: + """ + PositiveInt | None: The correlation window size in frames. + """ + return _parse_positive_int(self.dictionary, self.window_key) + + @property + def gap(self) -> PositiveInt | None: + """ + PositiveInt | None: The gap between two time origins in frames. + """ + return _parse_positive_int(self.dictionary, self.gap_key) + + @property + def n_start(self) -> int | None: + """ + int | None: The first frame at which processing starts. + """ + first_frame = _parse_int(self.dictionary, self.first_frame_key) + + if first_frame is not None: + return first_frame + + return _parse_int(self.dictionary, self.start_key) + + @property + def time_step(self) -> PositiveReal | None: + """ + PositiveReal | None: The time step between two frames in ps. + """ + return _parse_positive_real(self.dictionary, self.time_step_key) + + @property + def fit_window(self) -> PositiveInt | None: + """ + PositiveInt | None: The number of trailing MSD points to fit. + """ + return _parse_positive_int(self.dictionary, self.fit_window_key) + + + +input_keys_documentation = f""" + +For the MSD analysis input file several keys are available of which some are required and some are optional. For more details on the grammar and syntax of the input file see :ref:`inputFile`. + +.. list-table:: Required keys + :header-rows: 1 + + * - Key + - Value + * - {Reader.traj_files_key} + - The trajectory files to read. This can be a single file or a list of files. + * - {Reader.target_selection_key} + - The selection string to select the atoms for which the MSD is calculated. For more details see :py:class:`~PQAnalysis.topology.selection.Selection`. + * - {Reader.out_file_key} + - The output file to write the MSD data to. It must not exist yet. + +.. list-table:: Optional keys + :header-rows: 1 + + * - Key + - Value + * - {MSDInputFileReader.window_key} + - The correlation window size in frames. Default is 1000. + It has to be an integer multiple of the gap. + * - {MSDInputFileReader.gap_key} + - The gap between two time origins in frames. Default is 10. + * - {MSDInputFileReader.first_frame_key} + - The first frame (1-based frame counter) at which processing + starts. Default is 0. The key {MSDInputFileReader.start_key} + is an alias for this key (legacy Diffcalc naming). + * - {MSDInputFileReader.time_step_key} + - The time step between two frames in ps. If given, diffusion + coefficients are calculated from a linear fit of the MSD tail + and written to the log output. It has to be positive. + * - {MSDInputFileReader.fit_window_key} + - The number of trailing MSD points used for the diffusion fit. + Default is the last 20% of the window. It has to be at least + 2 and at most window + 1. + * - {Reader.log_file_key} + - The log file to write the log information to. + * - {Reader.use_full_atom_info_key} + - Whether to use full atom information for the selections. + +Note +---- +The MSD output file follows the legacy Diffcalc format: one row per +lag index with the columns lag index, MSD in x, MSD in y and MSD in z +(all in Angstrom^2). + +""" + +MSDInputFileReader.__doc__ += input_keys_documentation diff --git a/PQAnalysis/analysis/msd/msd_output_file_writer.py b/PQAnalysis/analysis/msd/msd_output_file_writer.py new file mode 100644 index 00000000..7902d087 --- /dev/null +++ b/PQAnalysis/analysis/msd/msd_output_file_writer.py @@ -0,0 +1,205 @@ +""" +A module containing the classes for writing related to an +:py:class:`~PQAnalysis.analysis.msd.msd.MSD` analysis to a file. +""" + +# 3rd party imports +from beartype.typing import Tuple + +# local imports +from PQAnalysis.types import Np1DNumberArray +from PQAnalysis.io import BaseWriter +from PQAnalysis.utils import __header__ +from PQAnalysis.type_checking import runtime_type_checking + +from .msd import MSD + + + +class MSDDataWriter(BaseWriter): + + """ + Class for writing the data of an + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` + analysis to a file. + + The output file is written in the legacy Diffcalc format: + one row per lag index with the columns lag index, MSD in x, + MSD in y and MSD in z (all in Angstrom^2). + """ + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename to write to + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write( + self, + data: Tuple[Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray, + Np1DNumberArray] + ): + """ + Writes the data to the file. + + Parameters + ---------- + data : Tuple[Np1DNumberArray, Np1DNumberArray, + Np1DNumberArray, Np1DNumberArray, Np1DNumberArray] + the data output from the MSD.run() method + """ + super().open() + + lags, msd_x, msd_y, msd_z, _ = data + + for i, lag in enumerate(lags): + print( + ( + f"{int(lag):8d} {msd_x[i]:12.8f} " + f"{msd_y[i]:12.8f} {msd_z[i]:12.8f}" + ), + file=self.file + ) + + super().close() + + + +class MSDLogWriter(BaseWriter): + + """ + Class for writing the log (setup parameters) of an + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` analysis + to a file. + """ + + @runtime_type_checking + def __init__(self, filename: str | None) -> None: + """ + Parameters + ---------- + filename : str | None + the filename to write to if None, the output is printed to stdout + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write_before_run(self, msd: MSD): + """ + Writes the log before the + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` + run() method is called. + + This includes the general header of PQAnalysis + and the most important setup parameters of the + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` analysis. + + Parameters + ---------- + msd : MSD + the MSD analysis object + """ + super().open() + + if self.filename is not None: + print(__header__, file=self.file) + print(file=self.file) + + print("MSD calculation:", file=self.file) + print(file=self.file) + + # fmt: off + print(f" Window size (frames): {msd.window}", file=self.file) + print(f" Origin gap (frames): {msd.gap}", file=self.file) + print(f" Start frame: {msd.n_start}", file=self.file) + print(f" Stop frame: {msd.stop_frame}", file=self.file) + print(f" Number of origins: {msd.total_origins}", file=self.file) + print(file=self.file) + # fmt: on + + print(f" Number of frames: {msd.n_frames}", file=self.file) + print(f" Number of atoms: {msd.n_atoms}", file=self.file) + print(file=self.file) + + print( + " Target selection:", + msd.target_selection, + file=self.file + ) + print( + " total number of atoms in target selection:", + len(msd.target_indices), + file=self.file + ) + print(file=self.file) + + if msd.time_step is not None: + print( + f" Time step: {msd.time_step} ps", + file=self.file + ) + print( + f" Fit window: last {msd.fit_window} points", + file=self.file + ) + print(file=self.file) + + print(file=self.file) + print(file=self.file) + print(file=self.file) + print(file=self.file) + + super().close() + + @runtime_type_checking + def write_after_run(self, msd: MSD): + """ + Writes the log after the + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` + run() method is called. + + This includes the elapsed time of the + :py:class:`~PQAnalysis.analysis.msd.msd.MSD` + run() method and, if a time step was given, the + diffusion coefficients obtained from the linear fit + of the MSD tail. + + Parameters + ---------- + msd : MSD + the MSD analysis object + """ + super().open() + + if msd.fit_results is not None: + print(" Diffusion coefficients (Einstein relation):", + file=self.file) + print(file=self.file) + + for label in ("x", "y", "z", "total"): + fit = msd.fit_results[label] + print( + ( + f" D_{label:<5s} = " + f"{fit.diffusion_coefficient:16.8e} +/- " + f"{fit.diffusion_coefficient_stderr:16.8e} m^2/s " + f"(R^2 = {fit.r_squared:.6f})" + ), + file=self.file + ) + + print(file=self.file) + + print(f" Elapsed time: {msd.elapsed_time} s", file=self.file) + + super().close() diff --git a/PQAnalysis/analysis/rdf/_rdf_kernel.pyx b/PQAnalysis/analysis/rdf/_rdf_kernel.pyx new file mode 100644 index 00000000..614c99fa --- /dev/null +++ b/PQAnalysis/analysis/rdf/_rdf_kernel.pyx @@ -0,0 +1,243 @@ +# cython: language_level=3 +# cython: boundscheck=False +# cython: wraparound=False +# cython: initializedcheck=False +# cython: cdivision=True +""" +Cython kernel for the RDF distance-histogram hot loop. + +The kernel accumulates the minimum image distance histogram of one +trajectory frame: for every reference atom the distances to all +target atoms (excluding the reference atom itself) are computed and +scattered into the bins ``floor((distance - r_min) / delta_r)``. + +The numeric semantics replicate the original numpy hot loop bit for +bit: the pair displacements are computed in float32 (the dtype of +the raw frame values) and widened to float64, the minimum image +convention uses the exact op order of +:py:meth:`PQAnalysis.core.cell.cell.Cell.image` (an orthorhombic +box-length branch with round-half-even ``rint`` matching +``np.round``, and a fractional-coordinate branch for triclinic +cells) and the binning replicates ``np.floor_divide`` exactly, +including its ``fmod`` based edge-case handling. Two shortcuts skip +work only where the result is provably unchanged: the imaging +division is skipped when ``|d| <= L/2`` (the rounded quotient is +guaranteed to be 0 then) and pairs are rejected before the square +root when the squared distance lies safely beyond the last bin edge. + +The extension must be compiled without floating point contraction +(``-ffp-contract=off``) so that no multiply-add sequence is fused +into an FMA, which would round differently than the separate numpy +operations. + +A pure Python/numpy fallback with the identical signature lives in +:py:mod:`PQAnalysis.analysis.rdf._rdf_kernel_py`. +""" + +import numpy as np + +cimport numpy as np + +from libc.float cimport DBL_MAX +from libc.math cimport fabs, floor, fmod, rint, sqrt + + +cdef inline double _floor_divide(double a, double b) noexcept nogil: + """ + Replicates ``np.floor_divide`` for float64 scalars (b != 0). + + This is the exact algorithm of numpy's ``npy_floor_divide``: the + quotient is derived from the exact ``fmod`` remainder, adjusted + to floor semantics for opposite signs and snapped to the nearest + integer. + """ + cdef double mod = fmod(a, b) + cdef double div = (a - mod) / b + cdef double floordiv + + if mod != 0.0: + if (b < 0.0) != (mod < 0.0): + mod += b + div -= 1.0 + + floordiv = floor(div) + + if div - floordiv > 0.5: + floordiv += 1.0 + + return floordiv + + +def rdf_frame_histogram( + const np.float32_t[:, ::1] values, + const np.int64_t[::1] reference_indices, + const np.int64_t[::1] target_indices, + const np.float64_t[::1] box_lengths, + const np.float64_t[:, ::1] box, + const np.float64_t[:, ::1] inv_box, + long long is_orthorhombic, + double r_min, + double delta_r, + long long n_bins, + np.int64_t[::1] hist, +): + """ + Accumulates the distance histogram of one trajectory frame. + + For every reference atom the minimum image distances to all + target atoms (excluding the reference atom itself) are computed + and scattered into the histogram bins + ``floor((distance - r_min) / delta_r)``. Distances outside of + ``[0, n_bins)`` bins are discarded. The histogram accumulator is + updated in place. + + Parameters + ---------- + values : np.float32 array of shape (n_atoms, 3), C-contiguous + The raw frame values (positions) of all atoms of the frame. + reference_indices : np.int64 array of shape (n_ref,) + The indices of the reference atoms. + target_indices : np.int64 array of shape (n_tgt,) + The indices of the target atoms. + box_lengths : np.float64 array of shape (3,) + The box lengths of the current frame. Only used for + orthorhombic (and vacuum) cells. + box : np.float64 array of shape (3, 3), C-contiguous + The box matrix of the current frame. Only used for + non-orthorhombic cells. + inv_box : np.float64 array of shape (3, 3), C-contiguous + The inverse box matrix of the current frame. Only used for + non-orthorhombic cells. + is_orthorhombic : int + Whether all box angles of the cell are exactly 90 degrees + (vacuum cells included), selecting the box-length imaging + branch of :py:meth:`PQAnalysis.core.cell.cell.Cell.image`. + r_min : float + The minimum (starting) radius of the RDF analysis. + delta_r : float + The spacing between the histogram bins. + n_bins : int + The number of histogram bins. + hist : np.int64 array of shape (n_bins,) + The histogram accumulator; updated in place. + """ + + cdef Py_ssize_t n_ref = reference_indices.shape[0] + cdef Py_ssize_t n_tgt = target_indices.shape[0] + cdef Py_ssize_t i, j, row + cdef np.int64_t ref_index + cdef float ref_x, ref_y, ref_z + cdef float delta32_x, delta32_y, delta32_z + cdef double dx, dy, dz + cdef double f0, f1, f2 + cdef double dist_sq, dist, shifted, quotient, bin_index, fraction + + cdef double length_x = box_lengths[0] + cdef double length_y = box_lengths[1] + cdef double length_z = box_lengths[2] + cdef double half_x = 0.5 * length_x + cdef double half_y = 0.5 * length_y + cdef double half_z = 0.5 * length_z + + cdef double b00 = box[0, 0], b01 = box[0, 1], b02 = box[0, 2] + cdef double b10 = box[1, 0], b11 = box[1, 1], b12 = box[1, 2] + cdef double b20 = box[2, 0], b21 = box[2, 1], b22 = box[2, 2] + cdef double i00 = inv_box[0, 0], i01 = inv_box[0, 1], i02 = inv_box[0, 2] + cdef double i10 = inv_box[1, 0], i11 = inv_box[1, 1], i12 = inv_box[1, 2] + cdef double i20 = inv_box[2, 0], i21 = inv_box[2, 1], i22 = inv_box[2, 2] + + cdef double n_bins_d = n_bins + + # the |d| <= L/2 imaging shortcut requires finite box lengths + # (rint of the quotient is then guaranteed to be exactly 0) + cdef bint use_half_box_shortcut = ( + is_orthorhombic != 0 + and length_x <= DBL_MAX and length_x == length_x + and length_y <= DBL_MAX and length_y == length_y + and length_z <= DBL_MAX and length_z == length_z + ) + + # conservative squared cutoff: any pair with a squared distance + # above it certainly falls beyond the last bin edge (the slack + # generously covers all rounding of the exact path); pairs below + # the cutoff always take the exact path + cdef double reject = (r_min + delta_r * n_bins_d) * (1.0 + 1e-9) + 1e-9 + cdef double reject_sq = reject * reject + + for i in range(n_ref): + ref_index = reference_indices[i] + row = ref_index + ref_x = values[row, 0] + ref_y = values[row, 1] + ref_z = values[row, 2] + + for j in range(n_tgt): + if target_indices[j] == ref_index: + continue + + row = target_indices[j] + + # float32 pair displacement (exact float32 arithmetic, + # as in the original loop), widened to float64 + delta32_x = values[row, 0] - ref_x + delta32_y = values[row, 1] - ref_y + delta32_z = values[row, 2] - ref_z + + dx = delta32_x + dy = delta32_y + dz = delta32_z + + if is_orthorhombic: + # d - L * rint(d / L); for |d| <= L/2 the rounded + # quotient is exactly 0 and d is unchanged + if use_half_box_shortcut: + if fabs(dx) > half_x: + dx = dx - length_x * rint(dx / length_x) + if fabs(dy) > half_y: + dy = dy - length_y * rint(dy / length_y) + if fabs(dz) > half_z: + dz = dz - length_z * rint(dz / length_z) + else: + dx = dx - length_x * rint(dx / length_x) + dy = dy - length_y * rint(dy / length_y) + dz = dz - length_z * rint(dz / length_z) + else: + # fractional = d @ inv_box.T + f0 = dx * i00 + dy * i01 + dz * i02 + f1 = dx * i10 + dy * i11 + dz * i12 + f2 = dx * i20 + dy * i21 + dz * i22 + + f0 -= rint(f0) + f1 -= rint(f1) + f2 -= rint(f2) + + # d = fractional @ box.T + dx = f0 * b00 + f1 * b01 + f2 * b02 + dy = f0 * b10 + f1 * b11 + f2 * b12 + dz = f0 * b20 + f1 * b21 + f2 * b22 + + dist_sq = (dx * dx + dy * dy) + dz * dz + + if dist_sq > reject_sq: + continue + + dist = sqrt(dist_sq) + + shifted = dist - r_min + quotient = shifted / delta_r + bin_index = floor(quotient) + fraction = quotient - bin_index + + # the plain floor of the quotient equals np.floor_divide + # whenever the quotient is safely away from an integer + # (|quotient| < 2^33 bounds the rounding error of the + # division by 2^-20); otherwise take the exact replica + if not ( + fraction > 1e-6 + and fraction < 0.999999 + and fabs(quotient) < 8.589934592e9 + ): + bin_index = _floor_divide(shifted, delta_r) + + if bin_index >= 0.0 and bin_index < n_bins_d: + hist[ bin_index] += 1 diff --git a/PQAnalysis/analysis/rdf/_rdf_kernel_py.py b/PQAnalysis/analysis/rdf/_rdf_kernel_py.py new file mode 100644 index 00000000..804302d9 --- /dev/null +++ b/PQAnalysis/analysis/rdf/_rdf_kernel_py.py @@ -0,0 +1,103 @@ +""" +Pure Python/numpy fallback for the RDF distance-histogram kernel. + +This module mirrors the API of the Cython extension +:py:mod:`PQAnalysis.analysis.rdf._rdf_kernel` and is used when the +extension is not available. It implements the per-frame histogram +update as a refactoring of the original RDF hot loop with the exact +numpy operations of that loop: the pair displacements are computed in +float32 (the dtype of the raw frame values), imaged into the unit cell +with the operations of +:py:meth:`PQAnalysis.core.cell.cell.Cell.image` (which promote the +displacements to float64), reduced with ``np.linalg.norm`` and binned +with ``np.floor_divide``/``np.bincount`` exactly as in +:py:meth:`PQAnalysis.analysis.rdf.rdf.RDF._add_to_bins`, so its +results are bit-identical to that implementation. +""" + +import numpy as np + + +def rdf_frame_histogram( + values, + reference_indices, + target_indices, + box_lengths, + box, + inv_box, + is_orthorhombic, + r_min, + delta_r, + n_bins, + hist, +): + """ + Accumulates the distance histogram of one trajectory frame. + + For every reference atom the minimum image distances to all + target atoms (excluding the reference atom itself) are computed + and scattered into the histogram bins + ``floor((distance - r_min) / delta_r)``. Distances outside of + ``[0, n_bins)`` bins are discarded. The histogram accumulator is + updated in place. + + Parameters + ---------- + values : np.float32 array of shape (n_atoms, 3), C-contiguous + The raw frame values (positions) of all atoms of the frame. + reference_indices : np.int64 array of shape (n_ref,) + The indices of the reference atoms. + target_indices : np.int64 array of shape (n_tgt,) + The indices of the target atoms. + box_lengths : np.float64 array of shape (3,) + The box lengths of the current frame. Only used for + orthorhombic (and vacuum) cells. + box : np.float64 array of shape (3, 3), C-contiguous + The box matrix of the current frame. Only used for + non-orthorhombic cells. + inv_box : np.float64 array of shape (3, 3), C-contiguous + The inverse box matrix of the current frame. Only used for + non-orthorhombic cells. + is_orthorhombic : int + Whether all box angles of the cell are exactly 90 degrees + (vacuum cells included), selecting the box-length imaging + branch of :py:meth:`PQAnalysis.core.cell.cell.Cell.image`. + r_min : float + The minimum (starting) radius of the RDF analysis. + delta_r : float + The spacing between the histogram bins. + n_bins : int + The number of histogram bins. + hist : np.int64 array of shape (n_bins,) + The histogram accumulator; updated in place. + """ + + for reference_index in reference_indices: + selected_target_indices = target_indices[ + target_indices != reference_index] + + # float32 pair displacements, exactly as in the original + # loop (frame.pos is float32 for file based trajectories) + delta = values[selected_target_indices] - values[reference_index] + + # minimum image convention with the exact operations of + # Cell.image (the float32 displacements are promoted to + # float64 by the float64 box data) + if is_orthorhombic: + delta = delta - box_lengths * np.round(delta / box_lengths) + else: + fractional = delta @ inv_box.T + fractional -= np.round(fractional) + delta = fractional @ box.T + + distances = np.linalg.norm(delta, axis=-1) + + # binning, exactly as in RDF._add_to_bins + bin_indices = np.floor_divide( + distances - r_min, delta_r + ).astype(int) + + bin_indices = bin_indices[ + (bin_indices < n_bins) & (bin_indices >= 0)] + + hist += np.bincount(bin_indices, minlength=n_bins) diff --git a/PQAnalysis/analysis/rdf/rdf.py b/PQAnalysis/analysis/rdf/rdf.py index 6db9bfaf..72a436da 100644 --- a/PQAnalysis/analysis/rdf/rdf.py +++ b/PQAnalysis/analysis/rdf/rdf.py @@ -13,24 +13,35 @@ import numpy as np # 3rd party imports -from beartype.typing import Tuple +from beartype.typing import List, Tuple from tqdm.auto import tqdm # local absolute imports from PQAnalysis.config import with_progress_bar from PQAnalysis.types import Np1DNumberArray, PositiveInt, PositiveReal -from PQAnalysis.core import distance, Cells -from PQAnalysis.traj import Trajectory, check_trajectory_pbc, check_trajectory_vacuum +from PQAnalysis.core import distance, Cell, Cells +from PQAnalysis.traj import ( + Trajectory, + TrajectoryFormat, + check_trajectory_pbc, + check_trajectory_vacuum, +) from PQAnalysis.topology import Selection, SelectionCompatible from PQAnalysis.utils import timeit_in_class from PQAnalysis.utils.custom_logging import setup_logger -from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io import TrajectoryReader, RawTrajectoryReader +from PQAnalysis.io.traj_file.exceptions import TrajectoryReaderError from PQAnalysis import __package_name__ from PQAnalysis.type_checking import runtime_type_checking # local relative imports from .exceptions import RDFError +try: + from ._rdf_kernel import rdf_frame_histogram # pylint: disable=import-error +except ModuleNotFoundError: + from ._rdf_kernel_py import rdf_frame_histogram + class RDF: @@ -57,16 +68,27 @@ class RDF: trajectory object or via a TrajectoryReader object. If a trajectory object is given, it is assumed to have a constant topology over all frames! The main - difference between the two is that the + difference between the two is that the TrajectoryReader object allows for lazy loading of the trajectory, meaning that the trajectory is only loaded frame by frame when needed. This can be useful for large trajectories that do not fit into memory. + + For xyz trajectory files without intra-molecular + exclusion the frames are streamed via the raw-frame + fast path + (:py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader`) + and accumulated with a compiled distance-histogram + kernel, which is considerably faster and produces + identical results. """ _use_full_atom_default = False _no_intra_molecular_default = False _r_min_default = 0.0 + + #: The chunk size (in bytes) of the buffered header-only cell scan. + _CELL_SCAN_CHUNK_SIZE = 16 * 1024 * 1024 logger = logging.getLogger(__package_name__).getChild(__qualname__) logger = setup_logger(logger) @@ -195,21 +217,38 @@ def __init__( # Initialize Trajectory iterator/generator # ############################################ - self.cells = traj.cells - - if isinstance(traj, TrajectoryReader): - # lazy loading of trajectory from file(s) - self.frame_generator = traj.frame_generator() - elif len(traj) > 0: - # use trajectory object as iterator - self.frame_generator = iter(traj) - else: - self.logger.error( - "Trajectory cannot be of length 0.", - exception=RDFError + self._raw_reader = None + self.frame_generator = None + + if self._use_raw_fast_path(traj): + # fast path: lazy loading of the raw frame data from + # file(s) without per-frame AtomicSystem construction; + # the cells are collected with a cheap header-only scan + # that deduplicates repeated boxes + self._raw_reader = RawTrajectoryReader( + traj.filenames, + traj_format=traj.traj_format, + md_format=traj.md_format, ) + self.cells, self._setup_cells = self._scan_cells(traj.filenames) + self.first_frame = self._raw_reader.read_first_frame() + else: + self.cells = traj.cells + self._setup_cells = self.cells + + if isinstance(traj, TrajectoryReader): + # lazy loading of trajectory from file(s) + self.frame_generator = traj.frame_generator() + elif len(traj) > 0: + # use trajectory object as iterator + self.frame_generator = iter(traj) + else: + self.logger.error( + "Trajectory cannot be of length 0.", + exception=RDFError + ) - self.first_frame = next(self.frame_generator) + self.first_frame = next(self.frame_generator) if traj.topology is not None: self.topology = traj.topology else: @@ -232,6 +271,168 @@ def __init__( self.use_full_atom_info ) + def _use_raw_fast_path(self, traj: Trajectory | TrajectoryReader) -> bool: + """ + Whether the raw-frame fast path is used for the given + trajectory input. + + The fast path streams the raw per-frame coordinates via + :py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` + and accumulates the distance histogram with a compiled + kernel, producing bit-identical results. It is only used for + the plain case: a TrajectoryReader input with an xyz + trajectory format and no intra-molecular exclusion. All + other inputs take the original path. + + Parameters + ---------- + traj : Trajectory | TrajectoryReader + The trajectory input of the RDF analysis. + + Returns + ------- + bool + True if the raw-frame fast path is used. + """ + + return ( + isinstance(traj, TrajectoryReader) + and traj.traj_format == TrajectoryFormat.XYZ + and not self.no_intra_molecular + ) + + @classmethod + def _scan_cells(cls, filenames: List[str]) -> Tuple[Cells, Cells]: + """ + Collects the cells of the trajectory with a header-only scan. + + This is the fast-path counterpart of the cells full scan of + :py:attr:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.cells` + with identical semantics: the number of atoms is taken from + the first line of the first file and determines the frame + stride of all files, frames without box information inherit + the cell of the last frame that had one (also across file + boundaries) and invalid box headers raise the same error. + Instead of building one Cell object per frame, textually + identical box headers share a single (deduplicated) Cell + object, which makes the scan considerably cheaper for + constant-box trajectories. + + Parameters + ---------- + filenames : List[str] + The names of the trajectory files to scan. + + Returns + ------- + cells : Cells + The cells of all frames of the trajectory (with shared + Cell objects for textually identical boxes). + unique_cells : Cells + The unique cells of the trajectory in order of first + appearance. Every computation of the RDF setup over the + cells is deduplication invariant (all/any/min over the + cells), so the unique cells serve as a cheap stand-in + for the full cell list in the setup checks. + + Raises + ------ + TrajectoryReaderError + If the box information of a header line is invalid. + """ + + with open(filenames[0], "r", encoding="utf-8") as file: + n_atoms = int(file.readline().split()[0]) + + # +2 for the cell/atom_count + comment lines + stride = n_atoms + 2 + + cells = [] + unique_cells = [] + cell_cache = {} + last_cell = None + vacuum_cell = None + + for filename in filenames: + line_number = 0 + offset = 0 + pending = b"" + + with open(filename, "rb") as file: + while True: + chunk = file.read(cls._CELL_SCAN_CHUNK_SIZE) + at_eof = chunk == b"" + + lines = (pending + chunk).split(b"\n") + + if at_eof: + # a trailing line without a final newline + # counts as a line + if lines[-1] == b"": + lines.pop() + else: + pending = lines.pop() + + index = offset + + while index < len(lines): + line_number += 1 + + stripped_line = ( + lines[index].decode("utf-8").strip() + ) + splitted_line = stripped_line.split() + + if len(splitted_line) == 1: + + if last_cell is not None: + cell = last_cell + else: + if vacuum_cell is None: + vacuum_cell = Cell() + unique_cells.append(vacuum_cell) + + cell = vacuum_cell + + elif len(splitted_line) in (4, 7): + + key = tuple(splitted_line[1:]) + cell = cell_cache.get(key) + + if cell is None: + cell = Cell( + *( + float(value) + for value in splitted_line[1:] + ) + ) + cell_cache[key] = cell + unique_cells.append(cell) + + else: + + cls.logger.error( + ( + "Invalid number of arguments for box:" + f" {len(splitted_line)} encountered in" + f" file {filename}:{line_number}" + f" = {stripped_line}" + ), + exception=TrajectoryReaderError, + ) + + cells.append(cell) + last_cell = cell + + index += stride + + offset = index - len(lines) + + if at_eof: + break + + return cells, unique_cells + def _setup_bins( self, n_bins: PositiveInt | None = None, @@ -308,7 +509,7 @@ def _setup_bins( n_bins, delta_r, r_min, - self.cells + self._setup_cells ) self.n_bins, self.r_max = self._calculate_n_bins( @@ -320,10 +521,10 @@ def _setup_bins( else: self.r_max = r_max if r_max is not None else self._infer_r_max( - self.cells + self._setup_cells ) - self.r_max = self._check_r_max(self.r_max, self.cells) + self.r_max = self._check_r_max(self.r_max, self._setup_cells) if n_bins is None: @@ -360,7 +561,8 @@ def _check_trajectory_conditions(self): """ if not check_trajectory_pbc( - self.cells) and not check_trajectory_vacuum(self.cells): + self._setup_cells + ) and not check_trajectory_vacuum(self._setup_cells): self.logger.error( ( "The provided trajectory is not fully periodic or " @@ -376,6 +578,30 @@ def average_volume(self) -> PositiveReal: """PositiveReal: The average volume of the trajectory.""" return np.mean([cell.volume for cell in self.cells]) + def _calculate_average_volume(self) -> PositiveReal: + """ + Calculates the average volume of the trajectory. + + For the raw-frame fast path the volume of every unique cell + is computed only once and broadcast to the full (shared + object) cell list before averaging, which is bit-identical + to (but much cheaper than) the plain mean over the volumes + of all cells of the :py:attr:`average_volume` property. For + the original path the property is evaluated as before. + + Returns + ------- + PositiveReal + The average volume of the trajectory. + """ + + if self._raw_reader is None: + return self.average_volume + + volumes = {id(cell): cell.volume for cell in self._setup_cells} + + return np.mean([volumes[id(cell)] for cell in self.cells]) + @timeit_in_class def run( self @@ -417,7 +643,12 @@ def run( """ self._initialize_run() - self._calculate_bins() + + if self._raw_reader is not None: + self._calculate_bins_raw() + else: + self._calculate_bins() + return self._finalize_run() def _initialize_run(self): @@ -431,7 +662,7 @@ def _initialize_run(self): combinations of the RDF analysis. """ - self._average_volume = self.average_volume + self._average_volume = self._calculate_average_volume() _ref_indices_len = len(self.reference_indices) @@ -483,6 +714,8 @@ def _calculate_bins(self): else: target_indices = self.target_indices + target_indices = target_indices[target_indices != reference_index] + reference_position = frame.pos[reference_index] target_positions = frame.pos[target_indices] @@ -499,6 +732,108 @@ def _calculate_bins(self): self.n_bins ) + def _calculate_bins_raw(self): + """ + Calculates the bins of the RDF analysis using the raw-frame + fast path. + + This method is the fast-path counterpart of + :py:meth:`_calculate_bins` used when the trajectory is read + from xyz file(s) and no intra-molecular exclusion is active: + it streams the raw per-frame coordinates via + :py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` + (no per-frame AtomicSystem construction) and accumulates the + distance histogram with the RDF frame kernel, which + replicates the numeric semantics of the original loop bit + for bit. The box data of the cell are loop invariants that + are only recomputed when the Cell object yielded by the + reader changes identity (the raw reader caches Cell objects, + so constant-box trajectories compute them exactly once). + + Raises + ------ + RDFError + If a frame does not provide positions for all atoms + referenced by the selections. + """ + + hist = np.zeros(self.n_bins, dtype=np.int64) + + reference_indices = np.ascontiguousarray( + self.reference_indices, dtype=np.int64 + ) + target_indices = np.ascontiguousarray( + self.target_indices, dtype=np.int64 + ) + + max_index = int( + max( + reference_indices.max(initial=-1), + target_indices.max(initial=-1), + ) + ) + + # loop-invariant cell data, recomputed only when the yielded + # Cell object changes identity + last_cell = None + box_lengths = np.ones(3) + box = np.eye(3) + inv_box = np.eye(3) + is_orthorhombic = 1 + + counter = 0 + + for values, cell in tqdm( + self._raw_reader.raw_frame_generator(), + total=self.n_frames, + disable=not with_progress_bar): + + counter += 1 + + if values.shape[0] <= max_index: + self.logger.error( + ( + f"Frame {counter} of the trajectory provides " + f"only {values.shape[0]} atoms, but the " + "selections reference the atom index " + f"{max_index}. Please provide a trajectory " + "with a consistent number of atoms." + ), + exception=RDFError + ) + + if cell is not last_cell: + last_cell = cell + is_orthorhombic = 1 if ( + cell.alpha == 90 and cell.beta == 90 and cell.gamma == 90 + ) else 0 + + box_lengths = np.ascontiguousarray( + cell.box_lengths, dtype=np.float64 + ) + box = np.ascontiguousarray( + cell.box_matrix, dtype=np.float64 + ) + inv_box = np.ascontiguousarray( + cell.inverse_box_matrix, dtype=np.float64 + ) + + rdf_frame_histogram( + values, + reference_indices, + target_indices, + box_lengths, + box, + inv_box, + is_orthorhombic, + self.r_min, + self.delta_r, + self.n_bins, + hist, + ) + + self.bins += hist + def _finalize_run( self ) -> Tuple[Np1DNumberArray, diff --git a/PQAnalysis/analysis/spectrum_broadening/__init__.py b/PQAnalysis/analysis/spectrum_broadening/__init__.py new file mode 100644 index 00000000..d1d4236d --- /dev/null +++ b/PQAnalysis/analysis/spectrum_broadening/__init__.py @@ -0,0 +1,54 @@ +""" +A package containing classes and functions to broaden stick spectra. + +Classes +------- +:py:class:`~PQAnalysis.analysis.spectrum_broadening.SpectrumDataWriter` + A class to write broadened spectra to output files. + +Functions +--------- +:py:func:`~PQAnalysis.analysis.spectrum_broadening.api.build_spectrum` + A function to broaden a stick spectrum file and write the result. +:py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.alpha_from_fwhm` + A function to convert a Gaussian full width at half maximum to + the exponent alpha. +:py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.fwhm_from_alpha` + A function to convert a Gaussian exponent alpha to the full width + at half maximum. +:py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.read_stick_spectrum` + A function to read a two-column stick spectrum file. +:py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.wavenumber_grid` + A function to build the regular wavenumber grid of the broadened + spectrum. +:py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.broaden` + A function to broaden a stick spectrum on a wavenumber grid. +""" + +from .api import build_spectrum +from .spectrum_broadening import ( + DEFAULT_ALPHA, + DEFAULT_WAVENUMBER_MAX, + DEFAULT_WAVENUMBER_MIN, + DEFAULT_WAVENUMBER_STEP, + alpha_from_fwhm, + broaden, + fwhm_from_alpha, + read_stick_spectrum, + wavenumber_grid, +) +from .spectrum_broadening_output_file_writer import SpectrumDataWriter + +__all__ = [ + "DEFAULT_ALPHA", + "DEFAULT_WAVENUMBER_MAX", + "DEFAULT_WAVENUMBER_MIN", + "DEFAULT_WAVENUMBER_STEP", + "SpectrumDataWriter", + "alpha_from_fwhm", + "broaden", + "build_spectrum", + "fwhm_from_alpha", + "read_stick_spectrum", + "wavenumber_grid", +] diff --git a/PQAnalysis/analysis/spectrum_broadening/api.py b/PQAnalysis/analysis/spectrum_broadening/api.py new file mode 100644 index 00000000..50b33130 --- /dev/null +++ b/PQAnalysis/analysis/spectrum_broadening/api.py @@ -0,0 +1,113 @@ +""" +API functions for spectrum broadening. +""" + +from numbers import Real + +from beartype.typing import Tuple + +from PQAnalysis.io.formats import FileWritingMode +from PQAnalysis.type_checking import runtime_type_checking +from PQAnalysis.types import Np1DNumberArray, PositiveReal + +from .exceptions import SpectrumBroadeningError +from .spectrum_broadening import ( + DEFAULT_ALPHA, + DEFAULT_WAVENUMBER_MAX, + DEFAULT_WAVENUMBER_MIN, + DEFAULT_WAVENUMBER_STEP, + alpha_from_fwhm, + broaden, + read_stick_spectrum, + wavenumber_grid, +) +from .spectrum_broadening_output_file_writer import SpectrumDataWriter + + + +@runtime_type_checking +def build_spectrum( + input_file: str, + output: str | None = None, + alpha: PositiveReal | None = None, + fwhm: PositiveReal | None = None, + wavenumber_min: Real = DEFAULT_WAVENUMBER_MIN, + wavenumber_max: Real = DEFAULT_WAVENUMBER_MAX, + wavenumber_step: PositiveReal = DEFAULT_WAVENUMBER_STEP, + kernel: str = "gaussian", + mode: str | FileWritingMode = "w", +) -> Tuple[Np1DNumberArray, Np1DNumberArray]: + """ + Broaden a two-column stick spectrum file and write the result. + + Reads a stick spectrum (wavenumber in cm^-1, intensity), broadens + it on a regular wavenumber grid using the peak-height convention + and writes one ``'%8.4f %16.12e'`` row per grid point. This is + a port of the legacy ``build_spectrum.sh`` awk implementation. + + Parameters + ---------- + input_file : str + The two-column stick spectrum file to read. + output : str | None, optional + The output file. If None, the output is printed to stdout, + by default None. + alpha : PositiveReal | None, optional + The Gaussian exponent alpha in cm^-2. Mutually exclusive with + fwhm, by default None, which corresponds to 0.0025 cm^-2 if + fwhm is not given either. + fwhm : PositiveReal | None, optional + The full width at half maximum in cm^-1 as an alternative way + to specify the broadening width. Mutually exclusive with + alpha, by default None. + wavenumber_min : Real, optional + The first grid point in cm^-1, by default 10.0. + wavenumber_max : Real, optional + The exclusive upper bound of the grid in cm^-1, + by default 4000.0. + wavenumber_step : PositiveReal, optional + The grid spacing in cm^-1, by default 0.25. + kernel : str, optional + The broadening kernel, either ``gaussian`` or ``lorentzian``, + by default ``gaussian``. + mode : str | FileWritingMode, optional + The writing mode of the output file, by default "w". + + Returns + ------- + Tuple[Np1DNumberArray, Np1DNumberArray] + The wavenumber grid and the broadened intensities. + + Raises + ------ + SpectrumBroadeningError + If both alpha and fwhm are specified. + """ + if alpha is not None and fwhm is not None: + raise SpectrumBroadeningError( + "The parameters alpha and fwhm are mutually exclusive. " + "Please specify only one of them." + ) + + if alpha is None: + alpha = alpha_from_fwhm(fwhm) if fwhm is not None else DEFAULT_ALPHA + + wavenumbers, intensities = read_stick_spectrum(input_file) + + grid = wavenumber_grid( + wavenumber_min=wavenumber_min, + wavenumber_max=wavenumber_max, + wavenumber_step=wavenumber_step, + ) + + broadened = broaden( + wavenumbers, + intensities, + grid, + alpha=alpha, + kernel=kernel, + ) + + SpectrumDataWriter(output, mode=mode).write((grid, broadened)) + + return grid, broadened diff --git a/PQAnalysis/analysis/spectrum_broadening/exceptions.py b/PQAnalysis/analysis/spectrum_broadening/exceptions.py new file mode 100644 index 00000000..d711ad0c --- /dev/null +++ b/PQAnalysis/analysis/spectrum_broadening/exceptions.py @@ -0,0 +1,13 @@ +""" +Exceptions for spectrum broadening. +""" + +from PQAnalysis.exceptions import PQException + + + +class SpectrumBroadeningError(PQException): + + """ + Exception raised for spectrum broadening errors. + """ diff --git a/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening.py b/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening.py new file mode 100644 index 00000000..30f37d53 --- /dev/null +++ b/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening.py @@ -0,0 +1,316 @@ +""" +Numerical routines for line broadening of stick spectra. + +A stick spectrum is a list of discrete lines, each given by a +wavenumber (in cm^-1) and an intensity. Broadening convolves each +line with a Gaussian (or Lorentzian) kernel on a regular wavenumber +grid using the peak-height convention: the broadened profile of a +single line reaches exactly the line intensity at the line position, +no area normalization is applied. This reproduces the legacy +``build_spectrum.sh`` awk implementation, which calculates +``I(grid) = sum_k I_k * exp(-alpha * (grid - nu_k)^2)`` with a +default ``alpha`` of 0.0025 cm^-2 (FWHM of about 33.3 cm^-1) on a +grid from 10 cm^-1 (inclusive) to 4000 cm^-1 (exclusive) with a step +of 0.25 cm^-1. +""" + +from numbers import Real +from pathlib import Path + +import numpy as np + +from beartype.typing import Tuple + +from PQAnalysis.types import Np1DNumberArray, PositiveReal + +from .exceptions import SpectrumBroadeningError + +#: Default Gaussian exponent alpha in cm^-2 (legacy ``BROAD`` setting). +DEFAULT_ALPHA = 0.0025 + +#: Default first grid point in cm^-1. +DEFAULT_WAVENUMBER_MIN = 10.0 + +#: Default (exclusive) last grid point in cm^-1. +DEFAULT_WAVENUMBER_MAX = 4000.0 + +#: Default grid spacing in cm^-1. +DEFAULT_WAVENUMBER_STEP = 0.25 + +#: Supported broadening kernels. +KERNELS = ("gaussian", "lorentzian") + +#: Maximum number of elements of the outer-difference matrix that are +#: kept in memory at once. Larger problems are processed in grid chunks. +_GRID_CHUNK_SIZE = 4_194_304 + + + +def alpha_from_fwhm(fwhm: PositiveReal) -> float: + """ + Convert a Gaussian full width at half maximum to the exponent alpha. + + The Gaussian kernel is ``exp(-alpha * delta_nu^2)``, so the full + width at half maximum is ``2 * sqrt(ln(2) / alpha)`` and therefore + ``alpha = 4 * ln(2) / fwhm^2``. + + Parameters + ---------- + fwhm : PositiveReal + The full width at half maximum in cm^-1. + + Returns + ------- + float + The Gaussian exponent alpha in cm^-2. + + Raises + ------ + SpectrumBroadeningError + If the full width at half maximum is not positive. + """ + if fwhm <= 0.0: + raise SpectrumBroadeningError( + "The full width at half maximum must be positive." + ) + + return 4.0 * np.log(2.0) / float(fwhm)**2 + + + +def fwhm_from_alpha(alpha: PositiveReal) -> float: + """ + Convert a Gaussian exponent alpha to the full width at half maximum. + + Parameters + ---------- + alpha : PositiveReal + The Gaussian exponent alpha in cm^-2. + + Returns + ------- + float + The full width at half maximum in cm^-1. + + Raises + ------ + SpectrumBroadeningError + If alpha is not positive. + """ + if alpha <= 0.0: + raise SpectrumBroadeningError("Alpha must be positive.") + + return 2.0 * np.sqrt(np.log(2.0) / float(alpha)) + + + +def read_stick_spectrum( + filename: str +) -> Tuple[Np1DNumberArray, Np1DNumberArray]: + """ + Read a two-column stick spectrum file. + + The file must contain one line per stick with the wavenumber in + cm^-1 in the first column and the intensity in the second column. + Blank lines and lines starting with ``#`` are ignored. Additional + columns are ignored as well. + + Parameters + ---------- + filename : str + The stick spectrum file to read. + + Returns + ------- + Tuple[Np1DNumberArray, Np1DNumberArray] + The wavenumbers and intensities of the sticks as float64 arrays. + + Raises + ------ + SpectrumBroadeningError + If the file does not exist or contains a malformed line. + """ + path = Path(filename) + if not path.is_file(): + raise SpectrumBroadeningError( + f"Stick spectrum file '{filename}' not found." + ) + + wavenumbers = [] + intensities = [] + + with path.open(encoding="utf-8") as file: + for line_number, line in enumerate(file, start=1): + stripped = line.strip() + if not stripped or stripped.startswith("#"): + continue + + columns = stripped.split() + if len(columns) < 2: + raise SpectrumBroadeningError( + f"Line {line_number} of '{filename}' does not " + "contain two columns." + ) + + try: + wavenumbers.append(float(columns[0])) + intensities.append(float(columns[1])) + except ValueError as exception: + raise SpectrumBroadeningError( + f"Line {line_number} of '{filename}' contains " + "non-numeric data." + ) from exception + + return ( + np.asarray(wavenumbers, dtype=np.float64), + np.asarray(intensities, dtype=np.float64), + ) + + + +def wavenumber_grid( + wavenumber_min: Real = DEFAULT_WAVENUMBER_MIN, + wavenumber_max: Real = DEFAULT_WAVENUMBER_MAX, + wavenumber_step: PositiveReal = DEFAULT_WAVENUMBER_STEP, +) -> Np1DNumberArray: + """ + Build the regular wavenumber grid of the broadened spectrum. + + The grid starts at ``wavenumber_min`` and increases in steps of + ``wavenumber_step`` while staying strictly below ``wavenumber_max``, + exactly like the legacy awk loop + ``for (i = min; i < max; i += step)``. The default grid therefore + contains 15960 points from 10.0 cm^-1 to 3999.75 cm^-1. + + Parameters + ---------- + wavenumber_min : Real, optional + The first grid point in cm^-1, by default 10.0. + wavenumber_max : Real, optional + The exclusive upper bound of the grid in cm^-1, by default 4000.0. + wavenumber_step : PositiveReal, optional + The grid spacing in cm^-1, by default 0.25. + + Returns + ------- + Np1DNumberArray + The wavenumber grid as a float64 array. + + Raises + ------ + SpectrumBroadeningError + If the step is not positive or the upper bound is not larger + than the lower bound. + """ + if wavenumber_step <= 0.0: + raise SpectrumBroadeningError( + "The wavenumber step must be positive." + ) + + if wavenumber_max <= wavenumber_min: + raise SpectrumBroadeningError( + "The maximum wavenumber must be larger than the " + "minimum wavenumber." + ) + + return np.arange( + float(wavenumber_min), + float(wavenumber_max), + float(wavenumber_step), + dtype=np.float64, + ) + + + +def broaden( + wavenumbers: Np1DNumberArray, + intensities: Np1DNumberArray, + grid: Np1DNumberArray, + alpha: PositiveReal = DEFAULT_ALPHA, + kernel: str = "gaussian", +) -> Np1DNumberArray: + """ + Broaden a stick spectrum on a wavenumber grid. + + Each grid point accumulates the contributions of all sticks using + the peak-height convention. For the Gaussian kernel the broadened + spectrum is ``I(g) = sum_k I_k * exp(-alpha * (g - nu_k)^2)``. For + the Lorentzian kernel the broadened spectrum is + ``I(g) = sum_k I_k * gamma^2 / ((g - nu_k)^2 + gamma^2)`` where the + half width at half maximum ``gamma = sqrt(ln(2) / alpha)`` is chosen + such that both kernels share the same full width at half maximum + for a given alpha. + + The calculation uses a vectorized outer difference between the grid + and the stick positions and is chunked along the grid axis to keep + the memory footprint bounded for large inputs. All accumulation is + performed in float64. + + Parameters + ---------- + wavenumbers : Np1DNumberArray + The stick positions in cm^-1. + intensities : Np1DNumberArray + The stick intensities. Must have the same length as the + stick positions. + grid : Np1DNumberArray + The wavenumber grid in cm^-1. + alpha : PositiveReal, optional + The Gaussian exponent alpha in cm^-2, by default 0.0025. + kernel : str, optional + The broadening kernel, either ``gaussian`` or ``lorentzian``, + by default ``gaussian``. + + Returns + ------- + Np1DNumberArray + The broadened intensities on the grid as a float64 array. + + Raises + ------ + SpectrumBroadeningError + If alpha is not positive, the kernel is unknown or the stick + positions and intensities have different lengths. + """ + if alpha <= 0.0: + raise SpectrumBroadeningError("Alpha must be positive.") + + kernel = kernel.lower() + if kernel not in KERNELS: + raise SpectrumBroadeningError( + f"Unknown kernel '{kernel}'. Options are gaussian " + "and lorentzian." + ) + + wavenumbers = np.asarray(wavenumbers, dtype=np.float64) + intensities = np.asarray(intensities, dtype=np.float64) + grid = np.asarray(grid, dtype=np.float64) + + if wavenumbers.shape != intensities.shape: + raise SpectrumBroadeningError( + "The stick wavenumbers and intensities must have " + "the same length." + ) + + result = np.zeros(grid.size, dtype=np.float64) + + if wavenumbers.size == 0: + return result + + alpha = float(alpha) + gamma_squared = np.log(2.0) / alpha + + chunk_size = max(1, _GRID_CHUNK_SIZE // wavenumbers.size) + + for start in range(0, grid.size, chunk_size): + stop = min(start + chunk_size, grid.size) + delta = grid[start:stop, None] - wavenumbers[None, :] + + if kernel == "gaussian": + weights = np.exp(-alpha * delta**2) + else: + weights = gamma_squared / (delta**2 + gamma_squared) + + result[start:stop] = weights @ intensities + + return result diff --git a/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening_output_file_writer.py b/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening_output_file_writer.py new file mode 100644 index 00000000..67f59c3e --- /dev/null +++ b/PQAnalysis/analysis/spectrum_broadening/spectrum_broadening_output_file_writer.py @@ -0,0 +1,61 @@ +""" +A module containing the writer for broadened spectra. +""" + +# 3rd party imports +from beartype.typing import Tuple + +# local imports +from PQAnalysis.io import BaseWriter +from PQAnalysis.io.formats import FileWritingMode +from PQAnalysis.types import Np1DNumberArray +from PQAnalysis.type_checking import runtime_type_checking + + + +class SpectrumDataWriter(BaseWriter): + + """ + Class for writing a broadened spectrum to a file. + + Each row contains one grid point and the broadened intensity at + that grid point in the legacy ``'%8.4f %16.12e'`` format of + ``build_spectrum.sh``. + """ + + @runtime_type_checking + def __init__( + self, + filename: str | None = None, + mode: str | FileWritingMode = "w", + ) -> None: + """ + Parameters + ---------- + filename : str | None, optional + The filename to write to. If None, the output is printed + to stdout, by default None. + mode : str | FileWritingMode, optional + The writing mode, by default "w". + """ + self.filename = filename + super().__init__(filename, mode=mode) + + @runtime_type_checking + def write(self, data: Tuple[Np1DNumberArray, Np1DNumberArray]) -> None: + """ + Writes the broadened spectrum to the file. + + Parameters + ---------- + data : Tuple[Np1DNumberArray, Np1DNumberArray] + The wavenumber grid and the broadened intensities as + returned by + :py:func:`~PQAnalysis.analysis.spectrum_broadening.spectrum_broadening.broaden`. + """ + super().open() + + for grid_point, intensity in zip(data[0], data[1]): + print(f"{grid_point:8.4f} {intensity:16.12e}", file=self.file) + + super().close() diff --git a/PQAnalysis/analysis/vacf/__init__.py b/PQAnalysis/analysis/vacf/__init__.py new file mode 100644 index 00000000..ab90c3a8 --- /dev/null +++ b/PQAnalysis/analysis/vacf/__init__.py @@ -0,0 +1,59 @@ +""" +A package containing classes and functions to handle velocity and +charge-flux auto-correlation function (VACF) analyses. + +Classes +------- +:py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + A class to calculate velocity auto-correlation functions. +:py:class:`~PQAnalysis.analysis.vacf.vacf_input_file_reader.VACFInputFileReader` + A class to read VACF setups from input files. +:py:class:`~PQAnalysis.analysis.vacf.vacf_output_file_writer.VACFDataWriter` + A class to write VACF data to output files. +:py:class:`~PQAnalysis.analysis.vacf.vacf_output_file_writer.VACFSpectrumDataWriter` + A class to write VACF spectra to output files. +:py:class:`~PQAnalysis.analysis.vacf.vacf_output_file_writer.VACFWindowedDataWriter` + A class to write windowed VACF data to output files. +:py:class:`~PQAnalysis.analysis.vacf.vacf_output_file_writer.VACFLogWriter` + A class to write log files. + +Functions +--------- +:py:func:`~PQAnalysis.analysis.vacf.api.vacf` + A function to calculate VACFs from an input file. +:py:func:`~PQAnalysis.analysis.vacf.api.read_static_charges` + A function to read legacy static charge files. +:py:func:`~PQAnalysis.analysis.vacf.spectrum.vacf_spectrum` + A function to calculate the legacy cosine-transform spectrum of a + correlation function. +:py:func:`~PQAnalysis.analysis.vacf.spectrum.apodization_window` + A function to calculate the legacy apodization windows. +""" + +from .api import read_static_charges, vacf +from .vacf import VACF +from .spectrum import WINDOW_FUNCTIONS, apodization_window, vacf_spectrum +from .vacf_input_file_reader import VACFInputFileReader +from .vacf_output_file_writer import ( + VACFDataWriter, + VACFLogWriter, + VACFSpectrumDataWriter, + VACFWindowedDataWriter, +) +from .exceptions import VACFError, VACFWarning + +__all__ = [ + "VACF", + "VACFDataWriter", + "VACFError", + "VACFInputFileReader", + "VACFLogWriter", + "VACFSpectrumDataWriter", + "VACFWarning", + "VACFWindowedDataWriter", + "WINDOW_FUNCTIONS", + "apodization_window", + "read_static_charges", + "vacf", + "vacf_spectrum", +] diff --git a/PQAnalysis/analysis/vacf/_raw_charge_reader.py b/PQAnalysis/analysis/vacf/_raw_charge_reader.py new file mode 100644 index 00000000..db855e84 --- /dev/null +++ b/PQAnalysis/analysis/vacf/_raw_charge_reader.py @@ -0,0 +1,97 @@ +""" +A module containing a raw fast-path reader for charge (.chrg) +trajectory files. + +The :py:class:`RawChargeTrajectoryReader` streams the charge values of +a charge trajectory as plain float64 numpy arrays, without building +:py:class:`~PQAnalysis.atomic_system.atomic_system.AtomicSystem` +objects for every frame. It is the scalar counterpart of +:py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` +and is used by the VACF analysis to read charge trajectories in +lockstep with the velocity trajectory. The charge values are bitwise +identical to the ones produced by +:py:meth:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.frame_generator` +(both parse the charges as correctly rounded float64 values). +""" + +import logging + +from beartype.typing import List + +from PQAnalysis.io.base import BaseReader +from PQAnalysis.io.traj_file._slab_parser_py import MODE_CHARGE +from PQAnalysis.io.traj_file.raw_frame_reader import RawTrajectoryReader +from PQAnalysis.traj import MDEngineFormat, TrajectoryFormat +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +# The charge body lines are parsed by the shared slab parser of +# RawTrajectoryReader (MODE_CHARGE). parse_charge_lines remains the +# reference scalar line parser of the vacf kernels and is re-exported +# here for the kernel wiring tests. +try: + from ._vacf_kernel import parse_charge_lines # pylint: disable=import-error,unused-import +except ModuleNotFoundError: + from ._vacf_kernel_py import parse_charge_lines # pylint: disable=unused-import + + + +class RawChargeTrajectoryReader(RawTrajectoryReader): + + """ + A fast-path reader that streams the raw per-frame charge values of + charge trajectory files. + + The reader shares the frame layout handling of + :py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` + (multiple files, QMCFC dummy atom stripping, cell caching and + vacuum cell inheritance), but parses the scalar 'name charge' body + lines of the + :py:class:`~PQAnalysis.traj.formats.TrajectoryFormat.CHARGE` + format instead of the xyz-family vector lines. The + :py:meth:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader.raw_frame_generator` + method therefore yields ``(values, cell)`` tuples with ``values`` + being the ``(n_atoms,)`` float64 array of the charge values of the + frame. + """ + + # Set up the logger + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + #: The slab parser body mode of this reader (a name token plus + #: exactly one float64 value per atom line). + _SLAB_MODE = MODE_CHARGE + + #: The error message used when a frame body line cannot be parsed. + _BODY_ERROR_MESSAGE = 'Invalid file format in scalar values of Frame.' + + @runtime_type_checking + def __init__( # pylint: disable=super-init-not-called + self, + filename: str | List[str], + md_format: MDEngineFormat | str = MDEngineFormat.PQ, + ) -> None: + """ + Parameters + ---------- + filename : str or list of str + The name of the file to read from or a list of filenames + to read from. + md_format : MDEngineFormat | str, optional + The format of the MD engine. Default is MDEngineFormat.PQ. + """ + # Deliberately not calling RawTrajectoryReader.__init__ here: + # the parent restricts itself to the xyz-family vector formats + # while this reader always reads the CHARGE format. + # pylint: disable-next=non-parent-init-called + BaseReader.__init__(self, filename) # pylint: disable=super-init-not-called + + if not self.multiple_files: + self.filenames = [self.filename] + + self.traj_format = TrajectoryFormat.CHARGE + self.md_format = MDEngineFormat(md_format) + + self._cell_cache = {} diff --git a/PQAnalysis/analysis/vacf/_vacf_kernel.pyx b/PQAnalysis/analysis/vacf/_vacf_kernel.pyx new file mode 100644 index 00000000..4076b73a --- /dev/null +++ b/PQAnalysis/analysis/vacf/_vacf_kernel.pyx @@ -0,0 +1,268 @@ +# cython: boundscheck=False, wraparound=False, cdivision=True +""" +Cython kernels for the hot loops of the VACF analysis. + +The kernels keep the exact numeric semantics of the analysis: the +velocities are parsed as float32 by the trajectory readers and all +accumulation is performed in float64. A numpy fallback with identical +signatures lives in +:py:mod:`PQAnalysis.analysis.vacf._vacf_kernel_py` and is used when +this extension is not available. + +The per-origin dot products of :py:func:`accumulate_frame` are +accumulated in float64 with a fixed 4-way unrolled summation order. +The numpy fallback uses ``np.einsum``/``np.sum`` (SIMD/pairwise +summation) instead, so kernel and fallback can differ by floating +point rounding on the order of the machine epsilon - far below the +parity tolerances of the analysis. All other kernels are bitwise +identical to the fallback. +""" + +import numpy as np + +from libc.stdio cimport sscanf +from libc.string cimport memcpy, memmove + + + +cdef inline double _dot( + const double* a, + const double* b, + Py_ssize_t n, +) noexcept nogil: + """ + Dot product of two float64 buffers of length ``n``. + + The summation is 4-way unrolled with a fixed combination order + ``(s0 + s1) + (s2 + s3)`` so that the result is deterministic on + every platform. + """ + cdef double s0 = 0.0 + cdef double s1 = 0.0 + cdef double s2 = 0.0 + cdef double s3 = 0.0 + cdef Py_ssize_t k = 0 + + while k + 4 <= n: + s0 = s0 + a[k] * b[k] + s1 = s1 + a[k + 1] * b[k + 1] + s2 = s2 + a[k + 2] * b[k + 2] + s3 = s3 + a[k + 3] * b[k + 3] + k = k + 4 + + while k < n: + s0 = s0 + a[k] * b[k] + k = k + 1 + + return (s0 + s1) + (s2 + s3) + + +def accumulate_frame( + double[::1] corr, + double[:, :, ::1] origin_vel, + double[::1] origin_norm, + long long[::1] origin_frame, + Py_ssize_t n_active, + const double[:, ::1] vel, + long long frame_number, + bint spawn, + long long window_size, +): + """ + Performs the per-frame update of the sliding-origin estimator. + + If ``spawn`` is set, the frame is registered as a new time origin + (velocities, aggregate squared norm and frame number are stored in + the origin bookkeeping arrays). Afterwards every active origin + ``i`` contributes ``sum_j v_j(t) . v_j(t0_i) / sum_j |v_j(t0_i)|^2`` + to the lag ``t - t0_i`` of ``corr``. The oldest origin is retired + (shifted out of the bookkeeping arrays) after it has contributed + to the lag ``window_size``. + + Parameters + ---------- + corr : np.ndarray of float64, shape (window_size + 1,) + The lag accumulator, updated in place. + origin_vel : np.ndarray of float64, shape (n_slots, n_target, 3) + The velocities of the active origins, updated in place. + origin_norm : np.ndarray of float64, shape (n_slots,) + The aggregate squared velocity norms of the active origins, + updated in place. + origin_frame : np.ndarray of int64, shape (n_slots,) + The 1-based frame numbers of the active origins, updated in + place. + n_active : int + The number of active origins before this frame. + vel : np.ndarray of float64, shape (n_target, 3) + The (charge weighted) selected velocities of the frame. + frame_number : int + The 1-based number of the frame. + spawn : bool + Whether a new time origin is spawned at this frame. + window_size : int + The correlation window length in frames. + + Returns + ------- + int + The number of active origins after this frame, or ``-1`` if a + new origin was to be spawned but its aggregate squared + velocity norm is zero (in which case no state was modified). + """ + cdef Py_ssize_t m = vel.shape[0] + cdef Py_ssize_t n = m * 3 + cdef const double* v = &vel[0, 0] + cdef double* buffer = &origin_vel[0, 0, 0] + cdef double norm + cdef double scalar + cdef Py_ssize_t o + cdef long long lag + + if spawn: + norm = _dot(v, v, n) + + if norm == 0.0: + return -1 + + memcpy(buffer + n_active * n, v, n * sizeof(double)) + origin_norm[n_active] = norm + origin_frame[n_active] = frame_number + n_active = n_active + 1 + + if n_active == 0: + return 0 + + for o in range(n_active): + scalar = _dot(buffer + o * n, v, n) + lag = frame_number - origin_frame[o] + corr[lag] += scalar / origin_norm[o] + + if frame_number - origin_frame[0] == window_size: + # retire the oldest origin + memmove(buffer, buffer + n, (n_active - 1) * n * sizeof(double)) + + for o in range(n_active - 1): + origin_norm[o] = origin_norm[o + 1] + origin_frame[o] = origin_frame[o + 1] + + n_active = n_active - 1 + + return n_active + + +def weight_frame( + const float[:, ::1] values, + const Py_ssize_t[::1] indices, + charges, +): + """ + Builds the (charge weighted) selected float64 velocities of a + frame from the raw float32 values of the trajectory reader. + + Bitwise identical to + ``np.asarray(values, dtype=np.float64)[indices] * charges[:, None]`` + (the float32 -> float64 cast is exact and the weighting is a + plain elementwise IEEE product). + + Parameters + ---------- + values : np.ndarray of float32, shape (n_atoms, 3) + The raw values of the frame. + indices : np.ndarray of intp, shape (n_target,) + The indices of the selected atoms. + charges : np.ndarray of float64, shape (n_target,), or None + The charges of the selected atoms, or None for no weighting. + + Returns + ------- + np.ndarray of float64, shape (n_target, 3) + The (charge weighted) selected velocities of the frame. + """ + cdef Py_ssize_t m = indices.shape[0] + + out_array = np.empty((m, 3), dtype=np.float64) + + cdef double[:, ::1] out = out_array + cdef const double[::1] q + cdef Py_ssize_t i + cdef Py_ssize_t j + cdef double q_i + + if charges is None: + for i in range(m): + j = indices[i] + out[i, 0] = values[j, 0] + out[i, 1] = values[j, 1] + out[i, 2] = values[j, 2] + else: + q = charges + + for i in range(m): + j = indices[i] + q_i = q[i] + out[i, 0] = values[j, 0] * q_i + out[i, 1] = values[j, 1] * q_i + out[i, 2] = values[j, 2] * q_i + + return out_array + + +def parse_charge_lines(lines, Py_ssize_t n_atoms): + """ + Parses the float64 charge values of 'name charge' body lines. + + Every line must consist of exactly two whitespace separated + tokens; the second token is parsed as a float64 (via the + correctly rounded C ``strtod``, bitwise identical to Python's + ``float``). + + Parameters + ---------- + lines : list of str + The atom lines of the charge frame body. + n_atoms : int + The number of atoms in the frame. + + Returns + ------- + np.ndarray of float64, shape (n_atoms,) + The charge values parsed from the lines. + + Raises + ------ + ValueError + If a line does not consist of a name token followed by + exactly one parsable charge value. + """ + charges_array = np.empty(n_atoms, dtype=np.float64) + + cdef double[::1] charges = charges_array + cdef double value + cdef int n_parsed + cdef int end + cdef Py_ssize_t i + cdef const char* c_line + cdef char c + + for i in range(n_atoms): + line_bytes = lines[i].encode('utf-8') + c_line = line_bytes + + end = -1 + n_parsed = sscanf(c_line, "%*s %lf%n", &value, &end) + + if n_parsed != 1 or end < 0: + raise ValueError("Could not parse line") + + # exactly-two-token semantics: the rest of the line has to be + # whitespace only + c = c_line[end] + while c != 0: + if not (c == 32 or (c >= 9 and c <= 13)): + raise ValueError("Could not parse line") + end = end + 1 + c = c_line[end] + + charges[i] = value + + return charges_array diff --git a/PQAnalysis/analysis/vacf/_vacf_kernel_py.py b/PQAnalysis/analysis/vacf/_vacf_kernel_py.py new file mode 100644 index 00000000..16f5f0a2 --- /dev/null +++ b/PQAnalysis/analysis/vacf/_vacf_kernel_py.py @@ -0,0 +1,167 @@ +""" +Pure Python/numpy fallback for the VACF accumulation kernels. + +This module mirrors the API of the Cython extension +:py:mod:`PQAnalysis.analysis.vacf._vacf_kernel` and is used when the +extension is not available. It is the numeric reference +implementation: :py:func:`accumulate_frame` performs the per-origin +dot products with ``np.einsum``/``np.sum`` exactly like the original +pure-numpy VACF hot loop, while the Cython kernel uses a fixed 4-way +unrolled float64 summation - the two can differ by floating point +rounding on the order of the machine epsilon. All other functions +are bitwise identical between the two implementations. +""" + +import numpy as np + + + +def accumulate_frame( + corr, + origin_vel, + origin_norm, + origin_frame, + n_active, + vel, + frame_number, + spawn, + window_size, +): + """ + Performs the per-frame update of the sliding-origin estimator. + + If ``spawn`` is set, the frame is registered as a new time origin + (velocities, aggregate squared norm and frame number are stored in + the origin bookkeeping arrays). Afterwards every active origin + ``i`` contributes ``sum_j v_j(t) . v_j(t0_i) / sum_j |v_j(t0_i)|^2`` + to the lag ``t - t0_i`` of ``corr``. The oldest origin is retired + (shifted out of the bookkeeping arrays) after it has contributed + to the lag ``window_size``. + + Parameters + ---------- + corr : np.ndarray of float64, shape (window_size + 1,) + The lag accumulator, updated in place. + origin_vel : np.ndarray of float64, shape (n_slots, n_target, 3) + The velocities of the active origins, updated in place. + origin_norm : np.ndarray of float64, shape (n_slots,) + The aggregate squared velocity norms of the active origins, + updated in place. + origin_frame : np.ndarray of int64, shape (n_slots,) + The 1-based frame numbers of the active origins, updated in + place. + n_active : int + The number of active origins before this frame. + vel : np.ndarray of float64, shape (n_target, 3) + The (charge weighted) selected velocities of the frame. + frame_number : int + The 1-based number of the frame. + spawn : bool + Whether a new time origin is spawned at this frame. + window_size : int + The correlation window length in frames. + + Returns + ------- + int + The number of active origins after this frame, or ``-1`` if a + new origin was to be spawned but its aggregate squared + velocity norm is zero (in which case no state was modified). + """ + if spawn: + norm = np.sum(vel * vel) + + if norm == 0.0: + return -1 + + origin_vel[n_active] = vel + origin_norm[n_active] = norm + origin_frame[n_active] = frame_number + n_active += 1 + + if n_active == 0: + return 0 + + scalars = np.einsum( + "omd,md->o", + origin_vel[:n_active], + vel, + ) + lags = frame_number - origin_frame[:n_active] + corr[lags] += scalars / origin_norm[:n_active] + + if lags[0] == window_size: + # retire the oldest origin + origin_vel[:n_active - 1] = origin_vel[1:n_active] + origin_norm[:n_active - 1] = origin_norm[1:n_active] + origin_frame[:n_active - 1] = origin_frame[1:n_active] + n_active -= 1 + + return n_active + + + +def weight_frame(values, indices, charges): + """ + Builds the (charge weighted) selected float64 velocities of a + frame from the raw float32 values of the trajectory reader. + + Parameters + ---------- + values : np.ndarray of float32, shape (n_atoms, 3) + The raw values of the frame. + indices : np.ndarray of intp, shape (n_target,) + The indices of the selected atoms. + charges : np.ndarray of float64, shape (n_target,), or None + The charges of the selected atoms, or None for no weighting. + + Returns + ------- + np.ndarray of float64, shape (n_target, 3) + The (charge weighted) selected velocities of the frame. + """ + vel = np.asarray(values, dtype=np.float64)[indices] + + if charges is not None: + vel = vel * charges[:, None] + + return vel + + + +def parse_charge_lines(lines, n_atoms): + """ + Parses the float64 charge values of 'name charge' body lines. + + Every line must consist of exactly two whitespace separated + tokens; the second token is parsed as a float64. + + Parameters + ---------- + lines : list of str + The atom lines of the charge frame body. + n_atoms : int + The number of atoms in the frame. + + Returns + ------- + np.ndarray of float64, shape (n_atoms,) + The charge values parsed from the lines. + + Raises + ------ + ValueError + If a line does not consist of a name token followed by + exactly one parsable charge value. + """ + charges = np.empty(n_atoms, dtype=np.float64) + + for i in range(n_atoms): + fields = lines[i].split() + + if len(fields) != 2: + raise ValueError("Could not parse line") + + charges[i] = float(fields[1]) + + return charges diff --git a/PQAnalysis/analysis/vacf/api.py b/PQAnalysis/analysis/vacf/api.py new file mode 100644 index 00000000..6f0978f3 --- /dev/null +++ b/PQAnalysis/analysis/vacf/api.py @@ -0,0 +1,226 @@ +""" +This module provides API functions for the velocity auto-correlation +function (VACF) analysis. +""" + +import numpy as np + +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import MDEngineFormat, TrajectoryFormat +from PQAnalysis.types import Np1DNumberArray +from PQAnalysis.type_checking import runtime_type_checking + +from .vacf import VACF +from .spectrum import vacf_spectrum +from .vacf_input_file_reader import VACFInputFileReader +from .vacf_output_file_writer import ( + VACFDataWriter, + VACFLogWriter, + VACFSpectrumDataWriter, + VACFWindowedDataWriter, +) +from .exceptions import VACFError + + + +@runtime_type_checking +def read_static_charges( + filename: str, + md_format: MDEngineFormat | str = MDEngineFormat.PQ, +) -> Np1DNumberArray: + """ + Reads a legacy static charge file. + + The file consists of a header line with the number of atoms, one + comment line and one "name charge" line per atom (legacy + Fluxfreqcalc chrg_file format). For the + :py:class:`~PQAnalysis.traj.formats.MDEngineFormat.QMCFC` format + the first entry is the dummy 'X' atom, which is stripped like in + the velocity trajectory. + + Parameters + ---------- + filename : str + The static charge file to read. + md_format : MDEngineFormat | str, optional + the format of the underlying trajectory. Default is "PQ". + + Returns + ------- + Np1DNumberArray + The static atomic partial charges. + + Raises + ------ + VACFError + If the file header or a charge line cannot be parsed, if the + file provides fewer charges than the header announces or if + the first atom of a QMCFC charge file is not the dummy 'X' + atom. + """ + md_format = MDEngineFormat(md_format) + + with open(filename, "r", encoding="utf-8") as file: + lines = file.readlines() + + try: + n_entries = int(lines[0].split()[0]) + except (IndexError, ValueError) as exception: + raise VACFError( + f"Could not read the number of atoms from the header of " + f"the charge file '{filename}'." + ) from exception + + # lines[1] is a comment line and is skipped like in the legacy tool + entry_lines = lines[2:2 + n_entries] + + if len(entry_lines) != n_entries: + raise VACFError( + f"The charge file '{filename}' provides only " + f"{len(entry_lines)} charge line(s), but the header " + f"announces {n_entries} atom(s)." + ) + + names = [] + charges = [] + + for line in entry_lines: + splitted_line = line.split() + + try: + names.append(splitted_line[0]) + charges.append(float(splitted_line[1])) + except (IndexError, ValueError) as exception: + raise VACFError( + f"Could not parse the charge line '{line.strip()}' of " + f"the charge file '{filename}'. Each line has to be " + "of the form 'name charge'." + ) from exception + + if md_format == MDEngineFormat.QMCFC: + if not names or names[0].upper() != "X": + raise VACFError( + f"The first atom of the QMCFC charge file '{filename}' " + "is not the dummy 'X' atom." + ) + + charges = charges[1:] + + return np.array(charges, dtype=np.float64) + + + +@runtime_type_checking +def vacf(input_file: str, md_format: MDEngineFormat | str = MDEngineFormat.PQ): + """ + Calculates the velocity auto-correlation function (VACF) using a + given input file. + + This is just a wrapper function combining the underlying classes + and functions. + + For more information on the input file keys please + visit :py:mod:`~PQAnalysis.analysis.vacf.vacf_input_file_reader`. + For more information on the exact calculation of + the VACF please visit :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + and for the spectrum + :py:func:`~PQAnalysis.analysis.vacf.spectrum.vacf_spectrum`. + + Parameters + ---------- + input_file : str + The input file. For more information on the input file + keys please visit + :py:mod:`~PQAnalysis.analysis.vacf.vacf_input_file_reader`. + md_format : MDEngineFormat | str, optional + the format of the input trajectory. Default is "PQ". + For more information on the supported formats please visit + :py:class:`~PQAnalysis.traj.formats.MDEngineFormat`. + """ + + md_format = MDEngineFormat(md_format) + + input_reader = VACFInputFileReader(input_file) + input_reader.read() + + traj_reader = TrajectoryReader( + input_reader.traj_files, + md_format=md_format + ) + + charges = None + charge_traj = None + + if input_reader.charge_file is not None: + charges = read_static_charges( + input_reader.charge_file, + md_format=md_format, + ) + + if input_reader.charge_files is not None: + charge_traj = TrajectoryReader( + input_reader.charge_files, + traj_format=TrajectoryFormat.CHARGE, + md_format=md_format, + ) + + _vacf = VACF( + traj=traj_reader, + window_size=input_reader.window, + time_step=input_reader.time_step, + target_species=input_reader.target_selection, + gap=input_reader.gap, + charges=charges, + charge_traj=charge_traj, + method=input_reader.method, + use_full_atom_info=input_reader.use_full_atom_info, + ) + + # all output writers are constructed before the run so that a + # pre-existing output file aborts before the expensive analysis + data_writer = VACFDataWriter(input_reader.out_file) + log_writer = VACFLogWriter(input_reader.log_file) + + spectrum_writer = None + windowed_writer = None + + if input_reader.spectrum_file is not None: + spectrum_writer = VACFSpectrumDataWriter(input_reader.spectrum_file) + + if input_reader.windowed_out_file is not None: + windowed_writer = VACFWindowedDataWriter( + input_reader.windowed_out_file + ) + + log_writer.write_before_run(_vacf) + + time, correlation = _vacf.run() + + data_writer.write((time, correlation)) + + if spectrum_writer is not None: + spectrum_kwargs = {} + + if input_reader.ftsize is not None: + spectrum_kwargs["ftsize"] = input_reader.ftsize + if input_reader.window_function is not None: + spectrum_kwargs["window_function"] = input_reader.window_function + if input_reader.window_param is not None: + spectrum_kwargs["window_param"] = input_reader.window_param + if input_reader.window_start is not None: + spectrum_kwargs["window_start"] = input_reader.window_start + if input_reader.window_stop is not None: + spectrum_kwargs["window_stop"] = input_reader.window_stop + + wavenumbers, amplitudes, windowed_correlation = vacf_spectrum( + time, + correlation, + **spectrum_kwargs, + ) + + spectrum_writer.write((wavenumbers, amplitudes)) + + if windowed_writer is not None: + windowed_writer.write((time, windowed_correlation)) + + log_writer.write_after_run(_vacf) diff --git a/PQAnalysis/analysis/vacf/exceptions.py b/PQAnalysis/analysis/vacf/exceptions.py new file mode 100644 index 00000000..728ceb59 --- /dev/null +++ b/PQAnalysis/analysis/vacf/exceptions.py @@ -0,0 +1,42 @@ +""" +A module containing different exceptions and warnings for +the :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` class. +""" + +from ...exceptions import PQException, PQWarning + + + +class VACFError(PQException): + + """ + Exception raised if something goes wrong during the VACF setup or calculation. + """ + + def __init__(self, message: str) -> None: + """ + Parameters + ---------- + message : str + The error message. + """ + self.message = message + super().__init__(self.message) + + + +class VACFWarning(PQWarning): + + """ + Warning raised if something goes wrong during the VACF setup or calculation. + """ + + def __init__(self, message: str) -> None: + """ + Parameters + ---------- + message : str + The error message. + """ + self.message = message + super().__init__(self.message) diff --git a/PQAnalysis/analysis/vacf/spectrum.py b/PQAnalysis/analysis/vacf/spectrum.py new file mode 100644 index 00000000..7c9b126d --- /dev/null +++ b/PQAnalysis/analysis/vacf/spectrum.py @@ -0,0 +1,299 @@ +""" +A module containing the spectrum functions of the VACF analysis. + +The functions in this module port the legacy ``ft.f`` Fourier +transformation tool (``ftvac`` ver. 2.0) of the ``thh_tools`` +collection. The auto-correlation function is optionally multiplied +with a one-sided apodization window, mirrored into an even extension +and transformed with a discrete cosine sum. All legacy conventions are +replicated exactly - see the notes of :py:func:`vacf_spectrum` for the +historical quirks that are kept for backwards compatibility. +""" + +import numpy as np + +from beartype.typing import Tuple + +from PQAnalysis.types import Np1DNumberArray, PositiveInt, PositiveReal + +from .exceptions import VACFError + +SPEED_OF_LIGHT_CM_S = 2.99792458e10 + +#: The window functions supported by :py:func:`apodization_window`. +WINDOW_FUNCTIONS = ("none", "exponential", "hann", "blackman") + +# NOTE: the legacy ft.f writes the Blackman coefficients as default-real +# (single precision) FORTRAN literals. The constants are rounded +# to single precision here to replicate the legacy binary bit for +# bit; the plain double precision values would differ by ~1e-8. +BLACKMAN_A0 = float(np.float32(0.42)) +BLACKMAN_A1 = 0.5 +BLACKMAN_A2 = float(np.float32(0.08)) + + + +def _legacy_nint(value: float) -> int: + """ + Rounds a value to the nearest integer like the FORTRAN ``nint``. + + Half-way cases are rounded away from zero instead of the banker's + rounding of the built-in ``round``. + + Parameters + ---------- + value : float + The value to round. + + Returns + ------- + int + The rounded value. + """ + if value >= 0.0: + return int(np.floor(value + 0.5)) + + return int(np.ceil(value - 0.5)) + + + +def apodization_window( + n_points: PositiveInt, + time_step: PositiveReal, + window_function: str = "none", + window_param: PositiveReal = 4.0, + window_start: PositiveReal = 0.0, + window_stop: PositiveReal = 1000.0, +) -> Np1DNumberArray: + """ + Calculates the one-sided legacy apodization window. + + The window replicates the legacy ``ft.f`` window functions exactly. + With the start index ``winsind = nint(window_start / time_step)`` + and the end index ``wineind = nint(window_stop / time_step)`` the + window factor of the one-based point ``i`` is one for + ``i <= winsind``, zero for ``i > wineind`` and otherwise: + + - ``exponential``: ``exp(-window_param * time_step * (i - 1 - winsind))`` + - ``hann``: ``(1 - cos(pi * (wineind - i) / (wineind - winsind))) / 2`` + - ``blackman``: ``0.42 + 0.5 * cos(pi * (i - 1 - winsind) / wineind) + + 0.08 * cos(2 * pi * (i - 1 - winsind) / wineind)`` + + Note that the legacy ``hann`` and ``blackman`` formulas are + non-standard: the ``hann`` window is mirrored (it rises from the + end of the window range) and the ``blackman`` denominators are + ``wineind`` instead of the window width. Both quirks are replicated + deliberately. + + Parameters + ---------- + n_points : PositiveInt + The number of points of the correlation function. + time_step : PositiveReal + The time step between two points of the correlation function. + window_function : str, optional + The window function, one of ``none``, ``exponential``, ``hann`` + and ``blackman``, by default ``none`` (all factors are one). + window_param : PositiveReal, optional + The exponential decay coefficient ``a`` of the ``exponential`` + window ``exp(-a * t)``, by default 4.0. + window_start : PositiveReal, optional + The time at which the window starts to decay, by default 0.0. + window_stop : PositiveReal, optional + The time at which the window becomes zero, by default 1000.0. + + Returns + ------- + Np1DNumberArray + The window factors for all points. + + Raises + ------ + VACFError + If the window function is unknown. + VACFError + If the window range is empty or inverted. + """ + window_function = window_function.lower() + + if window_function not in WINDOW_FUNCTIONS: + raise VACFError( + f"Unknown window function '{window_function}'. Possible " + f"window functions are: {', '.join(WINDOW_FUNCTIONS)}." + ) + + if window_function == "none": + return np.ones(n_points, dtype=np.float64) + + win_start_index = _legacy_nint(window_start / time_step) + win_stop_index = _legacy_nint(window_stop / time_step) + + if win_stop_index <= win_start_index or win_stop_index <= 0: + raise VACFError( + "The window range is empty: window_stop must resolve to a " + "larger index than window_start and must be positive." + ) + + index = np.arange(1, n_points + 1, dtype=np.float64) + + if window_function == "exponential": + factors = np.exp( + -window_param * time_step * (index - 1 - win_start_index) + ) + elif window_function == "hann": + factors = ( + 1.0 - np.cos( + np.pi * (win_stop_index - index) / + (win_stop_index - win_start_index) + ) + ) / 2.0 + else: # blackman + phase = np.pi * (index - 1 - win_start_index) / win_stop_index + factors = ( + BLACKMAN_A0 + BLACKMAN_A1 * np.cos(phase) + + BLACKMAN_A2 * np.cos(2.0 * phase) + ) + + factors = np.where(index <= win_start_index, 1.0, factors) + factors = np.where(index > win_stop_index, 0.0, factors) + + return factors + + + +def vacf_spectrum( + time: Np1DNumberArray, + correlation: Np1DNumberArray, + ftsize: PositiveInt = 2000, + window_function: str = "none", + window_param: PositiveReal = 4.0, + window_start: PositiveReal = 0.0, + window_stop: PositiveReal = 1000.0, +) -> Tuple[Np1DNumberArray, Np1DNumberArray, Np1DNumberArray]: + """ + Calculates the legacy cosine-transform spectrum of a correlation + function. + + The (optionally apodized) correlation function is zero-padded to + ``ftsize`` points and mirrored into an even extension of length + ``2 * ftsize - 1`` centered at index ``ftsize``. The spectrum is + the discrete cosine sum + + ``spectrum(l) = |0.5 * sum_k cd(k) * + cos(2 * pi * l * (k - ftsize) / (2 * ftsize - 1))|`` + + for ``l = 1..ftsize``, which is evaluated here via the equivalent + real part of the FFT of the circularly shifted even extension. + + Notes + ----- + The frequency axis replicates the historical calibration of the + legacy ``ft.f`` tool: the wavenumber spacing is calculated with a + period of ``2 * (ftsize - 1)`` points although the underlying even + extension has ``2 * ftsize - 1`` points. This slight frequency-axis + mismatch is kept deliberately so that spectra remain comparable + with the historical results. The time step is taken from the first + two entries of the time axis and is assumed to be constant, and the + last spectrum point duplicates its predecessor (a legacy + consequence of evaluating the cosine sum at ``l = ftsize``). + + Parameters + ---------- + time : Np1DNumberArray + The equidistant time axis of the correlation function in ps. + correlation : Np1DNumberArray + The correlation function values. + ftsize : PositiveInt, optional + The Fourier transform point size, by default 2000. The + correlation function is zero-padded (or truncated) to this + size. + window_function : str, optional + The apodization window, one of ``none``, ``exponential``, + ``hann`` and ``blackman``, by default ``none``. See + :py:func:`apodization_window`. + window_param : PositiveReal, optional + The exponential window decay coefficient, by default 4.0. + window_start : PositiveReal, optional + The window start time, by default 0.0. + window_stop : PositiveReal, optional + The window stop time, by default 1000.0. + + Returns + ------- + wavenumbers : Np1DNumberArray + The wavenumbers in cm^-1 for the indices ``1..ftsize``. + amplitudes : Np1DNumberArray + The spectrum amplitudes. + windowed_correlation : Np1DNumberArray + The correlation function after applying the apodization window + (equal to the input for the ``none`` window). + + Raises + ------ + VACFError + If less than two points are given, the time axis and the + correlation function have different lengths or ftsize is + smaller than two. + """ + time = np.asarray(time, dtype=np.float64) + correlation = np.asarray(correlation, dtype=np.float64) + + if time.ndim != 1 or correlation.ndim != 1: + raise VACFError( + "The time axis and the correlation function have to be " + "one-dimensional arrays." + ) + + if len(time) != len(correlation): + raise VACFError( + "The time axis and the correlation function must have the " + "same length." + ) + + if len(time) < 2: + raise VACFError( + "At least two correlation points are needed to infer the " + "time step." + ) + + if ftsize < 2: + raise VACFError("The ftsize must be at least 2.") + + time_step = time[1] - time[0] + + if time_step <= 0.0: + raise VACFError("The time axis must be strictly increasing.") + + factors = apodization_window( + len(correlation), + time_step, + window_function=window_function, + window_param=window_param, + window_start=window_start, + window_stop=window_stop, + ) + + windowed_correlation = correlation * factors + + padded = np.zeros(ftsize, dtype=np.float64) + n_points = min(len(windowed_correlation), ftsize) + padded[:n_points] = windowed_correlation[:n_points] + + # even extension [c_1 .. c_ftsize, c_ftsize .. c_2] of length + # 2 * ftsize - 1; its DFT is real and equals the legacy cosine sum + extension = np.concatenate([padded, padded[-1:0:-1]]) + transform = np.fft.rfft(extension).real + + amplitudes = np.abs(0.5 * transform) + + # the legacy loop runs to l = ftsize, which mirrors back onto the + # rfft bin ftsize - 1 of the odd-length even extension + amplitudes = np.concatenate([amplitudes[1:], amplitudes[-1:]]) + + frequency_spacing = 1.0 / ( + time_step * 1.0e-12 * 2.0 * (ftsize - 1) * SPEED_OF_LIGHT_CM_S + ) + wavenumbers = np.arange(1, ftsize + 1, dtype=np.float64) + wavenumbers = wavenumbers * frequency_spacing + + return wavenumbers, amplitudes, windowed_correlation diff --git a/PQAnalysis/analysis/vacf/vacf.py b/PQAnalysis/analysis/vacf/vacf.py new file mode 100644 index 00000000..65e9ca19 --- /dev/null +++ b/PQAnalysis/analysis/vacf/vacf.py @@ -0,0 +1,757 @@ +""" +A module containing the VACF class. The VACF class is used to +calculate the normalized velocity auto-correlation function +of a target selection of a given velocity trajectory. In the +charge-flux mode the atomic velocities are weighted with +(possibly time-dependent) atomic partial charges, which turns +the auto-correlation function into a charge-flux (current) +auto-correlation function. + +The implementation is a port of the legacy ``FreqCalc`` and +``Fluxfreqcalc`` tools of the ``thh_tools`` collection. Both +legacy tools share the identical sliding-time-origin estimator - +they only differ in the charge weighting of the velocities at +read time. +""" + +import itertools +import logging + +# 3rd party imports +import numpy as np +from beartype.typing import Generator, Tuple +from tqdm.auto import tqdm + +# local absolute imports +from PQAnalysis import config +from PQAnalysis.types import ( + Np1DNumberArray, + Np2DNumberArray, + PositiveInt, + PositiveReal, +) +from PQAnalysis.traj import Trajectory, TrajectoryFormat +from PQAnalysis.topology import Selection, SelectionCompatible +from PQAnalysis.utils import timeit_in_class +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.io import RawTrajectoryReader, TrajectoryReader +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +# local relative imports +from .exceptions import VACFError +from ._raw_charge_reader import RawChargeTrajectoryReader + +try: + from ._vacf_kernel import ( # pylint: disable=import-error + accumulate_frame, + weight_frame, + ) +except ModuleNotFoundError: + from ._vacf_kernel_py import accumulate_frame, weight_frame + + + +class VACF: + + """ + A class for calculating the normalized velocity (or charge-flux) + auto-correlation function of a target selection of a velocity + trajectory. + + The auto-correlation function is estimated with sliding time + origins. A new origin is spawned every ``gap`` frames as long as a + full correlation window of ``window_size`` frames can still be + accommodated by the trajectory, i.e. for all origin frames + ``t0 <= stop_frame`` with + ``stop_frame = floor((n_frames - window_size) / gap) * gap`` + (frames are counted starting at 1). Like in the legacy tools, a + ``stop_frame`` of exactly zero (i.e. ``n_frames == window_size``) + is reset to one, so that for ``gap == 1`` a single origin is + spawned at the first frame and only the final lag bin of the + correlation function stays zero. Each origin is normalized by + its own aggregate squared velocity norm, so that the correlation + function starts at exactly one: + + ``C(lag) = (1 / n_origins) * sum_i [sum_j v_j(t0_i + lag) . v_j(t0_i)] + / [sum_j |v_j(t0_i)|^2]`` + + where the sum over ``j`` runs over all selected atoms and the sum + over ``i`` over all time origins. This reproduces the legacy + ``FreqCalc``/``Fluxfreqcalc`` estimator exactly, including the + requirement that ``window_size`` is an integer multiple of ``gap``. + + In the charge-flux mode (legacy ``Fluxfreqcalc``) every velocity is + replaced by ``q_j(t) * v_j(t)`` at read time, either with static + charges or with a charge trajectory read in lockstep with the + velocity trajectory. + + Alternatively, a fast estimator based on the Wiener-Khinchin + theorem can be selected with ``method='fft'``. Note that this is a + slightly different (denser-origin) estimator: every frame serves as + a time origin (the ``gap`` parameter is ignored), each lag is + averaged over its actual number of origins and the normalization is + performed with the aggregate mean squared velocity instead of + per-origin norms. The default ``method='direct'`` is legacy-exact. + """ + + _window_size_default = 1000 + _gap_default = 1 + _method_default = "direct" + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + @runtime_type_checking + def __init__( + self, + traj: Trajectory | TrajectoryReader, + time_step: PositiveReal, + window_size: PositiveInt | None = None, + target_species: SelectionCompatible = None, + gap: PositiveInt | None = None, + charges: Np1DNumberArray | None = None, + charge_traj: Trajectory | TrajectoryReader | None = None, + method: str | None = None, + use_full_atom_info: bool | None = False, + ): + """ + Parameters + ---------- + traj : Trajectory | TrajectoryReader + The velocity trajectory to analyze. If a TrajectoryReader + is provided, the trajectory is read lazily frame by frame. + All frames must provide velocities. + time_step : PositiveReal + The time step between two frames in ps. It is only used to + build the time axis of the results. + window_size : PositiveInt | None, optional + The correlation window length in frames. The correlation + function is calculated for the lags ``0..window_size``, + by default None (1000). + target_species : SelectionCompatible, optional + The target species of the VACF analysis, by default None + (all atoms). + gap : PositiveInt | None, optional + The spacing between two time origins in frames, by + default None (1). ``window_size`` must be an integer + multiple of ``gap``. + charges : Np1DNumberArray | None, optional + Static atomic partial charges for the charge-flux mode, one + charge per atom of the full system, by default None. + charge_traj : Trajectory | TrajectoryReader | None, optional + A charge trajectory for the charge-flux mode, read in + lockstep with the velocity trajectory, by default None. + method : str | None, optional + The estimator to use, either ``direct`` (legacy-exact + sliding origins) or ``fft`` (denser-origin Wiener-Khinchin + estimator, ignores ``gap``), by default None (``direct``). + use_full_atom_info : bool | None, optional + Whether to use the full atom information for the target + selection, by default None (False). + + Raises + ------ + VACFError + If the time step is not positive. + VACFError + If the method is unknown. + VACFError + If both static charges and a charge trajectory are given. + VACFError + If the window size is not an integer multiple of the gap. + VACFError + If the trajectory is too short to place a single time + origin. + VACFError + If the target selection does not select any atoms. + VACFError + If the number of static charges does not match the number + of atoms. + """ + + self.window_size = ( + window_size + if window_size is not None else self._window_size_default + ) + self.time_step = time_step + self.gap = gap if gap is not None else self._gap_default + self.method = ( + method if method is not None else self._method_default + ).lower() + + if self.time_step <= 0.0: + self.logger.error( + "The time_step must be a positive real number.", + exception=VACFError, + ) + + if self.method not in ("direct", "fft"): + self.logger.error( + ( + f"Unknown method '{self.method}'. " + "Possible methods are: direct, fft." + ), + exception=VACFError, + ) + + if charges is not None and charge_traj is not None: + self.logger.error( + ( + "Only one charge source can be used for the " + "charge-flux mode: either static charges or a " + "charge trajectory." + ), + exception=VACFError, + ) + + if self.window_size % self.gap != 0: + self.logger.error( + ( + f"The window_size {self.window_size} must be an " + f"integer multiple of the gap {self.gap} for the " + "sliding-origin machinery." + ), + exception=VACFError, + ) + + if use_full_atom_info is None: + use_full_atom_info = False + self.use_full_atom_info = use_full_atom_info + + ############################################ + # Initialize trajectory iterator/generator # + ############################################ + + self._raw_reader = None + self._raw_charge_reader = None + self._charge_frame_generator = None + self._charge_value_stream = None + + if isinstance(traj, TrajectoryReader): + if traj.traj_format == TrajectoryFormat.VEL: + # additive fast path: stream the raw float32 values of + # the velocity trajectory without building an + # AtomicSystem per frame (bit-identical values) + self._raw_reader = RawTrajectoryReader( + traj.filenames, + traj_format=traj.traj_format, + md_format=traj.md_format, + ) + self.n_frames = self._raw_reader.count_frames() + self._frame_generator = None + else: + self.n_frames = sum( + traj.calculate_number_of_frames_per_file() + ) + self._frame_generator = traj.frame_generator() + elif len(traj) > 0: + self.n_frames = len(traj) + self._frame_generator = iter(traj) + else: + self.logger.error( + "Trajectory cannot be of length 0.", + exception=VACFError, + ) + + if self.method == "fft": + # every lag 0..window_size needs at least one origin + trajectory_too_short = ( + self.n_frames < self.window_size + self.gap + ) + else: + # legacy FreqCalc semantics: stop_frame == 0 is reset to 1 + # (see the stop_frame property), so a trajectory of exactly + # window_size frames still spawns one origin for gap == 1 + trajectory_too_short = self.stop_frame < self.gap + + if trajectory_too_short: + self.logger.error( + ( + f"The trajectory contains only {self.n_frames} " + "frame(s), but at least window_size + gap = " + f"{self.window_size + self.gap} frames are needed " + "to place a single time origin (or exactly " + "window_size frames for the direct method with " + "gap == 1)." + ), + exception=VACFError, + ) + + if self._raw_reader is not None: + self._first_frame = self._raw_reader.read_first_frame() + else: + self._first_frame = next(self._frame_generator) + + if traj.topology is not None: + self.topology = traj.topology + else: + self.topology = self._first_frame.topology + + ################################ + # Initialize Selection objects # + ################################ + + self.target_species = target_species + self.target_selection = Selection(target_species) + self.target_indices = self.target_selection.select( + self.topology, + self.use_full_atom_info, + ) + + if len(self.target_indices) == 0: + self.logger.error( + "The target selection does not select any atoms.", + exception=VACFError, + ) + + self._target_indices_intp = np.ascontiguousarray( + self.target_indices, + dtype=np.intp, + ) + + ########################## + # Initialize charge mode # + ########################## + + self._static_charges = None + + if charges is not None: + if len(charges) != self.n_atoms: + self.logger.error( + ( + f"The number of static charges {len(charges)} " + "does not match the number of atoms " + f"{self.n_atoms} of the system." + ), + exception=VACFError, + ) + + self._static_charges = np.asarray( + charges, + dtype=np.float64, + )[self.target_indices] + + if charge_traj is not None: + self._init_charge_traj(charge_traj) + + self.flux = charges is not None or charge_traj is not None + + # result dummy init + self.vacf = np.zeros(self.window_size + 1) + self.n_origins = 0 + + def _init_charge_traj( + self, + charge_traj: Trajectory | TrajectoryReader, + ) -> None: + """ + Sets up the lockstep charge trajectory iterator. + + Parameters + ---------- + charge_traj : Trajectory | TrajectoryReader + The charge trajectory to read in lockstep with the + velocity trajectory. + + Raises + ------ + VACFError + If the number of charge frames does not match the number + of velocity frames. + """ + if ( + isinstance(charge_traj, TrajectoryReader) and + charge_traj.traj_format == TrajectoryFormat.CHARGE + ): + # additive fast path: stream the raw float64 charge values + # without building an AtomicSystem per frame + # (bit-identical values) + self._raw_charge_reader = RawChargeTrajectoryReader( + charge_traj.filenames, + md_format=charge_traj.md_format, + ) + n_charge_frames = self._raw_charge_reader.count_frames() + elif isinstance(charge_traj, TrajectoryReader): + n_charge_frames = sum( + charge_traj.calculate_number_of_frames_per_file() + ) + self._charge_frame_generator = charge_traj.frame_generator() + else: + n_charge_frames = len(charge_traj) + self._charge_frame_generator = iter(charge_traj) + + if n_charge_frames != self.n_frames: + self.logger.error( + ( + f"The charge trajectory contains {n_charge_frames} " + "frame(s), but the velocity trajectory contains " + f"{self.n_frames} frame(s). Both trajectories have " + "to be in lockstep." + ), + exception=VACFError, + ) + + self._charge_value_stream = self._charge_values() + + @property + def n_atoms(self) -> int: + """int: The number of atoms of the VACF analysis.""" + return self.topology.n_atoms + + @property + def stop_frame(self) -> int: + """int: The last frame (1-based) at which a time origin is spawned.""" + stop_frame = ( + (self.n_frames - self.window_size) // self.gap + ) * self.gap + + # legacy FreqCalc reset (process.c): a trajectory of exactly + # window_size frames still spawns a single origin at frame 1 + # for gap == 1; the final lag bin then stays zero + if stop_frame == 0: + stop_frame = 1 + + return stop_frame + + @timeit_in_class + def run(self) -> Tuple[Np1DNumberArray, Np1DNumberArray]: + """ + Runs the VACF analysis. + + This method will display a progress bar by default. + This can be disabled by setting with_progress_bar to + False. + + Returns + ------- + time : Np1DNumberArray + The lag times ``lag * time_step`` for the lags + ``0..window_size``. + vacf : Np1DNumberArray + The normalized (charge-flux weighted) velocity + auto-correlation function; ``vacf[0]`` is exactly one for + the direct method. + """ + if self.method == "fft": + self.vacf = self._run_fft() + else: + self.vacf = self._run_direct() + + time = np.arange(self.window_size + 1) * self.time_step + + return time, self.vacf + + def _velocities(self) -> Generator[Np2DNumberArray, None, None]: + """ + Returns the (charge weighted) selected velocity stream. + + Dispatches to the raw fast-path stream if the analysis was + constructed from a velocity TrajectoryReader and to the + AtomicSystem based stream otherwise. Both streams yield + bit-identical float64 arrays. + + Returns + ------- + Generator[Np2DNumberArray, None, None] + The (charge weighted) selected velocities of all frames. + """ + if self._raw_reader is not None: + return self._raw_weighted_velocities() + + return self._weighted_velocities() + + def _raw_weighted_velocities( + self + ) -> Generator[Np2DNumberArray, None, None]: + """ + Yields the (charge weighted) selected velocities of all frames + from the raw fast-path reader. + + The raw float32 values of every frame are cast to float64, + reduced to the target selection and weighted with the frame + charges - bit-identical to the AtomicSystem based stream of + :py:meth:`_weighted_velocities`. + + Yields + ------ + Np2DNumberArray + The selected velocities of one frame with shape + ``(n_target_atoms, 3)``. + + Raises + ------ + VACFError + If a frame does not provide velocities for all atoms. + VACFError + If a charge frame does not provide charges for all atoms. + """ + n_atoms = self.n_atoms + indices = self._target_indices_intp + + for values, _cell in tqdm( + self._raw_reader.raw_frame_generator(), + total=self.n_frames, + disable=not config.with_progress_bar): + + if values.shape[0] != n_atoms: + self.logger.error( + ( + "A frame of the velocity trajectory does not " + f"provide velocities for all {n_atoms} " + "atoms. Please provide a velocity trajectory " + "(e.g. .vel files)." + ), + exception=VACFError, + ) + + yield weight_frame(values, indices, self._frame_charges()) + + def _weighted_velocities( + self + ) -> Generator[Np2DNumberArray, None, None]: + """ + Yields the (charge weighted) selected velocities of all frames. + + The velocities are accumulated in float64 even though the + underlying trajectory reader parses them as float32. + + Yields + ------ + Np2DNumberArray + The selected velocities of one frame with shape + ``(n_target_atoms, 3)``. + + Raises + ------ + VACFError + If a frame does not provide velocities for all atoms. + VACFError + If a charge frame does not provide charges for all atoms. + """ + frames = itertools.chain([self._first_frame], self._frame_generator) + + for frame in tqdm( + frames, + total=self.n_frames, + disable=not config.with_progress_bar): + vel = np.asarray(frame.vel, dtype=np.float64) + + if vel.ndim != 2 or vel.shape[0] != self.n_atoms: + self.logger.error( + ( + "A frame of the velocity trajectory does not " + f"provide velocities for all {self.n_atoms} " + "atoms. Please provide a velocity trajectory " + "(e.g. .vel files)." + ), + exception=VACFError, + ) + + vel = vel[self.target_indices] + + frame_charges = self._frame_charges() + + if frame_charges is not None: + vel = vel * frame_charges[:, None] + + yield vel + + def _frame_charges(self) -> Np1DNumberArray | None: + """ + Returns the selected charges of the current frame. + + Returns + ------- + Np1DNumberArray | None + The static charges, the charges of the next frame of the + lockstep charge trajectory or None outside the charge-flux + mode. + """ + if self._static_charges is not None: + return self._static_charges + + if self._charge_value_stream is not None: + return self._next_charges() + + return None + + def _charge_values(self) -> Generator[Np1DNumberArray, None, None]: + """ + Yields the full-system float64 charges of all charge frames. + + Yields + ------ + Np1DNumberArray + The charges of one frame of the charge trajectory. + """ + if self._raw_charge_reader is not None: + for values, _cell in self._raw_charge_reader.raw_frame_generator(): + yield values + else: + for charge_frame in self._charge_frame_generator: + yield np.asarray(charge_frame.charges, dtype=np.float64) + + def _next_charges(self) -> Np1DNumberArray: + """ + Reads the next charge frame of the lockstep charge trajectory. + + Returns + ------- + Np1DNumberArray + The selected charges of the next charge frame. + + Raises + ------ + VACFError + If the charge trajectory is exhausted or a charge frame + does not provide charges for all atoms. + """ + charge = next(self._charge_value_stream, None) + + if charge is None: + self.logger.error( + ( + "The charge trajectory provides fewer frames than " + "the velocity trajectory." + ), + exception=VACFError, + ) + + if charge.ndim != 1 or charge.shape[0] != self.n_atoms: + self.logger.error( + ( + "A frame of the charge trajectory does not provide " + f"charges for all {self.n_atoms} atoms. Please " + "provide a charge trajectory (e.g. .chrg files)." + ), + exception=VACFError, + ) + + return charge[self.target_indices] + + def _run_direct(self) -> Np1DNumberArray: + """ + Runs the legacy-exact sliding-origin estimator. + + A new time origin is spawned every ``gap`` frames up to + ``stop_frame``. Every frame each active origin ``i`` + contributes ``sum_j v_j(t) . v_j(t0_i) / sum_j |v_j(t0_i)|^2`` + to the lag ``t - t0_i``. An origin is retired after it has + contributed to the lag ``window_size``. Finally the correlation + function is divided by the total number of spawned origins. + + Returns + ------- + Np1DNumberArray + The normalized auto-correlation function for the lags + ``0..window_size``. + + Raises + ------ + VACFError + If the aggregate squared velocity norm of an origin is zero. + """ + window_size = self.window_size + gap = self.gap + stop_frame = self.stop_frame + + n_slots = window_size // gap + 1 + n_target = len(self.target_indices) + + corr = np.zeros(window_size + 1, dtype=np.float64) + origin_vel = np.zeros((n_slots, n_target, 3), dtype=np.float64) + origin_norm = np.zeros(n_slots, dtype=np.float64) + origin_frame = np.zeros(n_slots, dtype=np.longlong) + n_active = 0 + n_origins = 0 + + for frame_number, vel in enumerate(self._velocities(), 1): + + spawn = frame_number % gap == 0 and frame_number <= stop_frame + + n_active = accumulate_frame( + corr, + origin_vel, + origin_norm, + origin_frame, + n_active, + vel, + frame_number, + spawn, + window_size, + ) + + if n_active < 0: + self.logger.error( + ( + "The aggregate squared velocity norm of the " + f"time origin at frame {frame_number} is " + "zero. The normalized VACF is not defined." + ), + exception=VACFError, + ) + + if spawn: + n_origins += 1 + + self.n_origins = n_origins + + return corr / n_origins + + def _run_fft(self) -> Np1DNumberArray: + """ + Runs the Wiener-Khinchin (FFT) estimator. + + This is a denser-origin estimator: every frame serves as a time + origin, the raw aggregate auto-correlation + ``S(lag) = sum_t sum_j v_j(t) . v_j(t + lag)`` is calculated + per atom and component via FFT, each lag is divided by its + number of origins ``n_frames - lag`` and the result is + normalized with its lag-zero value, so that ``C(0) = 1``. + + In contrast to the direct method, the normalization uses the + aggregate mean squared velocity instead of per-origin norms and + the ``gap`` parameter is ignored. All velocities are kept in + memory. + + Returns + ------- + Np1DNumberArray + The normalized auto-correlation function for the lags + ``0..window_size``. + + Raises + ------ + VACFError + If the aggregate squared velocity norm of the trajectory + is zero. + """ + vel = np.stack(list(self._velocities())) + n_frames = vel.shape[0] + + n_fft = 2 * n_frames + spectrum = np.fft.rfft(vel, n=n_fft, axis=0) + autocorr = np.fft.irfft( + spectrum * np.conj(spectrum), + n=n_fft, + axis=0, + )[:self.window_size + 1] + + raw = np.sum(autocorr.real, axis=(1, 2)) + counts = n_frames - np.arange(self.window_size + 1) + raw = raw / counts + + if raw[0] == 0.0: + self.logger.error( + ( + "The aggregate squared velocity norm of the " + "trajectory is zero. The normalized VACF is " + "not defined." + ), + exception=VACFError, + ) + + self.n_origins = n_frames + + return raw / raw[0] diff --git a/PQAnalysis/analysis/vacf/vacf_input_file_reader.py b/PQAnalysis/analysis/vacf/vacf_input_file_reader.py new file mode 100644 index 00000000..2d4e5e36 --- /dev/null +++ b/PQAnalysis/analysis/vacf/vacf_input_file_reader.py @@ -0,0 +1,326 @@ +""" +A module containing a class to read input files to setup the +:py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` class. +""" +import logging + +# 3rd party imports +from beartype.typing import List + +# local imports +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.io import PQAnalysisInputFileReader as Reader +from PQAnalysis.io.input_file_reader.exceptions import InputFileError +from PQAnalysis.io.input_file_reader.pq_analysis._parse import ( + _parse_files, + _parse_positive_int, + _parse_positive_real, + _parse_string, +) +from PQAnalysis.types import PositiveInt, PositiveReal +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +# local relative imports +from .spectrum import WINDOW_FUNCTIONS + + + +class VACFInputFileReader(Reader): + + """ + A class to read input files to setup the + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` class. + """ + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + window_key = "window" + gap_key = "gap" + time_step_key = "time_step" + method_key = "method" + charge_file_key = "charge_file" + charge_files_key = "charge_files" + spectrum_file_key = "spectrum_file" + ftsize_key = "ftsize" + window_function_key = "window_function" + window_param_key = "window_param" + window_start_key = "window_start" + window_stop_key = "window_stop" + windowed_out_file_key = "windowed_out_file" + + #: List[str]: The required keys of the input file + required_keys = [ + Reader.traj_files_key, + Reader.target_selection_key, + Reader.out_file_key, + time_step_key, + ] + + #: List[str]: The optional keys of the input file + optional_keys = required_keys + [ + window_key, + gap_key, + method_key, + charge_file_key, + charge_files_key, + spectrum_file_key, + ftsize_key, + window_function_key, + window_param_key, + window_start_key, + window_stop_key, + windowed_out_file_key, + Reader.log_file_key, + Reader.use_full_atom_info_key, + ] + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename of the input file + """ + self.filename = filename + super().__init__(filename) + + def read(self): + """ + Reads the input file and parses it. + It also sets the raw_input_file and the dictionary. + It checks if all required keys are set and if all keys are known. + + Raises + ------ + InputFileError + if not all required keys are set in the input file + InputFileWarning + if unknown keys are set in the input file + InputFileError + if both a static charge file and charge trajectory + files are given + InputFileError + if a windowed output file is requested without a + spectrum file + InputFileError + if the window function is unknown + """ + super().read() + super().check_required_keys(self.required_keys) + super().check_known_keys(self.required_keys + self.optional_keys) + super().not_defined_optional_keys(self.optional_keys) + + if self.charge_file is not None and self.charge_files is not None: + self.logger.error( + ( + f"The keys '{self.charge_file_key}' and " + f"'{self.charge_files_key}' cannot be used at the " + "same time. Please provide only one charge source " + "for the charge-flux mode." + ), + exception=InputFileError, + ) + + if ( + self.windowed_out_file is not None and + self.spectrum_file is None + ): + self.logger.error( + ( + f"The key '{self.windowed_out_file_key}' can only " + "be used together with the key " + f"'{self.spectrum_file_key}'." + ), + exception=InputFileError, + ) + + if ( + self.window_function is not None and + self.window_function.lower() not in WINDOW_FUNCTIONS + ): + self.logger.error( + ( + f"Unknown window function '{self.window_function}'. " + "Possible window functions are: " + f"{', '.join(WINDOW_FUNCTIONS)}." + ), + exception=InputFileError, + ) + + @property + def window(self) -> PositiveInt | None: + """ + PositiveInt | None: The correlation window size in frames. + """ + return _parse_positive_int(self.dictionary, self.window_key) + + @property + def gap(self) -> PositiveInt | None: + """ + PositiveInt | None: The gap between two time origins in frames. + """ + return _parse_positive_int(self.dictionary, self.gap_key) + + @property + def time_step(self) -> PositiveReal | None: + """ + PositiveReal | None: The time step between two frames in ps. + """ + return _parse_positive_real(self.dictionary, self.time_step_key) + + @property + def method(self) -> str | None: + """ + str | None: The VACF estimator method (direct or fft). + """ + return _parse_string(self.dictionary, self.method_key) + + @property + def charge_file(self) -> str | None: + """ + str | None: The static charge file for the charge-flux mode. + """ + return _parse_string(self.dictionary, self.charge_file_key) + + @property + def charge_files(self) -> List[str] | None: + """ + List[str] | None: The charge trajectory files for the charge-flux mode. + """ + return _parse_files(self.dictionary, self.charge_files_key) + + @property + def spectrum_file(self) -> str | None: + """ + str | None: The output file for the VACF spectrum. + """ + return _parse_string(self.dictionary, self.spectrum_file_key) + + @property + def ftsize(self) -> PositiveInt | None: + """ + PositiveInt | None: The Fourier transform point size. + """ + return _parse_positive_int(self.dictionary, self.ftsize_key) + + @property + def window_function(self) -> str | None: + """ + str | None: The apodization window function of the spectrum. + """ + return _parse_string(self.dictionary, self.window_function_key) + + @property + def window_param(self) -> PositiveReal | None: + """ + PositiveReal | None: The exponential window decay coefficient. + """ + return _parse_positive_real(self.dictionary, self.window_param_key) + + @property + def window_start(self) -> PositiveReal | None: + """ + PositiveReal | None: The window start time in ps. + """ + return _parse_positive_real(self.dictionary, self.window_start_key) + + @property + def window_stop(self) -> PositiveReal | None: + """ + PositiveReal | None: The window stop time in ps. + """ + return _parse_positive_real(self.dictionary, self.window_stop_key) + + @property + def windowed_out_file(self) -> str | None: + """ + str | None: The output file for the windowed correlation function. + """ + return _parse_string(self.dictionary, self.windowed_out_file_key) + + + +input_keys_documentation = f""" + +For the VACF analysis input file several keys are available of which some are required and some are optional. For more details on the grammar and syntax of the input file see :ref:`inputFile`. + +.. list-table:: Required keys + :header-rows: 1 + + * - Key + - Value + * - {Reader.traj_files_key} + - The velocity trajectory files to read. This can be a single + file or a list of files. + * - {Reader.target_selection_key} + - The selection string to select the atoms for which the VACF is + calculated. For more details see + :py:class:`~PQAnalysis.topology.selection.Selection`. + * - {Reader.out_file_key} + - The output file to write the VACF data to. It must not exist yet. + * - {VACFInputFileReader.time_step_key} + - The time step between two frames in ps. It is used to build the + time axis of the VACF and the frequency axis of the spectrum. + +.. list-table:: Optional keys + :header-rows: 1 + + * - Key + - Value + * - {VACFInputFileReader.window_key} + - The correlation window size in frames. Default is 1000. + It has to be an integer multiple of the gap. + * - {VACFInputFileReader.gap_key} + - The gap between two time origins in frames. Default is 1. + * - {VACFInputFileReader.method_key} + - The VACF estimator, either "direct" (legacy-exact sliding + origins, default) or "fft" (denser-origin Wiener-Khinchin + estimator, ignores the gap). + * - {VACFInputFileReader.charge_file_key} + - A static charge file for the charge-flux mode. The file + consists of a header line with the number of atoms, a comment + line and one "name charge" line per atom. + * - {VACFInputFileReader.charge_files_key} + - Charge trajectory files (.chrg) for the charge-flux mode with + time-dependent charges, read in lockstep with the velocity + trajectory. Cannot be combined with + {VACFInputFileReader.charge_file_key}. + * - {VACFInputFileReader.spectrum_file_key} + - The output file for the cosine-transform spectrum of the VACF. + If not given, no spectrum is calculated. + * - {VACFInputFileReader.ftsize_key} + - The Fourier transform point size of the spectrum. The VACF is + zero-padded (or truncated) to this size. Default is 2000. + * - {VACFInputFileReader.window_function_key} + - The apodization window function of the spectrum, one of + "none", "exponential", "hann" and "blackman". Default is + "none". + * - {VACFInputFileReader.window_param_key} + - The decay coefficient of the exponential window. Default is 4.0. + * - {VACFInputFileReader.window_start_key} + - The time in ps at which the apodization window starts to + decay. Default is 0.0. + * - {VACFInputFileReader.window_stop_key} + - The time in ps at which the apodization window becomes zero. + Default is 1000.0. + * - {VACFInputFileReader.windowed_out_file_key} + - The output file for the windowed VACF. Can only be used + together with {VACFInputFileReader.spectrum_file_key}. + * - {Reader.log_file_key} + - The log file to write the log information to. + * - {Reader.use_full_atom_info_key} + - Whether to use full atom information for the selections. + +Note +---- +The VACF output file follows the legacy FreqCalc format: one row per +lag with the columns lag time in ps and normalized VACF. The spectrum +output file follows the legacy ft.f format: one row per frequency +index with the columns wavenumber in cm^-1 and amplitude. + +""" + +VACFInputFileReader.__doc__ += input_keys_documentation diff --git a/PQAnalysis/analysis/vacf/vacf_output_file_writer.py b/PQAnalysis/analysis/vacf/vacf_output_file_writer.py new file mode 100644 index 00000000..0339a4e8 --- /dev/null +++ b/PQAnalysis/analysis/vacf/vacf_output_file_writer.py @@ -0,0 +1,263 @@ +""" +A module containing the classes for writing related to an +:py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` analysis to a file. +""" + +# 3rd party imports +from beartype.typing import Tuple + +# local imports +from PQAnalysis.types import Np1DNumberArray +from PQAnalysis.io import BaseWriter +from PQAnalysis.utils import __header__ +from PQAnalysis.type_checking import runtime_type_checking + +from .vacf import VACF + + + +class VACFDataWriter(BaseWriter): + + """ + Class for writing the data of an + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + analysis to a file. + + The output file is written in the legacy FreqCalc/Fluxfreqcalc + format: one row per lag with the columns lag time in ps and + normalized VACF. + """ + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename to write to + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write(self, data: Tuple[Np1DNumberArray, Np1DNumberArray]): + """ + Writes the data to the file. + + Parameters + ---------- + data : Tuple[Np1DNumberArray, Np1DNumberArray] + the time axis and correlation function output from the + VACF.run() method + """ + super().open() + + time, correlation = data + + for time_value, correlation_value in zip(time, correlation): + print( + f"{time_value:10.6f} {correlation_value:12.8f}", + file=self.file + ) + + super().close() + + + +class VACFSpectrumDataWriter(BaseWriter): + + """ + Class for writing the spectrum of an + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + analysis to a file. + + The output file is written in the legacy ft.f format: one row per + frequency index with the columns wavenumber in cm^-1 and amplitude. + """ + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename to write to + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write(self, data: Tuple[Np1DNumberArray, Np1DNumberArray]): + """ + Writes the spectrum to the file. + + Parameters + ---------- + data : Tuple[Np1DNumberArray, Np1DNumberArray] + the wavenumbers and amplitudes output from the + :py:func:`~PQAnalysis.analysis.vacf.spectrum.vacf_spectrum` + function + """ + super().open() + + wavenumbers, amplitudes = data + + for wavenumber, amplitude in zip(wavenumbers, amplitudes): + print( + f"{wavenumber:13.7f} {amplitude:14.10f}", + file=self.file + ) + + super().close() + + + +class VACFWindowedDataWriter(BaseWriter): + + """ + Class for writing the windowed (apodized) correlation function of + an :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` analysis to a + file. + + The output file is written in the legacy ft.f windowfile format: + one row per lag with the columns lag time in ps and windowed + correlation function. + """ + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + the filename to write to + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write(self, data: Tuple[Np1DNumberArray, Np1DNumberArray]): + """ + Writes the windowed correlation function to the file. + + Parameters + ---------- + data : Tuple[Np1DNumberArray, Np1DNumberArray] + the time axis and the windowed correlation function output + from the + :py:func:`~PQAnalysis.analysis.vacf.spectrum.vacf_spectrum` + function + """ + super().open() + + time, correlation = data + + for time_value, correlation_value in zip(time, correlation): + print( + f"{time_value:9.4f} {correlation_value:14.10f}", + file=self.file + ) + + super().close() + + + +class VACFLogWriter(BaseWriter): + + """ + Class for writing the log (setup parameters) of an + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` analysis + to a file. + """ + + @runtime_type_checking + def __init__(self, filename: str | None) -> None: + """ + Parameters + ---------- + filename : str | None + the filename to write to if None, the output is printed to stdout + """ + self.filename = filename + super().__init__(filename) + + @runtime_type_checking + def write_before_run(self, vacf: VACF): + """ + Writes the log before the + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + run() method is called. + + This includes the general header of PQAnalysis + and the most important setup parameters of the + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` analysis. + + Parameters + ---------- + vacf : VACF + the VACF analysis object + """ + super().open() + + if self.filename is not None: + print(__header__, file=self.file) + print(file=self.file) + + if vacf.flux: + print("Charge-flux auto-correlation calculation:", + file=self.file) + else: + print("VACF calculation:", file=self.file) + print(file=self.file) + + # fmt: off + print(f" Window size (frames): {vacf.window_size}", file=self.file) + print(f" Origin gap (frames): {vacf.gap}", file=self.file) + print(f" Stop frame: {vacf.stop_frame}", file=self.file) + print(f" Time step: {vacf.time_step} ps", file=self.file) + print(f" Method: {vacf.method}", file=self.file) + print(file=self.file) + # fmt: on + + print(f" Number of frames: {vacf.n_frames}", file=self.file) + print(f" Number of atoms: {vacf.n_atoms}", file=self.file) + print(file=self.file) + + print( + " Target selection:", + vacf.target_selection, + file=self.file + ) + print( + " total number of atoms in target selection:", + len(vacf.target_indices), + file=self.file + ) + print(file=self.file) + + super().close() + + @runtime_type_checking + def write_after_run(self, vacf: VACF): + """ + Writes the log after the + :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + run() method is called. + + This includes the number of time origins and the elapsed time + of the :py:class:`~PQAnalysis.analysis.vacf.vacf.VACF` + run() method. + + Parameters + ---------- + vacf : VACF + the VACF analysis object + """ + super().open() + + print(f" Number of origins: {vacf.n_origins}", file=self.file) + print(file=self.file) + + print(f" Elapsed time: {vacf.elapsed_time} s", file=self.file) + + super().close() diff --git a/PQAnalysis/analysis/vibrational/__init__.py b/PQAnalysis/analysis/vibrational/__init__.py new file mode 100644 index 00000000..974ae7c4 --- /dev/null +++ b/PQAnalysis/analysis/vibrational/__init__.py @@ -0,0 +1,29 @@ +""" +Vibrational analysis tools. +""" + +from .api import vibrations +from .vibrational_analysis import ( + VibrationalAnalysisResult, + calculate, + read_hessian_file, + select_mode_indices, + write_calculate_output, + write_extxyz_modes, + write_normal_modes, + write_xyz_modes, +) +from .vibrational_input_file_reader import VibrationalAnalysisInputFileReader + +__all__ = [ + "VibrationalAnalysisInputFileReader", + "VibrationalAnalysisResult", + "calculate", + "read_hessian_file", + "select_mode_indices", + "vibrations", + "write_calculate_output", + "write_extxyz_modes", + "write_normal_modes", + "write_xyz_modes", +] diff --git a/PQAnalysis/analysis/vibrational/api.py b/PQAnalysis/analysis/vibrational/api.py new file mode 100644 index 00000000..7349a8ef --- /dev/null +++ b/PQAnalysis/analysis/vibrational/api.py @@ -0,0 +1,152 @@ +""" +API functions for vibrational analysis. +""" + +from pathlib import Path + +import numpy as np + +from PQAnalysis.io import MoldescriptorReader, RestartFileReader, read_trajectory +from PQAnalysis.type_checking import runtime_type_checking + +from .exceptions import VibrationalAnalysisError +from .vibrational_analysis import ( + calculate_from_system, + read_hessian_file, + write_calculate_output, + write_extxyz_modes, + write_normal_modes, + write_xyz_modes, +) +from .vibrational_input_file_reader import VibrationalAnalysisInputFileReader + + + +@runtime_type_checking +def vibrations(input_file: str) -> None: + """ + Run vibrational analysis from an input file. + """ + input_reader = VibrationalAnalysisInputFileReader(input_file) + input_reader.read() + + system = _read_structure_file( + input_reader.structure_file, + input_reader.moldescriptor_file, + ) + hessian = read_hessian_file(input_reader.hessian_file) + atom_charges = _read_atom_charges(system, input_reader.moldescriptor_file) + + result = calculate_from_system( + system, + hessian, + unit=input_reader.unit, + hessian_sign=input_reader.hessian_sign, + atom_charges=atom_charges, + ) + + write_calculate_output(result, input_reader.out_file) + + if input_reader.normal_modes_file is not None: + write_normal_modes(result.normal_modes, input_reader.normal_modes_file) + + if input_reader.modes_prefix is not None: + atom_names = [atom.name for atom in system.atoms] + write_xyz_modes( + result.normal_modes, + system.pos, + atom_names, + filename=input_reader.modes_prefix, + wavenumbers=result.wavenumbers, + modes=input_reader.modes, + n_frames=input_reader.modes_frames, + amplitude=input_reader.modes_amplitude, + temperature=input_reader.modes_temperature, + threshold=input_reader.modes_threshold, + ) + + if input_reader.modes_file is not None: + atom_names = [atom.name for atom in system.atoms] + write_extxyz_modes( + result.normal_modes, + system.pos, + atom_names, + filename=input_reader.modes_file, + wavenumbers=result.wavenumbers, + intensities=result.intensities, + modes=input_reader.modes, + threshold=input_reader.modes_threshold, + ) + + + +def _read_structure_file( + structure_file: str, + moldescriptor_file: str | None = None, +): + """ + Read a restart file or single-frame XYZ structure file. + """ + if Path(structure_file).suffix.lower() == ".xyz": + trajectory = read_trajectory(structure_file) + + if len(trajectory) != 1: + raise VibrationalAnalysisError( + "XYZ structure input must contain exactly one frame." + ) + + return trajectory[0] + + return RestartFileReader( + structure_file, + moldescriptor_filename=moldescriptor_file, + ).read() + + + +def _read_atom_charges( + system, moldescriptor_file: str | None +) -> np.ndarray | None: + """ + Read atom charges from a moldescriptor file if one was provided. + """ + if moldescriptor_file is None: + return None + + residues = MoldescriptorReader(moldescriptor_file).read() + + if Path(moldescriptor_file).is_file() and not system.topology.residues: + if len(residues) != 1: + raise VibrationalAnalysisError( + "XYZ input requires a moldescriptor file with exactly one molecule type." + ) + + residue = residues[0] + if residue.n_atoms != system.n_atoms: + raise VibrationalAnalysisError( + "The moldescriptor molecule size must match the XYZ structure." + ) + + return np.asarray(residue.partial_charges, dtype=float) + + charges = np.zeros(system.n_atoms, dtype=float) + residue_by_id = {residue.id: residue for residue in residues} + + for residue_id in np.unique(system.topology.residue_ids): + if residue_id not in residue_by_id: + raise VibrationalAnalysisError( + f"Residue id {residue_id} has no moldescriptor entry." + ) + + for residue, atom_indices in zip( + system.topology.residues, + system.topology.residue_atom_indices, + ): + if residue.n_atoms != len(atom_indices): + raise VibrationalAnalysisError( + "The moldescriptor residue size does not match the structure." + ) + + charges[atom_indices] = residue.partial_charges + + return charges diff --git a/PQAnalysis/analysis/vibrational/exceptions.py b/PQAnalysis/analysis/vibrational/exceptions.py new file mode 100644 index 00000000..1ce5a9c6 --- /dev/null +++ b/PQAnalysis/analysis/vibrational/exceptions.py @@ -0,0 +1,13 @@ +""" +Exceptions for vibrational analysis. +""" + +from PQAnalysis.exceptions import PQException + + + +class VibrationalAnalysisError(PQException): + + """ + Exception raised for vibrational analysis errors. + """ diff --git a/PQAnalysis/analysis/vibrational/vibrational_analysis.py b/PQAnalysis/analysis/vibrational/vibrational_analysis.py new file mode 100644 index 00000000..bb26fdb7 --- /dev/null +++ b/PQAnalysis/analysis/vibrational/vibrational_analysis.py @@ -0,0 +1,919 @@ +""" +Numerical routines and file writers for vibrational analysis. +""" + +from contextlib import contextmanager +from dataclasses import dataclass +import sys +from pathlib import Path + +import numpy as np + +from PQAnalysis.atomic_system import AtomicSystem + +from .exceptions import VibrationalAnalysisError + +LINEAR_ROTATION_RTOL = 1e-6 +SPEED_OF_LIGHT_CM_S = 2.99792458e10 +BOLTZMANN_EV_K = 8.617333262145e-5 +WAVENUMBER_TO_EV = 1.2398419843320026e-4 +MODE_THRESHOLD_CM = 1.0e-8 + + + +@contextmanager +def _output_stream(filename: str | None): + """ + Open a named output file or yield stdout. + """ + if filename is None: + yield sys.stdout + return + + with open(filename, "w", encoding="utf-8") as file: + yield file + + + +@dataclass(frozen=True) +class VibrationalAnalysisResult: + + """ + Result container for a vibrational analysis. + """ + + wavenumbers: np.ndarray + force_constants: np.ndarray + reduced_masses: np.ndarray + normal_modes: np.ndarray + intensities: np.ndarray | None = None + + + +def read_hessian_file(filename: str) -> np.ndarray: + """ + Read a plain square Hessian matrix. + + Parameters + ---------- + filename : str + The Hessian file. + + Returns + ------- + np.ndarray + The square Hessian matrix. + """ + path = Path(filename) + if not path.is_file(): + raise VibrationalAnalysisError(f"Hessian file '{filename}' not found.") + + try: + hessian_data = np.loadtxt(path, dtype=float) + except ValueError as exception: + raise VibrationalAnalysisError( + f"Hessian file '{filename}' contains non-numeric data." + ) from exception + + hessian = np.atleast_2d(hessian_data) + + if hessian.shape[0] != hessian.shape[1]: + raise VibrationalAnalysisError( + f"Hessian matrix must be square, got shape {hessian.shape}." + ) + + return hessian + + + +def calculate( + atom_masses: np.ndarray, + atom_coords: np.ndarray, + hessian: np.ndarray, + atom_charges: np.ndarray | None = None, + unit: str = "kcal", + hessian_sign: str | float = "auto", +) -> VibrationalAnalysisResult: + """ + Calculate wavenumbers, force constants, reduced masses and normal modes. + + Parameters + ---------- + atom_masses : np.ndarray + Atomic masses in amu. + atom_coords : np.ndarray + Atomic coordinates with shape ``(n_atoms, 3)``. + hessian : np.ndarray + Cartesian Hessian with shape ``(3 * n_atoms, 3 * n_atoms)``. + atom_charges : np.ndarray | None, optional + Atomic charges used to calculate IR intensities, by default None. + unit : str, optional + Hessian energy unit. Supported values are ``kcal``, ``hartree`` and + ``ev``, by default ``kcal``. + hessian_sign : str | float, optional + Hessian sign convention. Supported values are ``auto``, ``positive``, + ``negative``, ``1`` and ``-1``, by default ``auto``. + """ + atom_masses = np.asarray(atom_masses, dtype=float) + atom_coords = np.asarray(atom_coords, dtype=float) + hessian = np.asarray(hessian, dtype=float) + + _check_shapes(atom_masses, atom_coords, hessian) + + sign_factor = hessian_sign_factor( + atom_coords, + atom_masses, + hessian, + hessian_sign, + ) + hessian_mw = mass_weighted_hessian( + hessian, + atom_masses, + sign=sign_factor, + ) + + eigenvalues, normal_modes, normalization = internal_coordinates( + atom_coords, + atom_masses, + hessian_mw, + ) + + wavenumbers, omega = wavenumber(eigenvalues, unit=unit) + reduced_masses = reduced_mass(normalization) + force_constants = force_constant(omega, reduced_masses) + + intensities = None + if atom_charges is not None: + atom_charges = np.asarray(atom_charges, dtype=float) + if atom_charges.shape != atom_masses.shape: + raise VibrationalAnalysisError( + "The number of atom charges must match the number of atoms." + ) + + intensities = infrared_intensity( + normal_modes, + atom_charges, + reduced_masses, + ) + + return VibrationalAnalysisResult( + wavenumbers=wavenumbers, + intensities=intensities, + force_constants=force_constants, + reduced_masses=reduced_masses, + normal_modes=normal_modes, + ) + + + +def calculate_from_system( + system: AtomicSystem, + hessian: np.ndarray, + unit: str = "kcal", + hessian_sign: str | float = "auto", + atom_charges: np.ndarray | None = None, +) -> VibrationalAnalysisResult: + """ + Calculate vibrational data from an AtomicSystem and Hessian. + """ + return calculate( + system.atomic_masses, + system.pos, + hessian, + atom_charges=atom_charges, + unit=unit, + hessian_sign=hessian_sign, + ) + + + +def _check_shapes( + atom_masses: np.ndarray, + atom_coords: np.ndarray, + hessian: np.ndarray, +) -> None: + """ + Validate array shapes before running the numerical analysis. + """ + if atom_masses.ndim != 1: + raise VibrationalAnalysisError( + "Atom masses must be a one-dimensional array." + ) + + if atom_coords.shape != (atom_masses.size, 3): + raise VibrationalAnalysisError( + "Atom coordinates must have shape (n_atoms, 3)." + ) + + expected_hessian_shape = (3 * atom_masses.size, 3 * atom_masses.size) + if hessian.shape != expected_hessian_shape: + raise VibrationalAnalysisError( + "Hessian shape must be " + f"{expected_hessian_shape}, got {hessian.shape}." + ) + + + +def center_to_com( + atom_coords: np.ndarray, atom_masses: np.ndarray +) -> np.ndarray: + """ + Translate coordinates to the center of mass. + """ + center_of_mass = np.sum(atom_coords * atom_masses[:, None], axis=0) + center_of_mass = center_of_mass / np.sum(atom_masses) + + return atom_coords - center_of_mass + + + +def inertia_tensor( + atom_coords: np.ndarray, atom_masses: np.ndarray +) -> np.ndarray: + """ + Calculate the inertia tensor. + """ + x = atom_coords[:, 0] + y = atom_coords[:, 1] + z = atom_coords[:, 2] + + i_xx = np.sum(atom_masses * (y**2 + z**2)) + i_yy = np.sum(atom_masses * (x**2 + z**2)) + i_zz = np.sum(atom_masses * (x**2 + y**2)) + i_xy = -np.sum(atom_masses * (x * y)) + i_xz = -np.sum(atom_masses * (x * z)) + i_yz = -np.sum(atom_masses * (y * z)) + + return np.array( + [ + [i_xx, i_xy, i_xz], + [i_xy, i_yy, i_yz], + [i_xz, i_yz, i_zz], + ], + dtype=float, + ) + + + +def translational_modes(atom_masses: np.ndarray) -> np.ndarray: + """ + Calculate normalized translational modes. + """ + translation = np.zeros((3 * atom_masses.size, 3), dtype=float) + + for atom_index, mass in enumerate(atom_masses): + start = 3 * atom_index + translation[start:start + 3, :] = np.sqrt(mass) * np.eye(3) + + norms = np.sqrt(np.sum(translation**2, axis=0)) + return translation / norms + + + +def rotational_modes( + atom_coords: np.ndarray, atom_masses: np.ndarray +) -> np.ndarray: + """ + Calculate normalized rotational modes. + """ + atom_coords_cm = center_to_com(atom_coords, atom_masses) + _, eigenvectors = np.linalg.eigh(inertia_tensor(atom_coords, atom_masses)) + + x_frame = eigenvectors + p_frame = atom_coords_cm @ eigenvectors + sqrt_masses = np.sqrt(atom_masses)[:, None] + + rotation = np.zeros((atom_coords.shape[0] * 3, 3), dtype=float) + + rotation[:, 0] = ( + ( + p_frame[:, 1, None] * x_frame[2, :][None, :] - + p_frame[:, 2, None] * x_frame[1, :][None, :] + ) * sqrt_masses + ).ravel(order="F") + rotation[:, 1] = ( + ( + p_frame[:, 2, None] * x_frame[0, :][None, :] - + p_frame[:, 0, None] * x_frame[2, :][None, :] + ) * sqrt_masses + ).ravel(order="F") + rotation[:, 2] = ( + ( + p_frame[:, 0, None] * x_frame[1, :][None, :] - + p_frame[:, 1, None] * x_frame[0, :][None, :] + ) * sqrt_masses + ).ravel(order="F") + + rotation_norms = np.sqrt(np.sum(rotation**2, axis=0)) + threshold = LINEAR_ROTATION_RTOL * max(1.0, float(np.max(rotation_norms))) + keep = rotation_norms > threshold + + rotation = rotation[:, keep] + + if rotation.size: + rotation = rotation / rotation_norms[keep] + + return rotation + + + +def transformation_matrix( + atom_coords: np.ndarray, atom_masses: np.ndarray +) -> np.ndarray: + """ + Calculate the external-mode transformation matrix. + """ + return np.hstack( + [ + translational_modes(atom_masses), + rotational_modes(atom_coords, atom_masses), + ] + ) + + + +def internal_subspace( + atom_coords: np.ndarray, atom_masses: np.ndarray +) -> np.ndarray: + """ + Calculate the internal-coordinate subspace. + """ + transformation = transformation_matrix(atom_coords, atom_masses) + total_modes = atom_coords.shape[0] * 3 + external_modes = transformation.shape[1] + + if external_modes >= total_modes: + return np.zeros((total_modes, 0), dtype=float) + + q_matrix, _ = np.linalg.qr(transformation, mode="complete") + return q_matrix[:, external_modes:total_modes] + + + +def internal_coordinates( + atom_coords: np.ndarray, + atom_masses: np.ndarray, + hessian_mw: np.ndarray, +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Calculate normal modes from a mass-weighted Hessian. + """ + transformation = transformation_matrix(atom_coords, atom_masses) + transformation, _ = np.linalg.qr(transformation, mode="complete") + + internal_hessian = transformation.T @ hessian_mw @ transformation + internal_hessian = symmetrize_addition(internal_hessian) + + eigenvalues, eigenvectors = np.linalg.eigh(internal_hessian) + + mass_factors = np.repeat(1.0 / np.sqrt(atom_masses), 3) + mass_matrix = np.diag(mass_factors) + eigenvectors_internal = mass_matrix @ transformation @ eigenvectors + + normalization = np.sqrt(1.0 / np.sum(eigenvectors_internal**2, axis=0)) + normal_modes = eigenvectors_internal * normalization[None, :] + + return eigenvalues, normal_modes, normalization + + + +def symmetrize_addition(hessian: np.ndarray) -> np.ndarray: + """ + Symmetrize a matrix by averaging it with its transpose. + """ + return (hessian + hessian.T) / 2.0 + + + +def masses_matrix(atom_masses: np.ndarray) -> np.ndarray: + """ + Create the mass-scaling matrix sqrt(m_i * m_j). + """ + masses_repeat = np.repeat(atom_masses, 3) + return np.sqrt(np.outer(masses_repeat, masses_repeat)) + + + +def mass_weighted_hessian( + hessian: np.ndarray, + atom_masses: np.ndarray, + sign: float = 1.0, +) -> np.ndarray: + """ + Symmetrize and mass-weight a Hessian. + """ + hessian = symmetrize_addition(float(sign) * hessian) + return hessian / masses_matrix(atom_masses) + + + +def hessian_sign_factor( + atom_coords: np.ndarray, + atom_masses: np.ndarray, + hessian: np.ndarray, + hessian_sign: str | float, +) -> float: + """ + Resolve a Hessian sign setting into a numeric factor. + """ + if isinstance(hessian_sign, (int, float)): + if hessian_sign in {1, -1}: + return float(hessian_sign) + else: + value = hessian_sign.lower() + if value == "positive": + return 1.0 + if value == "negative": + return -1.0 + if value == "auto": + hessian_mw = mass_weighted_hessian(hessian, atom_masses, sign=1.0) + subspace = internal_subspace(atom_coords, atom_masses) + + if subspace.shape[1] == 0: + return 1.0 + + eigenvalues = np.linalg.eigvalsh( + subspace.T @ hessian_mw @ subspace + ) + threshold = np.sqrt(np.finfo(float).eps) + threshold *= max(1.0, float(np.max(np.abs(eigenvalues)))) + positive_count = np.count_nonzero(eigenvalues > threshold) + negative_count = np.count_nonzero(eigenvalues < -threshold) + + if negative_count > positive_count: + return -1.0 + if positive_count > negative_count: + return 1.0 + + positive_weight = np.sum( + np.abs(eigenvalues[eigenvalues > threshold]) + ) + negative_weight = np.sum( + np.abs(eigenvalues[eigenvalues < -threshold]) + ) + return -1.0 if negative_weight > positive_weight else 1.0 + + raise VibrationalAnalysisError( + "hessian_sign must be auto, positive, negative, 1, or -1." + ) + + + +def wavenumber(eigenvalues: np.ndarray, + unit: str = "kcal") -> tuple[np.ndarray, np.ndarray]: + """ + Convert Hessian eigenvalues to wavenumbers. + """ + unit = unit.lower() + + if unit == "kcal": + factor = 4184.0 * 1.0e23 + elif unit == "hartree": + factor = 2625500.2 * (0.188972598857892e11**2) * 1000.0 + elif unit == "ev": + factor = 96485.307499 * 1.0e23 + else: + raise VibrationalAnalysisError( + "Invalid unit. Options are kcal, hartree and ev." + ) + + omega = signed_sqrt(eigenvalues * factor) + wavenumbers = omega / (2.0 * np.pi * SPEED_OF_LIGHT_CM_S) + + return wavenumbers, omega + + + +def signed_sqrt(values: np.ndarray) -> np.ndarray: + """ + Calculate a sign-preserving square root. + """ + return np.sign(values) * np.sqrt(np.abs(values)) + + + +def reduced_mass(normalization: np.ndarray) -> np.ndarray: + """ + Calculate reduced masses from normal-mode normalization factors. + """ + return normalization**2 + + + +def force_constant( + omega: np.ndarray, reduced_masses: np.ndarray +) -> np.ndarray: + """ + Calculate force constants in mdyn A^-1. + """ + return omega**2 * reduced_masses / 6.022 / 1.0e28 + + + +def infrared_intensity( + normal_modes: np.ndarray, + atom_charges: np.ndarray, + reduced_masses: np.ndarray, +) -> np.ndarray: + """ + Calculate infrared intensities in km mol^-1. + """ + intensities = np.zeros(normal_modes.shape[1], dtype=float) + + for index in range(normal_modes.shape[1]): + mode = normal_modes[:, index].reshape((-1, 3)) + intensity = np.sum( + ( + np.sum(mode * atom_charges[:, None], axis=0) / 0.2081943 / + np.linalg.norm(mode) + )**2 / reduced_masses[index] * 42.2561 + ) + intensities[index] = intensity + + return intensities + + + +def write_calculate_output( + result: VibrationalAnalysisResult, + filename: str | None = None, +) -> None: + """ + Write the tabular vibrational analysis output. + """ + with _output_stream(filename) as file: + if result.intensities is None: + print( + "# Wavenumbers (cm-1) Force constants (mdyn A^-1) " + "Reduced masses (amu)", + file=file, + ) + for wavenumber_value, force_const, reduced_mass_value in zip( + result.wavenumbers, + result.force_constants, + result.reduced_masses, + ): + print( + f"{wavenumber_value:<8.8e}\t" + f"{force_const:<8.8e}\t" + f"{reduced_mass_value:<8.8e}", + file=file, + ) + else: + print( + "# Wavenumbers (cm-1) Intensities (km mol-1) " + "Force constants (mdyn A^-1) Reduced masses (amu)", + file=file, + ) + for ( + wavenumber_value, + intensity, + force_const, + reduced_mass_value, + ) in zip( + result.wavenumbers, + result.intensities, + result.force_constants, + result.reduced_masses, + ): + print( + f"{wavenumber_value:<8.8e}\t" + f"{intensity:<8.8e}\t" + f"{force_const:<8.8e}\t" + f"{reduced_mass_value:<8.8e}", + file=file, + ) + + + +def write_normal_modes( + normal_modes: np.ndarray, + filename: str | None = None, +) -> None: + """ + Write normal modes in matrix form. + """ + with _output_stream(filename) as file: + for row in normal_modes: + print(" ".join(str(value) for value in row), file=file) + + + +def select_mode_indices( + wavenumbers: np.ndarray, + modes: str | list[int] | None = "all", + threshold: float = MODE_THRESHOLD_CM, +) -> list[int]: + """ + Select mode indices from a user-facing one-based mode selection. + """ + wavenumbers = np.asarray(wavenumbers, dtype=float) + n_modes = wavenumbers.size + + if modes is None or modes == "all": + return list(range(n_modes)) + + if isinstance(modes, str): + modes = modes.lower() + if modes == "nonzero": + return [ + index for index, value in enumerate(wavenumbers) + if abs(value) > threshold + ] + if modes == "positive": + return [ + index for index, value in enumerate(wavenumbers) + if value > threshold + ] + + raise VibrationalAnalysisError( + "modes must be all, nonzero, positive or one-based mode numbers." + ) + + selected_indices = [] + for mode in modes: + if mode < 1 or mode > n_modes: + raise VibrationalAnalysisError( + f"Mode {mode} is outside the available range 1..{n_modes}." + ) + + mode_index = mode - 1 + if mode_index not in selected_indices: + selected_indices.append(mode_index) + + return selected_indices + + + +def write_xyz_modes( + normal_modes: np.ndarray, + atom_coords: np.ndarray, + atom_names: list[str], + filename: str = "modes", + amplitude: float = 0.25, + step: float | None = None, + *, + wavenumbers: np.ndarray | None = None, + modes: str | list[int] | None = "all", + n_frames: int | None = None, + temperature: float | None = None, + threshold: float = MODE_THRESHOLD_CM, +) -> None: + """ + Write one sinusoidal XYZ trajectory per selected normal mode. + """ + n_frames = _mode_frame_count(n_frames, amplitude, step) + _check_mode_writer_settings(n_frames, amplitude, temperature, threshold) + + n_atoms = atom_coords.shape[0] + wavenumbers = _mode_wavenumbers(wavenumbers, normal_modes) + mode_indices = select_mode_indices(wavenumbers, modes, threshold) + phases = np.linspace(0.0, 2.0 * np.pi, n_frames, endpoint=False) + + for mode_index in mode_indices: + mode = normal_modes[:, mode_index].reshape((-1, 3)) + displacement = mode_displacement( + mode, + wavenumbers[mode_index], + amplitude=amplitude, + temperature=temperature, + threshold=threshold, + ) + + with open( + f"{filename}-{mode_index + 1}.xyz", "w", encoding="utf-8" + ) as file: + for frame, phase in enumerate(phases, start=1): + print(n_atoms, file=file) + print( + _mode_comment( + mode_index, + wavenumbers[mode_index], + frame, + n_frames, + phase, + ), + file=file, + ) + + for atom_name, atom_coord, atom_mode in zip( + atom_names, + atom_coords, + displacement, + ): + coords = atom_coord + np.sin(phase) * atom_mode + symbol = _xyz_atom_symbol(atom_name) + print( + f"{symbol} {coords[0]} {coords[1]} {coords[2]}", + file=file, + ) + + + +def write_extxyz_modes( + normal_modes: np.ndarray, + atom_coords: np.ndarray, + atom_names: list[str], + filename: str = "modes.xyz", + wavenumbers: np.ndarray | None = None, + intensities: np.ndarray | None = None, + modes: str | list[int] | None = "all", + threshold: float = MODE_THRESHOLD_CM, +) -> None: + """ + Write selected normal modes to one extended XYZ file. + """ + if threshold < 0.0: + raise VibrationalAnalysisError("Mode threshold must not be negative.") + + n_atoms = atom_coords.shape[0] + wavenumbers = _mode_wavenumbers(wavenumbers, normal_modes) + mode_indices = select_mode_indices(wavenumbers, modes, threshold) + + with open(filename, "w", encoding="utf-8") as file: + for mode_index in mode_indices: + mode = normal_modes[:, mode_index].reshape((-1, 3)) + + print(n_atoms, file=file) + print( + _extxyz_comment( + mode_index, + wavenumbers[mode_index], + None if intensities is None else intensities[mode_index], + ), + file=file, + ) + + for atom_name, atom_coord, atom_mode in zip( + atom_names, + atom_coords, + mode, + ): + symbol = _xyz_atom_symbol(atom_name) + print( + ( + f"{symbol} " + f"{atom_coord[0]:.12e} {atom_coord[1]:.12e} " + f"{atom_coord[2]:.12e} {atom_mode[0]:.12e} " + f"{atom_mode[1]:.12e} {atom_mode[2]:.12e}" + ), + file=file, + ) + + + +def mode_displacement( + mode: np.ndarray, + wavenumber_value: float, + amplitude: float = 0.25, + temperature: float | None = None, + threshold: float = MODE_THRESHOLD_CM, +) -> np.ndarray: + """ + Scale a mode for display. + """ + if temperature is None: + return _scale_mode_to_amplitude(mode, amplitude) + + if temperature <= 0.0: + raise VibrationalAnalysisError("Mode temperature must be positive.") + + energy = abs(wavenumber_value) * WAVENUMBER_TO_EV + if energy <= threshold * WAVENUMBER_TO_EV: + return _scale_mode_to_amplitude(mode, amplitude) + + return mode * np.sqrt(BOLTZMANN_EV_K * temperature / energy) + + + +def _scale_mode_to_amplitude(mode: np.ndarray, amplitude: float) -> np.ndarray: + """ + Scale a mode so the largest atomic displacement equals amplitude. + """ + if amplitude < 0.0: + raise VibrationalAnalysisError("Mode amplitude must not be negative.") + + if amplitude == 0.0: + return np.zeros_like(mode) + + max_displacement = np.max(np.linalg.norm(mode, axis=1)) + if max_displacement == 0.0: + return np.zeros_like(mode) + + return mode * amplitude / max_displacement + + + +def _mode_wavenumbers( + wavenumbers: np.ndarray | None, + normal_modes: np.ndarray, +) -> np.ndarray: + """ + Return mode wavenumbers or a zero placeholder array. + """ + if wavenumbers is None: + return np.zeros(normal_modes.shape[1], dtype=float) + + wavenumbers = np.asarray(wavenumbers, dtype=float) + if wavenumbers.shape != (normal_modes.shape[1], ): + raise VibrationalAnalysisError( + "The number of wavenumbers must match the number of normal modes." + ) + + return wavenumbers + + + +def _check_mode_writer_settings( + n_frames: int, + amplitude: float, + temperature: float | None, + threshold: float, +) -> None: + """ + Validate mode writer settings. + """ + if n_frames < 1: + raise VibrationalAnalysisError( + "Number of mode frames must be positive." + ) + if amplitude < 0.0: + raise VibrationalAnalysisError("Mode amplitude must not be negative.") + if temperature is not None and temperature <= 0.0: + raise VibrationalAnalysisError("Mode temperature must be positive.") + if threshold < 0.0: + raise VibrationalAnalysisError("Mode threshold must not be negative.") + + + +def _mode_frame_count( + n_frames: int | None, + amplitude: float, + step: float | None, +) -> int: + """ + Return an explicit frame count, preserving the legacy step setting. + """ + if n_frames is not None: + return n_frames + + if step is None: + return 30 + + if step <= 0.0: + raise VibrationalAnalysisError("Mode step must be positive.") + + return max(1, int(np.floor(2.0 * amplitude / step)) + 1) + + + +def _mode_comment( + mode_index: int, + wavenumber_value: float, + frame: int, + n_frames: int, + phase: float, +) -> str: + """ + Build a standard XYZ comment line for one animated mode frame. + """ + return ( + f"mode={mode_index + 1} " + f"frequency_cm-1={wavenumber_value:.8e} " + f"frame={frame}/{n_frames} phase={phase:.8e}" + ) + + + +def _extxyz_comment( + mode_index: int, + wavenumber_value: float, + intensity: float | None, +) -> str: + """ + Build an extended XYZ comment line for one mode vector image. + """ + comment = ( + "Properties=species:S:1:pos:R:3:mode:R:3 " + f"mode={mode_index + 1} frequency_cm-1={wavenumber_value:.8e}" + ) + + if intensity is not None: + comment += f" IR_intensity={intensity:.8e}" + + return comment + + + +def _xyz_atom_symbol(atom_name: str | None) -> str: + """ + Return an XYZ/Jmol-friendly atom symbol. + """ + if atom_name is None: + return "X" + + atom_name = str(atom_name) + if not atom_name: + return "X" + + return atom_name[0].upper() + atom_name[1:].lower() diff --git a/PQAnalysis/analysis/vibrational/vibrational_input_file_reader.py b/PQAnalysis/analysis/vibrational/vibrational_input_file_reader.py new file mode 100644 index 00000000..535e1a6c --- /dev/null +++ b/PQAnalysis/analysis/vibrational/vibrational_input_file_reader.py @@ -0,0 +1,315 @@ +""" +Input-file reader for vibrational analysis. +""" + +import logging + +from PQAnalysis import __package_name__ +from PQAnalysis.exceptions import PQKeyError +from PQAnalysis.io import PQAnalysisInputFileReader as Reader +from PQAnalysis.io.input_file_reader.exceptions import InputFileError +from PQAnalysis.io.input_file_reader.pq_analysis._parse import ( + _parse_positive_int, + _parse_positive_real, + _parse_string, +) +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis.type_checking import runtime_type_checking + + + +class VibrationalAnalysisInputFileReader(Reader): + + """ + A class to read input files for vibrational analysis. + """ + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + structure_file_key = "structure_file" + hessian_file_key = "hessian_file" + unit_key = "unit" + hessian_sign_key = "hessian_sign" + normal_modes_file_key = "normal_modes_file" + modes_prefix_key = "modes_prefix" + modes_file_key = "modes_file" + modes_key = "modes" + modes_frames_key = "modes_frames" + modes_amplitude_key = "modes_amplitude" + modes_temperature_key = "modes_temperature" + modes_threshold_key = "modes_threshold" + + required_keys = [ + structure_file_key, + hessian_file_key, + Reader.out_file_key, + ] + + optional_keys = required_keys + [ + Reader.moldescriptor_file_key, + unit_key, + hessian_sign_key, + normal_modes_file_key, + modes_prefix_key, + modes_file_key, + modes_key, + modes_frames_key, + modes_amplitude_key, + modes_temperature_key, + modes_threshold_key, + ] + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + The input file. + """ + self.filename = filename + super().__init__(filename) + + def read(self) -> None: + """ + Read and validate the input file. + """ + super().read() + super().check_required_keys(self.required_keys) + super().check_known_keys(self.optional_keys) + super().not_defined_optional_keys(self.optional_keys) + + if self.unit.lower() not in {"kcal", "hartree", "ev"}: + self.logger.error( + "The unit key must be one of: kcal, hartree, ev.", + exception=InputFileError, + ) + + if self.hessian_sign.lower() not in { + "auto", "positive", "negative", "1", "-1" + }: + self.logger.error( + ( + "The hessian_sign key must be one of: auto, positive, " + "negative, 1, -1." + ), + exception=InputFileError, + ) + + if isinstance(self.modes, str) and self.modes not in { + "all", "nonzero", "positive" + }: + self.logger.error( + ( + "The modes key must be one of: all, nonzero, positive, " + "an integer, a list of integers or a range." + ), + exception=InputFileError, + ) + + if isinstance(self.modes, + list) and any(mode < 1 for mode in self.modes): + self.logger.error( + "Mode numbers must be positive and one-based.", + exception=InputFileError, + ) + + if self.modes_temperature is not None and self.modes_temperature <= 0.0: + self.logger.error( + "The modes_temperature key must be positive.", + exception=InputFileError, + ) + + @property + def structure_file(self) -> str: + """ + str: The structure file. + """ + return _parse_string(self.dictionary, self.structure_file_key) + + @property + def hessian_file(self) -> str: + """ + str: The Hessian file. + """ + return _parse_string(self.dictionary, self.hessian_file_key) + + @property + def unit(self) -> str: + """ + str: The Hessian unit. + """ + unit = _parse_string(self.dictionary, self.unit_key) + return "kcal" if unit is None else unit + + @property + def hessian_sign(self) -> str: + """ + str: The Hessian sign convention. + """ + hessian_sign = _parse_string(self.dictionary, self.hessian_sign_key) + return "auto" if hessian_sign is None else hessian_sign + + @property + def normal_modes_file(self) -> str | None: + """ + str | None: The normal-mode matrix output file. + """ + return _parse_string(self.dictionary, self.normal_modes_file_key) + + @property + def modes_prefix(self) -> str | None: + """ + str | None: The XYZ mode file prefix. + """ + return _parse_string(self.dictionary, self.modes_prefix_key) + + @property + def modes_file(self) -> str | None: + """ + str | None: The extended XYZ mode file. + """ + return _parse_string(self.dictionary, self.modes_file_key) + + @property + def modes(self) -> str | list[int]: + """ + str | list[int]: The normal modes selected for visualization. + """ + modes = _parse_modes(self.dictionary, self.modes_key) + return "all" if modes is None else modes + + @property + def modes_frames(self) -> int: + """ + int: The number of frames per animated mode trajectory. + """ + modes_frames = _parse_positive_int( + self.dictionary, + self.modes_frames_key, + ) + return 30 if modes_frames is None else modes_frames + + @property + def modes_amplitude(self) -> float: + """ + float: The maximum displacement in animated mode trajectories. + """ + modes_amplitude = _parse_positive_real( + self.dictionary, + self.modes_amplitude_key, + ) + return 0.25 if modes_amplitude is None else float(modes_amplitude) + + @property + def modes_temperature(self) -> float | None: + """ + float | None: The ASE-style temperature used to scale modes. + """ + modes_temperature = _parse_positive_real( + self.dictionary, + self.modes_temperature_key, + ) + return None if modes_temperature is None else float(modes_temperature) + + @property + def modes_threshold(self) -> float: + """ + float: Wavenumber threshold for named mode selections. + """ + modes_threshold = _parse_positive_real( + self.dictionary, + self.modes_threshold_key, + ) + return 1.0e-8 if modes_threshold is None else float(modes_threshold) + + + +def _parse_modes(input_dict, key: str) -> str | list[int] | None: + """ + Parse mode selection input. + """ + try: + data = input_dict[key] + except PQKeyError: + return None + + value, data_type, _ = data + + if data_type == "None": + return None + + if data_type == "str": + return str(value).lower() + + if data_type == "int": + return [int(value)] + + if data_type == "list(int)": + return [int(mode) for mode in value] + + if data_type == "range": + return [int(mode) for mode in value] + + VibrationalAnalysisInputFileReader.logger.error( + ( + "The modes key must be one of: all, nonzero, positive, " + "an integer, a list of integers or a range." + ), + exception=InputFileError, + ) + return None + + + +input_keys_documentation = f""" + +For the vibrational analysis input file several keys are available. + +.. list-table:: Required keys + :header-rows: 1 + + * - Key + - Value + * - {VibrationalAnalysisInputFileReader.structure_file_key} + - The restart or single-frame XYZ structure file. + * - {VibrationalAnalysisInputFileReader.hessian_file_key} + - The plain square Hessian matrix file. + * - {Reader.out_file_key} + - The tabular output file. + +.. list-table:: Optional keys + :header-rows: 1 + + * - Key + - Value + * - {Reader.moldescriptor_file_key} + - The moldescriptor file used for IR intensities. + * - {VibrationalAnalysisInputFileReader.unit_key} + - Hessian unit. Options are kcal, hartree and ev. Default is kcal. + * - {VibrationalAnalysisInputFileReader.hessian_sign_key} + - Hessian sign convention. Options are auto, positive, negative, 1 and -1. + * - {VibrationalAnalysisInputFileReader.normal_modes_file_key} + - Optional matrix-format normal-mode output file. + * - {VibrationalAnalysisInputFileReader.modes_prefix_key} + - Optional prefix for one sinusoidal XYZ animation file per selected mode. + * - {VibrationalAnalysisInputFileReader.modes_file_key} + - Optional extended XYZ file with all selected mode vectors and metadata. + * - {VibrationalAnalysisInputFileReader.modes_key} + - Modes to write. Options are all, nonzero, positive, one integer, + a list of integers or a range. Explicit mode numbers are one-based. + * - {VibrationalAnalysisInputFileReader.modes_frames_key} + - Number of frames per animated mode trajectory. Default is 30. + * - {VibrationalAnalysisInputFileReader.modes_amplitude_key} + - Maximum displacement in Angstrom for fixed-amplitude animations. + Default is 0.25. + * - {VibrationalAnalysisInputFileReader.modes_temperature_key} + - Optional temperature in Kelvin for ASE-style energy-scaled animations. + * - {VibrationalAnalysisInputFileReader.modes_threshold_key} + - Wavenumber threshold in cm-1 for nonzero and positive selections. + Default is 1.0e-8. + +""" + +VibrationalAnalysisInputFileReader.__doc__ += input_keys_documentation diff --git a/PQAnalysis/atomic_system/atomic_system.py b/PQAnalysis/atomic_system/atomic_system.py index 70edcfc4..43257633 100644 --- a/PQAnalysis/atomic_system/atomic_system.py +++ b/PQAnalysis/atomic_system/atomic_system.py @@ -7,7 +7,6 @@ import sys import numpy as np -from scipy.spatial.transform import Rotation from beartype.typing import Any # just for forwardref type hinting @@ -75,11 +74,13 @@ class AtomicSystem( Inherits from the Mixins: _PropertiesMixin, _StandardPropertiesMixin, _IndexingMixin, _PositionsMixin - - The _StandardPropertiesMixin contains the standard properties of an atomic - system (i.e. standard getter and setter methods). - - The _PropertiesMixin contains special properties derived from the standard properties - - The _PositionsMixin contains methods for computing properties based - on the positions of the atoms + + - The _StandardPropertiesMixin contains the standard properties of an + atomic system (i.e. standard getter and setter methods). + - The _PropertiesMixin contains special properties derived from the + standard properties + - The _PositionsMixin contains methods for computing properties based + on the positions of the atoms Examples @@ -328,6 +329,10 @@ def _fit_atomic_system( of the AtomicSystem within the maximum number of iterations. """ + # Lazy import: scipy.spatial.transform is expensive to import + # and only needed when fitting atomic systems. + from scipy.spatial.transform import Rotation # pylint: disable=import-outside-toplevel + if self.cell.is_vacuum: raise AtomicSystemError( "Cannot fit into positions of a system with a vacuum cell." diff --git a/PQAnalysis/cli/build_spectrum.py b/PQAnalysis/cli/build_spectrum.py new file mode 100644 index 00000000..46e6b678 --- /dev/null +++ b/PQAnalysis/cli/build_spectrum.py @@ -0,0 +1,177 @@ +""" +.. _cli.build_spectrum: + +Command Line Tool for Broadening Stick Spectra +============================================== + + +""" + +from PQAnalysis.analysis.spectrum_broadening import build_spectrum +from PQAnalysis.config import code_base_url + +from ._argument_parser import _ArgumentParser +from ._cli_base import CLIBase + +__outputdoc__ = """ + +This command line tool can be used to broaden a stick spectrum +(a two-column file with wavenumbers in cm^-1 and intensities) with +a Gaussian (or Lorentzian) kernel on a regular wavenumber grid. + +The broadening uses the peak-height convention, i.e. the broadened +profile of a single stick reaches exactly the stick intensity at the +stick position and no area normalization is applied. The default +Gaussian exponent alpha of 0.0025 cm^-2 corresponds to a full width +at half maximum of about 33.3 cm^-1. Alternatively, the width can be +given directly as a full width at half maximum via --fwhm. +""" + +__epilog__ = "\n" +__epilog__ += "For more information on the command line options of this tool please visit " +__epilog__ += f"{code_base_url}PQAnalysis.cli.build_spectrum.html." +__epilog__ += "\n" +__epilog__ += "\n" + +__doc__ += __outputdoc__ + + + +class BuildSpectrumCLI(CLIBase): + + """ + Command Line Tool for Broadening Stick Spectra + """ + + @classmethod + def program_name(cls) -> str: + """ + Returns the name of the program. + + Returns + ------- + str + The name of the program. + """ + return 'build_spectrum' + + @classmethod + def add_arguments(cls, parser: _ArgumentParser) -> None: + """ + Adds the arguments to the parser. + + Parameters + ---------- + parser : _ArgumentParser + The parser to which the arguments should be added. + """ + parser.parse_output_file() + + parser.add_argument( + 'input_file', + type=str, + help=( + 'The stick spectrum file to broaden. It must contain ' + 'one line per stick with the wavenumber in cm^-1 in ' + 'the first column and the intensity in the second column.' + ) + ) + + width_group = parser.add_mutually_exclusive_group() + + width_group.add_argument( + '--alpha', + type=float, + default=None, + help=( + 'The Gaussian exponent alpha in cm^-2. If neither ' + '--alpha nor --fwhm is given, 0.0025 cm^-2 is used.' + ) + ) + + width_group.add_argument( + '--fwhm', + type=float, + default=None, + help=( + 'The full width at half maximum in cm^-1 as an ' + 'alternative way to specify the broadening width.' + ) + ) + + parser.add_argument( + '--min', + dest='wavenumber_min', + type=float, + default=10.0, + help='The first grid point in cm^-1.' + ) + + parser.add_argument( + '--max', + dest='wavenumber_max', + type=float, + default=4000.0, + help='The exclusive upper bound of the grid in cm^-1.' + ) + + parser.add_argument( + '--step', + dest='wavenumber_step', + type=float, + default=0.25, + help='The grid spacing in cm^-1.' + ) + + parser.add_argument( + '--lorentzian', + action='store_true', + default=False, + help=( + 'Use a Lorentzian kernel instead of a Gaussian kernel. ' + 'The Lorentzian width is chosen such that it has the ' + 'same full width at half maximum as the corresponding ' + 'Gaussian kernel.' + ) + ) + + parser.parse_mode() + + @classmethod + def run(cls, args): + """ + Runs the command line tool. + + Parameters + ---------- + args : argparse.Namespace + The arguments parsed by the parser. + """ + build_spectrum( + input_file=args.input_file, + output=args.output, + alpha=args.alpha, + fwhm=args.fwhm, + wavenumber_min=args.wavenumber_min, + wavenumber_max=args.wavenumber_max, + wavenumber_step=args.wavenumber_step, + kernel='lorentzian' if args.lorentzian else 'gaussian', + mode=args.mode, + ) + + + +def main(): + """ + Main function of the build_spectrum command line tool, which is + basically just a wrapper for the build_spectrum function. For more + information on the build_spectrum function please visit + :py:func:`PQAnalysis.analysis.spectrum_broadening.api.build_spectrum`. + """ + parser = _ArgumentParser(description=__outputdoc__, epilog=__epilog__) + + BuildSpectrumCLI.add_arguments(parser) + + args = parser.parse_args() + + BuildSpectrumCLI.run(args) diff --git a/PQAnalysis/cli/check_momentum.py b/PQAnalysis/cli/check_momentum.py new file mode 100644 index 00000000..95f9f2c5 --- /dev/null +++ b/PQAnalysis/cli/check_momentum.py @@ -0,0 +1,144 @@ +""" +.. _cli.check_momentum: + +Command Line Tool for Checking the Total Linear Momentum +======================================================== + + +""" + +from PQAnalysis.analysis.momentum import check_momentum +from PQAnalysis.config import code_base_url + +from ._argument_parser import _ArgumentParser +from ._cli_base import CLIBase + +__outputdoc__ = """ + +This command line tool can be used to calculate the norm of the total +linear momentum P = sum_i m_i * v_i of (a selection of) atoms for +every frame of a velocity trajectory. It can be used to check a +simulation for center of mass drift. + +For every frame one row containing the one-based frame index and the +scaled momentum norm is written. With velocities in Angstrom/s (PQ +velocity trajectories) the default scaling factor of 1e-15 converts +the momentum norm from amu*Angstrom/s to amu*Angstrom/fs. + +Note that the velocities are parsed from file in single precision, so +reported norms below roughly 1e-7 * sum_i m_i * |v_i| * scale are +parsing noise, not physical center of mass drift. The legacy +equipartition.jl tool parses the velocities in double precision and +therefore resolves correspondingly smaller drift for +momentum-conserving trajectories. +""" + +__epilog__ = "\n" +__epilog__ += "For more information on the command line options of this tool please visit " +__epilog__ += f"{code_base_url}PQAnalysis.cli.check_momentum.html." +__epilog__ += "\n" +__epilog__ += "\n" + +__doc__ += __outputdoc__ + + + +class CheckMomentumCLI(CLIBase): + + """ + Command Line Tool for Checking the Total Linear Momentum + """ + + @classmethod + def program_name(cls) -> str: + """ + Returns the name of the program. + + Returns + ------- + str + The name of the program. + """ + return 'check_momentum' + + @classmethod + def add_arguments(cls, parser: _ArgumentParser) -> None: + """ + Adds the arguments to the parser. + + Parameters + ---------- + parser : _ArgumentParser + The parser to which the arguments should be added. + """ + parser.parse_output_file() + + parser.parse_trajectory_file() + + parser.add_argument( + '--selection', + type=str, + default=None, + help=( + 'The selection of atoms to include in the total ' + 'momentum. If not specified, all atoms are included.' + ) + ) + + parser.add_argument( + '--use-full-atom-info', + action='store_true', + default=False, + help='Use the full atom information for the selection.' + ) + + parser.add_argument( + '--scale', + type=float, + default=1e-15, + help=( + 'The scaling factor applied to the momentum norm ' + 'before output. The default converts amu*Angstrom/s ' + 'to amu*Angstrom/fs.' + ) + ) + + parser.parse_engine() + parser.parse_mode() + + @classmethod + def run(cls, args): + """ + Runs the command line tool. + + Parameters + ---------- + args : argparse.Namespace + The arguments parsed by the parser. + """ + check_momentum( + trajectory_files=args.trajectory_file, + output=args.output, + selection=args.selection, + use_full_atom_info=args.use_full_atom_info, + scale=args.scale, + md_format=args.engine, + mode=args.mode, + ) + + + +def main(): + """ + Main function of the check_momentum command line tool, which is + basically just a wrapper for the check_momentum function. For more + information on the check_momentum function please visit + :py:func:`PQAnalysis.analysis.momentum.api.check_momentum`. + """ + parser = _ArgumentParser(description=__outputdoc__, epilog=__epilog__) + + CheckMomentumCLI.add_arguments(parser) + + args = parser.parse_args() + + CheckMomentumCLI.run(args) diff --git a/PQAnalysis/cli/main.py b/PQAnalysis/cli/main.py index d5a4a48b..cf15c5ee 100644 --- a/PQAnalysis/cli/main.py +++ b/PQAnalysis/cli/main.py @@ -4,18 +4,23 @@ from PQAnalysis.config import code_base_url -from .xyz2gen import XYZ2GENCLI +from ._argument_parser import _ArgumentParser +from .add_molecules import AddMoleculesCLI +from .build_nep_traj import BuildNEPTrajCLI +from .build_spectrum import BuildSpectrumCLI +from .check_momentum import CheckMomentumCLI +from .continue_input import ContinueInputCLI +from .gen2xyz import GEN2XYZCLI +from .msd import MSDCLI +from .rdf import RDFCLI +from .rst2xyz import Rst2XYZCLI +from .traj2box import Traj2BoxCLI from .traj2extxyz import Traj2ExtXYZCLI from .traj2qmcfc import Traj2QMCFCCLI -from .traj2box import Traj2BoxCLI -from .rst2xyz import Rst2XYZCLI +from .vacf import VACFCLI +from .vibrations import VibrationsCLI +from .xyz2gen import XYZ2GENCLI from .xyz2rst import XYZ2RstCLI -from .rdf import RDFCLI -from .gen2xyz import GEN2XYZCLI -from .continue_input import ContinueInputCLI -from .add_molecules import AddMoleculesCLI -from .build_nep_traj import BuildNEPTrajCLI -from ._argument_parser import _ArgumentParser __outputdoc__ = """ @@ -41,14 +46,19 @@ def main(): sub_parser_dict = { AddMoleculesCLI.program_name(): AddMoleculesCLI, BuildNEPTrajCLI.program_name(): BuildNEPTrajCLI, + BuildSpectrumCLI.program_name(): BuildSpectrumCLI, + CheckMomentumCLI.program_name(): CheckMomentumCLI, ContinueInputCLI.program_name(): ContinueInputCLI, GEN2XYZCLI.program_name(): GEN2XYZCLI, + MSDCLI.program_name(): MSDCLI, RDFCLI.program_name(): RDFCLI, Rst2XYZCLI.program_name(): Rst2XYZCLI, XYZ2RstCLI.program_name(): XYZ2RstCLI, Traj2BoxCLI.program_name(): Traj2BoxCLI, Traj2ExtXYZCLI.program_name(): Traj2ExtXYZCLI, Traj2QMCFCCLI.program_name(): Traj2QMCFCCLI, + VACFCLI.program_name(): VACFCLI, + VibrationsCLI.program_name(): VibrationsCLI, XYZ2GENCLI.program_name(): XYZ2GENCLI, } diff --git a/PQAnalysis/cli/msd.py b/PQAnalysis/cli/msd.py new file mode 100644 index 00000000..7cdcecf6 --- /dev/null +++ b/PQAnalysis/cli/msd.py @@ -0,0 +1,99 @@ +""" +.. _cli.msd: + +Command Line Tool for MSD Analysis +================================== + +""" + +from PQAnalysis.analysis.msd import msd +from PQAnalysis.analysis.msd.msd_input_file_reader import input_keys_documentation +from PQAnalysis.config import code_base_url +from ._argument_parser import _ArgumentParser +from ._cli_base import CLIBase + +__outputdoc__ = """ + +This command line tool can be used to calculate the +mean square displacement (MSD) of given trajectory +file(s) using multiple time origins on a sliding +window. This is an input file based tool, so that +the input file can be used to specify the parameters +of the MSD calculation. +""" + +__epilog__ = "\n" +__epilog__ += "For more information on required and optional input file keys please visit " +__epilog__ += f"{code_base_url}PQAnalysis.cli.msd.html." +__epilog__ += "\n" +__epilog__ += "\n" + +__doc__ += __outputdoc__ +__doc__ += "For more information on the general the " +__doc__ += "MSD analysis and its input file options " +__doc__ += "please visit " +__doc__ += ":py:class:`PQAnalysis.analysis.msd.msd.MSD` " +__doc__ += "and :py:mod:`PQAnalysis.analysis.msd.msd_input_file_reader`\n" +__doc__ += input_keys_documentation + + + +class MSDCLI(CLIBase): + + """ + Command Line Tool for MSD Analysis + """ + + @classmethod + def program_name(cls) -> str: + """ + Returns the name of the program. + + Returns + ------- + str + The name of the program. + """ + return 'msd' + + @classmethod + def add_arguments(cls, parser: _ArgumentParser) -> None: + """ + Adds the arguments to the parser. + + Parameters + ---------- + parser : _ArgumentParser + The parser to which the arguments should be added. + """ + parser.parse_input_file() + parser.parse_engine() + + @classmethod + def run(cls, args): + """ + Runs the command line tool. + + Parameters + ---------- + args : argparse.Namespace + The arguments parsed by the parser. + """ + msd(args.input_file, args.engine) + + + +def main(): + """ + The main function of the MSD analysis command line tool, + which is basically just a wrapper for the msd function. + For more information on the msd function please + visit :py:func:`PQAnalysis.analysis.msd.api.msd`. + """ + parser = _ArgumentParser(description=__outputdoc__, epilog=__epilog__) + + MSDCLI.add_arguments(parser) + + args = parser.parse_args() + + MSDCLI.run(args) diff --git a/PQAnalysis/cli/vacf.py b/PQAnalysis/cli/vacf.py new file mode 100644 index 00000000..8030f61a --- /dev/null +++ b/PQAnalysis/cli/vacf.py @@ -0,0 +1,103 @@ +""" +.. _cli.vacf: + +Command Line Tool for VACF Analysis +=================================== + +""" + +from PQAnalysis.analysis.vacf import vacf +from PQAnalysis.analysis.vacf.vacf_input_file_reader import input_keys_documentation +from PQAnalysis.config import code_base_url +from ._argument_parser import _ArgumentParser +from ._cli_base import CLIBase + +__outputdoc__ = """ + +This command line tool can be used to calculate the +normalized velocity auto-correlation function (VACF) +of given velocity trajectory file(s) using multiple +time origins on a sliding window. In the charge-flux +mode the velocities are weighted with static or +time-dependent atomic partial charges. Optionally, +the legacy cosine-transform spectrum of the VACF is +calculated. This is an input file based tool, so that +the input file can be used to specify the parameters +of the VACF calculation. +""" + +__epilog__ = "\n" +__epilog__ += "For more information on required and optional input file keys please visit " +__epilog__ += f"{code_base_url}PQAnalysis.cli.vacf.html." +__epilog__ += "\n" +__epilog__ += "\n" + +__doc__ += __outputdoc__ +__doc__ += "For more information on the general the " +__doc__ += "VACF analysis and its input file options " +__doc__ += "please visit " +__doc__ += ":py:class:`PQAnalysis.analysis.vacf.vacf.VACF` " +__doc__ += "and :py:mod:`PQAnalysis.analysis.vacf.vacf_input_file_reader`\n" +__doc__ += input_keys_documentation + + + +class VACFCLI(CLIBase): + + """ + Command Line Tool for VACF Analysis + """ + + @classmethod + def program_name(cls) -> str: + """ + Returns the name of the program. + + Returns + ------- + str + The name of the program. + """ + return 'vacf' + + @classmethod + def add_arguments(cls, parser: _ArgumentParser) -> None: + """ + Adds the arguments to the parser. + + Parameters + ---------- + parser : _ArgumentParser + The parser to which the arguments should be added. + """ + parser.parse_input_file() + parser.parse_engine() + + @classmethod + def run(cls, args): + """ + Runs the command line tool. + + Parameters + ---------- + args : argparse.Namespace + The arguments parsed by the parser. + """ + vacf(args.input_file, args.engine) + + + +def main(): + """ + The main function of the VACF analysis command line tool, + which is basically just a wrapper for the vacf function. + For more information on the vacf function please + visit :py:func:`PQAnalysis.analysis.vacf.api.vacf`. + """ + parser = _ArgumentParser(description=__outputdoc__, epilog=__epilog__) + + VACFCLI.add_arguments(parser) + + args = parser.parse_args() + + VACFCLI.run(args) diff --git a/PQAnalysis/cli/vibrations.py b/PQAnalysis/cli/vibrations.py new file mode 100644 index 00000000..3859ef99 --- /dev/null +++ b/PQAnalysis/cli/vibrations.py @@ -0,0 +1,74 @@ +""" +.. _cli.vibrations: + +Command Line Tool for Vibrational Analysis +========================================== +""" + +from PQAnalysis.analysis.vibrational import vibrations +from PQAnalysis.analysis.vibrational.vibrational_input_file_reader import ( + input_keys_documentation, +) +from PQAnalysis.config import code_base_url + +from ._argument_parser import _ArgumentParser +from ._cli_base import CLIBase + +__outputdoc__ = """ + +This command line tool calculates vibrational frequencies, force constants, +reduced masses, normal modes and optional IR intensities from a structure file +and a Hessian file. +""" + +__epilog__ = "\n" +__epilog__ += "For more information on required and optional input file keys please visit " +__epilog__ += f"{code_base_url}PQAnalysis.cli.vibrations.html." +__epilog__ += "\n" +__epilog__ += "\n" + +__doc__ += __outputdoc__ +__doc__ += input_keys_documentation + + + +class VibrationsCLI(CLIBase): + + """ + Command Line Tool for Vibrational Analysis + """ + + @classmethod + def program_name(cls) -> str: + """ + Returns the name of the program. + """ + return "vibrations" + + @classmethod + def add_arguments(cls, parser: _ArgumentParser) -> None: + """ + Adds the arguments to the parser. + """ + parser.parse_input_file() + + @classmethod + def run(cls, args) -> None: + """ + Runs the command line tool. + """ + vibrations(args.input_file) + + + +def main(): + """ + Main function for the standalone vibrational analysis CLI. + """ + parser = _ArgumentParser(description=__outputdoc__, epilog=__epilog__) + + VibrationsCLI.add_arguments(parser) + + args = parser.parse_args() + + VibrationsCLI.run(args) diff --git a/PQAnalysis/grammar/QMCFC_inputGrammar.lark b/PQAnalysis/grammar/QMCFC_inputGrammar.lark new file mode 100644 index 00000000..1e8b4354 --- /dev/null +++ b/PQAnalysis/grammar/QMCFC_inputGrammar.lark @@ -0,0 +1,35 @@ +start: expression + +expression: assign+ + +?assign.5: key "=" value ";" + | key "=" value ";" assign + +%import .rules.key +%import .rules.array +%import .rules.range +%import .rules.glob +%import .rules.primitive + +?value: qmcfc_list + | qmcfc_atom + | array + | range + | glob + | primitive + +qmcfc_list: qmcfc_atom ("," qmcfc_atom)+ +qmcfc_atom: QMCFC_ATOM + +// just for namespace reasons +%import .rules.word +%import .rules.integer +%import .rules.float +%import .rules.boolean + +%import .terminals.WS +%import .terminals.COMMENT -> COMMENT +%import .terminals.QMCFC_ATOM + +%ignore COMMENT +%ignore WS diff --git a/PQAnalysis/grammar/terminals.lark b/PQAnalysis/grammar/terminals.lark index fb23fc92..61d684e2 100644 --- a/PQAnalysis/grammar/terminals.lark +++ b/PQAnalysis/grammar/terminals.lark @@ -10,6 +10,7 @@ BOOL: "true"i | "false"i COMMENT: /#.*/ NEWLINE WORD: ("_"|"-"|"."|LETTER|DIGIT)+ +QMCFC_ATOM.-1: /[^,;#\s]+/ URL: /(https?:\/\/[^;\s]+)/ @@ -18,4 +19,4 @@ URL: /(https?:\/\/[^;\s]+)/ %import common.WS_INLINE %import common.LETTER %import common.DIGIT -%import common.LETTER \ No newline at end of file +%import common.LETTER diff --git a/PQAnalysis/io/__init__.py b/PQAnalysis/io/__init__.py index ba0362ea..2a8fc73b 100644 --- a/PQAnalysis/io/__init__.py +++ b/PQAnalysis/io/__init__.py @@ -20,6 +20,7 @@ # import the classes from the traj_file subpackage from .traj_file.trajectory_reader import TrajectoryReader from .traj_file.trajectory_writer import TrajectoryWriter +from .traj_file.raw_frame_reader import RawTrajectoryReader from .traj_file.frame_reader import ( BaseFrameReader, XYZFrameReader, @@ -47,6 +48,7 @@ from .info_file_reader import InfoFileReader from .energy_file_reader import EnergyFileReader from .box_reader import BoxReader, read_box +from .optimizer_file_reader import OptimizerFileReader, read_optimizer_file from .box_writer import BoxWriter from .input_file_reader import InputFileParser diff --git a/PQAnalysis/io/api.py b/PQAnalysis/io/api.py index 3057e1ad..a59c5173 100644 --- a/PQAnalysis/io/api.py +++ b/PQAnalysis/io/api.py @@ -58,6 +58,6 @@ def continue_input_file( exception=PQNotImplementedError ) - reader = Reader(input_file) + reader = Reader(input_file, input_format=input_format) reader.read() reader.continue_input_file(n) diff --git a/PQAnalysis/io/exceptions.py b/PQAnalysis/io/exceptions.py index f8ff3573..9f8097fa 100644 --- a/PQAnalysis/io/exceptions.py +++ b/PQAnalysis/io/exceptions.py @@ -22,6 +22,14 @@ class BoxReaderError(PQException): +class OptimizerReaderError(PQException): + + """ + Exception raised for errors related to the OptimizerFileReader class + """ + + + class MoldescriptorReaderError(PQException): """ diff --git a/PQAnalysis/io/input_file_reader/input_file_parser.py b/PQAnalysis/io/input_file_reader/input_file_parser.py index c28a3aed..4a8d0bd0 100644 --- a/PQAnalysis/io/input_file_reader/input_file_parser.py +++ b/PQAnalysis/io/input_file_reader/input_file_parser.py @@ -84,8 +84,10 @@ def parse(self) -> "InputDictionary": if self.input_format == InputFileFormat.PQANALYSIS: grammar_file = "inputGrammar.lark" - elif self.input_format in [InputFileFormat.PQ, InputFileFormat.QMCFC]: + elif self.input_format == InputFileFormat.PQ: grammar_file = "PQ_inputGrammar.lark" + elif self.input_format == InputFileFormat.QMCFC: + grammar_file = "QMCFC_inputGrammar.lark" else: InputDictionary.logger.error( f"Input file format {self.input_format} not supported.", @@ -99,8 +101,7 @@ def parse(self) -> "InputDictionary": propagate_positions=True, ) - with open(self.filename, "r", encoding="utf-8") as file: - self.raw_input_file = file.read() + self.raw_input_file = _read_input_file(self.filename) self.tree = parser.parse(self.raw_input_file) @@ -271,6 +272,19 @@ def __eq__(self, __value: object) -> bool: +def _read_input_file(filename: str) -> str: + """ + Read an input file, accepting legacy QMCFC files with latin-1 comments. + """ + try: + with open(filename, "r", encoding="utf-8") as file: + return file.read() + except UnicodeDecodeError: + with open(filename, "r", encoding="latin-1") as file: + return file.read() + + + class PrimitiveTransformer(Transformer): """ @@ -522,6 +536,18 @@ def glob(self, items) -> Tuple[List[str], str, str]: """ return glob("".join(items).strip()), "glob", str(items[0].end_line) + def qmcfc_atom(self, items) -> Tuple[str, str, str]: + """ + Transform a QMCFC selector fragment to a string. + """ + return str(items[0]), "str", str(items[0].end_line) + + def qmcfc_list(self, items) -> Tuple[List[str], str, str]: + """ + Transform an unbracketed QMCFC comma-separated value to a list. + """ + return [str(item[0]) for item in items], "list(str)", str(items[0][2]) + def key(self, items) -> str: """ Method to transform key values diff --git a/PQAnalysis/io/input_file_reader/pq/output_files.py b/PQAnalysis/io/input_file_reader/pq/output_files.py index fd013699..f23c549b 100644 --- a/PQAnalysis/io/input_file_reader/pq/output_files.py +++ b/PQAnalysis/io/input_file_reader/pq/output_files.py @@ -21,6 +21,8 @@ class _OutputFileMixin: "energy_file", "info_file", "output_file", + "temperature_file", + "momentum_file", "file_prefix", "rpmd_restart_file", "rpmd_traj_file", diff --git a/PQAnalysis/io/input_file_reader/pq/pq_input_file_reader.py b/PQAnalysis/io/input_file_reader/pq/pq_input_file_reader.py index 054e7590..1ab82d29 100644 --- a/PQAnalysis/io/input_file_reader/pq/pq_input_file_reader.py +++ b/PQAnalysis/io/input_file_reader/pq/pq_input_file_reader.py @@ -30,7 +30,11 @@ class PQInputFileReader(_OutputFileMixin): logger = logging.getLogger(__package_name__).getChild(__qualname__) logger = setup_logger(logger) - def __init__(self, filename: str): + def __init__( + self, + filename: str, + input_format: InputFileFormat | str = InputFileFormat.PQ + ): """ Initialize the PQ_InputFileReader class. @@ -53,7 +57,12 @@ def __init__(self, filename: str): self.start_n = None self.actual_n = None - self.format = InputFileFormat.PQ + self.format = InputFileFormat(input_format) + if not InputFileFormat.is_qmcf_type(self.format): + self.logger.error( + f"Input file format {self.format} not supported.", + exception=PQValueError + ) self.filename = filename self.parser = InputFileParser(self.filename, self.format) diff --git a/PQAnalysis/io/optimizer_file_reader.py b/PQAnalysis/io/optimizer_file_reader.py new file mode 100644 index 00000000..d6aaf278 --- /dev/null +++ b/PQAnalysis/io/optimizer_file_reader.py @@ -0,0 +1,146 @@ +""" +A module containing the reader for PQ optimizer output files. +""" + +import logging + +import numpy as np + +from PQAnalysis import __package_name__ +from PQAnalysis.physical_data import Energy +from PQAnalysis.type_checking import runtime_type_checking +from PQAnalysis.utils.custom_logging import setup_logger + +from .base import BaseReader +from .exceptions import OptimizerReaderError + +OPTIMIZER_PARAMETER_UNITS = ( + ("SIMULATION-TIME", "step"), + ("ABS-ENERGY-CHANGE", "kcal/mol"), + ("REL-ENERGY-CHANGE", "-"), + ("MAX-FORCE", "kcal/mol/A"), + ("RMS-FORCE", "kcal/mol/A"), + ("REL-ENERGY-CONV", "state"), + ("ABS-ENERGY-CONV", "state"), + ("MAX-FORCE-CONV", "state"), + ("RMS-FORCE-CONV", "state"), + ("REL-ENERGY-LIMIT", "-"), + ("ABS-ENERGY-LIMIT", "kcal/mol"), + ("MAX-FORCE-LIMIT", "kcal/mol/A"), + ("RMS-FORCE-LIMIT", "kcal/mol/A"), +) +OPTIMIZER_COLUMN_COUNT = len(OPTIMIZER_PARAMETER_UNITS) + + + +class OptimizerFileReader(BaseReader): + + """ + A reader for the fixed 13-column ``.opt`` files written by PQ. + """ + + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + @runtime_type_checking + def __init__(self, filename: str) -> None: + """ + Parameters + ---------- + filename : str + The optimizer output file to read. + """ + super().__init__(filename) + + @runtime_type_checking + def read(self) -> Energy: + """ + Read the optimizer output and return its values with the PQ schema. + + Returns + ------- + Energy + Optimizer values arranged as parameters by optimization steps. + + Raises + ------ + OptimizerReaderError + If the file is empty or contains an invalid row. + """ + rows = [] + + with open(self.filename, "r", encoding="utf-8") as file: + for line_number, line in enumerate(file, start=1): + line = line.strip() + + if line == "" or line.startswith("#"): + continue + + rows.append(self._parse_line(line, line_number)) + + if not rows: + self.logger.error( + ( + f"Optimizer file {self.filename} does not contain " + "optimizer data." + ), + exception=OptimizerReaderError + ) + + info = { + parameter: index + for index, (parameter, _) in enumerate(OPTIMIZER_PARAMETER_UNITS) + } + units = dict(OPTIMIZER_PARAMETER_UNITS) + + return Energy(np.asarray(rows, dtype=float).T, info, units) + + @classmethod + def _parse_line(cls, line: str, line_number: int) -> list[float]: + """ + Parse and validate one optimizer output row. + """ + values = line.split() + + if len(values) != OPTIMIZER_COLUMN_COUNT: + cls.logger.error( + ( + "Invalid number of columns in optimizer file line " + f"{line_number}. Expected {OPTIMIZER_COLUMN_COUNT} " + "columns." + ), + exception=OptimizerReaderError + ) + + parsed_values = [] + try: + parsed_values = [float(value) for value in values] + except ValueError: + cls.logger.error( + ( + "Invalid numeric value in optimizer file line " + f"{line_number}: {line}" + ), + exception=OptimizerReaderError + ) + + return parsed_values + + + +@runtime_type_checking +def read_optimizer_file(filename: str) -> Energy: + """ + Read a PQ optimizer output file. + + Parameters + ---------- + filename : str + The optimizer output file to read. + + Returns + ------- + Energy + Optimizer values arranged as parameters by optimization steps. + """ + return OptimizerFileReader(filename).read() diff --git a/PQAnalysis/io/traj_file/__init__.py b/PQAnalysis/io/traj_file/__init__.py index 8f536c4f..81bae717 100644 --- a/PQAnalysis/io/traj_file/__init__.py +++ b/PQAnalysis/io/traj_file/__init__.py @@ -4,6 +4,7 @@ from .trajectory_reader import TrajectoryReader from .trajectory_writer import TrajectoryWriter +from .raw_frame_reader import RawTrajectoryReader from .frame_reader import ( BaseFrameReader, XYZFrameReader, diff --git a/PQAnalysis/io/traj_file/_slab_parser.pyx b/PQAnalysis/io/traj_file/_slab_parser.pyx new file mode 100644 index 00000000..27d91f4f --- /dev/null +++ b/PQAnalysis/io/traj_file/_slab_parser.pyx @@ -0,0 +1,384 @@ +# cython: language_level=3 +# cython: boundscheck=False +# cython: wraparound=False +""" +A Cython byte-slab frame parser for xyz-family trajectory files. + +This module implements the same function contract as the pure Python +fallback :py:mod:`PQAnalysis.io.traj_file._slab_parser_py` (see its +module docstring for the contract), but parses the frames directly +from the byte buffer: newlines are located with ``memchr`` and the +numeric tokens are converted in place with ``strtol``/``strtof``/ +``strtod`` without decoding or splitting the lines. + +The float32 values of the xyz-family atom lines are parsed with +``strtof`` (single rounding), which is bitwise identical to the +``sscanf("%f")`` conversion of +:py:func:`~PQAnalysis.io.traj_file.process_lines.process_lines` used +by the line based readers. The float64 charge values and the (cached) +box values of the header line are parsed with ``strtod``/``float``, +matching the correctly rounded ``float`` conversions of the line +based readers. +""" + +import numpy as np + +from libc.string cimport memchr + +from PQAnalysis.io.traj_file._slab_parser_py import ( + MODE_CHARGE, + MODE_XYZ, + STATUS_BAD_HEADER, + STATUS_EOF, + STATUS_FRAME, + STATUS_NEED_MORE, +) + +cdef extern from "": + float strtof(const char *nptr, char **endptr) nogil + double strtod(const char *nptr, char **endptr) nogil + long strtol(const char *nptr, char **endptr, int base) nogil + +# C-level copies of the shared status/mode constants of +# _slab_parser_py (the single source of truth for their values) +cdef int _MODE_XYZ = MODE_XYZ +cdef int _MODE_CHARGE = MODE_CHARGE + + +cdef inline bint _is_space(char c) nogil: + """C locale whitespace as used by sscanf/strtof token skipping.""" + return c == c' ' or (c >= c'\t' and c <= c'\r') + + +def scan_header( + bytes data, + Py_ssize_t offset, + bint at_eof, + Py_ssize_t forced_n_atoms=-1, +): + """ + Scans for the header line of the next frame. + + Same contract as + :py:func:`PQAnalysis.io.traj_file._slab_parser_py.scan_header`. + + Parameters + ---------- + data : bytes + The buffer to scan. + offset : int + The offset to start scanning at. + at_eof : bool + Whether the buffer contains the complete rest of the file. + forced_n_atoms : int, optional + The atom count to use when the count token of the header + line is not a plain integer literal but was successfully + parsed by the caller. Default is -1 (disabled). + + Returns + ------- + tuple + ``(status, n_atoms, box_bytes, header_token, next_offset)``, + see the fallback implementation for the exact semantics. + """ + + cdef const char* base = data + cdef Py_ssize_t n_data = len(data) + cdef Py_ssize_t pos = offset + cdef Py_ssize_t line_end, i, tok_start, tok_end + cdef const char* found + cdef char* endptr + cdef long count + + while True: + if pos >= n_data: + if at_eof: + return (STATUS_EOF, -1, None, None, pos) + + return (STATUS_NEED_MORE, -1, None, None, offset) + + found = memchr(base + pos, c'\n', n_data - pos) + + if found == NULL: + if not at_eof: + return (STATUS_NEED_MORE, -1, None, None, offset) + + line_end = n_data + else: + line_end = found - base + + i = pos + + while i < line_end and _is_space(base[i]): + i += 1 + + if i < line_end: + break + + pos = line_end + 1 + + tok_start = i + + while i < line_end and not _is_space(base[i]): + i += 1 + + tok_end = i + + while i < line_end and _is_space(base[i]): + i += 1 + + box_bytes = data[i:line_end] + body_offset = line_end + 1 + + count = strtol(base + tok_start, &endptr, 10) + + if endptr == base + tok_end and count >= 0: + return (STATUS_FRAME, count, box_bytes, None, body_offset) + + if forced_n_atoms >= 0: + return (STATUS_FRAME, forced_n_atoms, box_bytes, None, body_offset) + + return ( + STATUS_BAD_HEADER, + -1, + box_bytes, + data[tok_start:tok_end], + body_offset, + ) + + +def parse_body( + bytes data, + Py_ssize_t offset, + Py_ssize_t n_atoms, + bint at_eof, + bint want_first_name, + int mode, +): + """ + Parses the body (comment line plus atom lines) of a frame. + + Same contract as + :py:func:`PQAnalysis.io.traj_file._slab_parser_py.parse_body`. + + Parameters + ---------- + data : bytes + The buffer to parse from. + offset : int + The offset of the comment line of the frame. + n_atoms : int + The number of atom lines of the frame. + at_eof : bool + Whether the buffer contains the complete rest of the file. + want_first_name : bool + Whether to extract the name token of the first atom line. + mode : int + The body mode, either ``MODE_XYZ`` or ``MODE_CHARGE``. + + Returns + ------- + tuple + ``(status, values, first_name, next_offset)``, see the + fallback implementation for the exact semantics. + + Raises + ------ + EOFError + If the buffer contains the complete rest of the file and the + frame is incomplete. + ValueError + If an atom line cannot be parsed. + """ + + cdef const char* base = data + cdef Py_ssize_t n_data = len(data) + cdef const char* found + cdef Py_ssize_t pos, scan, i + + # comment line + found = NULL + + if offset < n_data: + found = memchr(base + offset, c'\n', n_data - offset) + + if found == NULL: + if at_eof: + raise EOFError("incomplete frame") + + return (STATUS_NEED_MORE, None, None, offset) + + pos = (found - base) + 1 + + # pre-scan: all atom lines must be complete before any of them is + # parsed, so that a truncated frame at the end of the file is + # always reported as incomplete (EOFError) even if it also + # contains malformed lines + scan = pos + + for i in range(n_atoms): + found = NULL + + if scan < n_data: + found = memchr(base + scan, c'\n', n_data - scan) + + if found == NULL: + if at_eof: + raise EOFError("incomplete frame") + + return (STATUS_NEED_MORE, None, None, offset) + + scan = (found - base) + 1 + + if mode == _MODE_XYZ: + values, first_name = _parse_xyz_lines( + data, pos, n_atoms, want_first_name + ) + else: + values, first_name = _parse_charge_lines( + data, pos, n_atoms, want_first_name + ) + + return (STATUS_FRAME, values, first_name, scan) + + +cdef _parse_xyz_lines( + bytes data, + Py_ssize_t pos, + Py_ssize_t n_atoms, + bint want_first_name, +): + """ + Parses ``n_atoms`` xyz-family atom lines into a float32 array. + + Every line must consist of a name token followed by at least + three float values; the floats are parsed with ``strtof`` + (bitwise identical to the ``sscanf("%f")`` conversions of + ``process_lines``). + """ + + cdef const char* base = data + cdef Py_ssize_t n_data = len(data) + + values = np.empty((n_atoms, 3), dtype=np.float32) + + cdef float[:, ::1] out = values + cdef Py_ssize_t p = pos + cdef Py_ssize_t line_end, tok_start, i, j + cdef const char* found + cdef char* endptr + cdef float value + + first_name = None + + for i in range(n_atoms): + # guaranteed by the pre-scan of parse_body + found = memchr(base + p, c'\n', n_data - p) + line_end = found - base + + while p < line_end and _is_space(base[p]): + p += 1 + + if p == line_end: + raise ValueError("Could not parse line") + + tok_start = p + + while p < line_end and not _is_space(base[p]): + p += 1 + + if want_first_name and i == 0: + first_name = data[tok_start:p] + + for j in range(3): + while p < line_end and _is_space(base[p]): + p += 1 + + if p == line_end: + raise ValueError("Could not parse line") + + value = strtof(base + p, &endptr) + + if endptr == base + p: + raise ValueError("Could not parse line") + + out[i, j] = value + p = endptr - base + + p = line_end + 1 + + return values, first_name + + +cdef _parse_charge_lines( + bytes data, + Py_ssize_t pos, + Py_ssize_t n_atoms, + bint want_first_name, +): + """ + Parses ``n_atoms`` charge atom lines into a float64 array. + + Every line must consist of a name token followed by exactly one + float value; the floats are parsed with ``strtod`` (bitwise + identical to Python's correctly rounded ``float``). + """ + + cdef const char* base = data + cdef Py_ssize_t n_data = len(data) + + values = np.empty(n_atoms, dtype=np.float64) + + cdef double[::1] out = values + cdef Py_ssize_t p = pos + cdef Py_ssize_t line_end, tok_start, i + cdef const char* found + cdef char* endptr + cdef double value + + first_name = None + + for i in range(n_atoms): + # guaranteed by the pre-scan of parse_body + found = memchr(base + p, c'\n', n_data - p) + line_end = found - base + + while p < line_end and _is_space(base[p]): + p += 1 + + if p == line_end: + raise ValueError("Could not parse line") + + tok_start = p + + while p < line_end and not _is_space(base[p]): + p += 1 + + if want_first_name and i == 0: + first_name = data[tok_start:p] + + while p < line_end and _is_space(base[p]): + p += 1 + + if p == line_end: + raise ValueError("Could not parse line") + + value = strtod(base + p, &endptr) + + if endptr == base + p: + raise ValueError("Could not parse line") + + p = endptr - base + + # exactly-two-token semantics: the rest of the line has to be + # whitespace only + while p < line_end and _is_space(base[p]): + p += 1 + + if p != line_end: + raise ValueError("Could not parse line") + + out[i] = value + p = line_end + 1 + + return values, first_name diff --git a/PQAnalysis/io/traj_file/_slab_parser_py.py b/PQAnalysis/io/traj_file/_slab_parser_py.py new file mode 100644 index 00000000..8ace5f02 --- /dev/null +++ b/PQAnalysis/io/traj_file/_slab_parser_py.py @@ -0,0 +1,293 @@ +""" +Pure Python fallback of the byte-slab frame parser. + +This module implements the exact same function contract as the Cython +module :py:mod:`PQAnalysis.io.traj_file._slab_parser` on top of the +current per-line machinery +(:py:func:`~PQAnalysis.io.traj_file.process_lines.process_lines` for +the xyz-family vector lines and Python's ``float`` for the scalar +charge lines). It is used by +:py:class:`~PQAnalysis.io.traj_file.raw_frame_reader.RawTrajectoryReader` +when the compiled extension is not available. + +Both implementations operate on byte buffers (chunks of a trajectory +file) instead of decoded text lines. A frame is parsed from a given +offset in two steps: + +1. :py:func:`scan_header` skips blank lines, locates the header line + of the next frame and extracts the atom count and the raw box + substring of the header. +2. :py:func:`parse_body` parses the frame body (comment line plus + atom lines) into a numpy array. + +Both functions never consume data on failure: when a frame is not +fully contained in the buffer, they return +:py:data:`STATUS_NEED_MORE` and the caller re-invokes them with a +refilled buffer. The caller guarantees that the buffer ends with a +newline once the end of the file is reached (``at_eof`` is True). +""" + +import re + +import numpy as np + +from beartype.typing import Tuple + +from PQAnalysis.types import Np1DNumberArray, Np2DNumberArray + +try: + from .process_lines import process_lines # pylint: disable=import-error +except ModuleNotFoundError: + from ._process_lines_py import process_lines + +#: Status code: a frame (header or body) was parsed successfully. +STATUS_FRAME = 0 +#: Status code: the end of the trajectory file was reached cleanly. +STATUS_EOF = 1 +#: Status code: the buffer ends within the frame - more data needed. +STATUS_NEED_MORE = 2 +#: Status code: the atom count of the header line is not a valid +#: non-negative integer literal. +STATUS_BAD_HEADER = 3 + +#: Body mode: xyz-family lines with a name token and three float32 +#: values per line. +MODE_XYZ = 0 +#: Body mode: charge lines with a name token and exactly one float64 +#: value per line. +MODE_CHARGE = 1 + +#: The integer literals accepted by the fast atom count parsing +#: (mirroring C ``strtol`` with base 10 on a fully consumed token). +_INT_TOKEN_RE = re.compile(rb"[+-]?[0-9]+\Z") + + + +def _next_line_end(data: bytes, pos: int) -> int: + """ + Finds the end of the line starting at ``pos``. + + Parameters + ---------- + data : bytes + The buffer to scan. + pos : int + The offset of the line start. + + Returns + ------- + int + The offset of the newline character terminating the line, or + ``-1`` if the buffer ends before the next newline. + """ + + return data.find(b"\n", pos) + + + +def scan_header( + data: bytes, + offset: int, + at_eof: bool, + forced_n_atoms: int = -1, +) -> Tuple[int, int, bytes | None, bytes | None, int]: + """ + Scans for the header line of the next frame. + + Blank (whitespace-only) lines before the header line are skipped, + exactly as the line based reader skips blank lines between + frames. + + Parameters + ---------- + data : bytes + The buffer to scan. + offset : int + The offset to start scanning at. + at_eof : bool + Whether the buffer contains the complete rest of the file. + forced_n_atoms : int, optional + The atom count to use when the count token of the header line + is not a plain integer literal but was successfully parsed by + the caller (e.g. an integer literal with underscores). + Default is -1 (disabled). + + Returns + ------- + status : int + One of :py:data:`STATUS_FRAME`, :py:data:`STATUS_EOF`, + :py:data:`STATUS_NEED_MORE` and + :py:data:`STATUS_BAD_HEADER`. + n_atoms : int + The atom count of the frame (-1 unless the status is + :py:data:`STATUS_FRAME`). + box_bytes : bytes | None + The raw box substring of the header line (the part after the + atom count token, without leading whitespace). None unless + the status is :py:data:`STATUS_FRAME` or + :py:data:`STATUS_BAD_HEADER`. + header_token : bytes | None + The raw atom count token of the header line. Only set for + :py:data:`STATUS_BAD_HEADER`. + next_offset : int + The offset of the frame body (the comment line) for + :py:data:`STATUS_FRAME` and :py:data:`STATUS_BAD_HEADER`, + otherwise the (unconsumed) input offset. + """ + + n_data = len(data) + pos = offset + + while True: + if pos >= n_data: + if at_eof: + return (STATUS_EOF, -1, None, None, pos) + + return (STATUS_NEED_MORE, -1, None, None, offset) + + line_end = _next_line_end(data, pos) + + if line_end < 0: + if not at_eof: + return (STATUS_NEED_MORE, -1, None, None, offset) + + line_end = n_data + + line = data[pos:line_end] + + if line.strip() != b"": + break + + pos = line_end + 1 + + fields = line.split(None, 1) + token = fields[0] + box_bytes = fields[1] if len(fields) == 2 else b"" + body_offset = line_end + 1 + + if _INT_TOKEN_RE.match(token): + n_atoms = int(token) + + if n_atoms >= 0: + return (STATUS_FRAME, n_atoms, box_bytes, None, body_offset) + + if forced_n_atoms >= 0: + return (STATUS_FRAME, forced_n_atoms, box_bytes, None, body_offset) + + return (STATUS_BAD_HEADER, -1, box_bytes, token, body_offset) + + + +def parse_body( + data: bytes, + offset: int, + n_atoms: int, + at_eof: bool, + want_first_name: bool, + mode: int, +) -> Tuple[ + int, + Np2DNumberArray | Np1DNumberArray | None, + bytes | None, + int, +]: + """ + Parses the body (comment line plus atom lines) of a frame. + + The completeness of the frame is checked before any line is + parsed, so that a truncated frame at the end of the file is + always reported as incomplete - even if it also contains + malformed lines. + + Parameters + ---------- + data : bytes + The buffer to parse from. + offset : int + The offset of the comment line of the frame. + n_atoms : int + The number of atom lines of the frame. + at_eof : bool + Whether the buffer contains the complete rest of the file. + want_first_name : bool + Whether to extract the name token of the first atom line + (needed for the QMCFC dummy atom check). + mode : int + The body mode, either :py:data:`MODE_XYZ` or + :py:data:`MODE_CHARGE`. + + Returns + ------- + status : int + :py:data:`STATUS_FRAME` or :py:data:`STATUS_NEED_MORE`. + values : numpy.ndarray | None + The parsed values of the frame body: a ``(n_atoms, 3)`` + float32 array for :py:data:`MODE_XYZ` or a ``(n_atoms,)`` + float64 array for :py:data:`MODE_CHARGE`. None unless the + status is :py:data:`STATUS_FRAME`. + first_name : bytes | None + The name token of the first atom line if requested and the + frame has at least one atom line, otherwise None. + next_offset : int + The offset directly after the frame for + :py:data:`STATUS_FRAME`, otherwise the (unconsumed) input + offset. + + Raises + ------ + EOFError + If the buffer contains the complete rest of the file and the + frame is incomplete. + ValueError + If an atom line cannot be parsed. + """ + + line_end = _next_line_end(data, offset) + + if line_end < 0: + if at_eof: + raise EOFError("incomplete frame") + + return (STATUS_NEED_MORE, None, None, offset) + + pos = line_end + 1 + + line_bounds = [] + scan = pos + + for _ in range(n_atoms): + line_end = _next_line_end(data, scan) + + if line_end < 0: + if at_eof: + raise EOFError("incomplete frame") + + return (STATUS_NEED_MORE, None, None, offset) + + line_bounds.append((scan, line_end)) + scan = line_end + 1 + + first_name = None + + if want_first_name and n_atoms > 0: + start, end = line_bounds[0] + first_fields = data[start:end].split(None, 1) + first_name = first_fields[0] if first_fields else b"" + + if mode == MODE_XYZ: + lines = [ + data[start:end].decode("utf-8") for start, end in line_bounds + ] + values = process_lines(lines, n_atoms) + else: + values = np.empty(n_atoms, dtype=np.float64) + + for i, (start, end) in enumerate(line_bounds): + fields = data[start:end].split() + + if len(fields) != 2: + raise ValueError("Could not parse line") + + values[i] = float(fields[1]) + + return (STATUS_FRAME, values, first_name, scan) diff --git a/PQAnalysis/io/traj_file/raw_frame_reader.py b/PQAnalysis/io/traj_file/raw_frame_reader.py new file mode 100644 index 00000000..b2434e2f --- /dev/null +++ b/PQAnalysis/io/traj_file/raw_frame_reader.py @@ -0,0 +1,700 @@ +""" +A module containing a raw fast-path reader for xyz-family trajectory +files (xyz, vel, force). + +The :py:class:`RawTrajectoryReader` streams the numeric per-frame data +of a trajectory as plain numpy arrays together with the corresponding +:py:class:`~PQAnalysis.core.cell.cell.Cell` objects, without building +:py:class:`~PQAnalysis.atomic_system.atomic_system.AtomicSystem` or +:py:class:`~PQAnalysis.core.atom.atom.Atom` objects for every frame. +It is an additive fast path intended for analyses that only need the +raw coordinates/velocities per frame (e.g. MSD and VACF) and produces +bit-identical values compared to +:py:meth:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.frame_generator`: +the frames are parsed from large byte chunks by the slab parser +(:py:mod:`~PQAnalysis.io.traj_file._slab_parser`), whose ``strtof`` +conversions are bitwise identical to the ``sscanf("%f")`` conversions +of the line parsing routine +(:py:func:`~PQAnalysis.io.traj_file.process_lines.process_lines`) +used by the line based readers. When the compiled slab parser is not +available, the pure Python implementation +(:py:mod:`~PQAnalysis.io.traj_file._slab_parser_py`), which reuses +the current per-line machinery, is used instead. +""" + +import logging + +from itertools import islice + +from beartype.typing import Generator, List, Tuple + +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Cell +from PQAnalysis.traj import TrajectoryFormat, MDEngineFormat +from PQAnalysis.types import Np1DNumberArray, Np2DNumberArray +from PQAnalysis.io.base import BaseReader +from PQAnalysis.utils.custom_logging import setup_logger +from PQAnalysis import __package_name__ +from PQAnalysis.type_checking import runtime_type_checking + +from .exceptions import FrameReaderError, TrajectoryReaderError +from .frame_reader import XYZFrameReader + +# the status/mode constants are shared by both slab parser +# implementations and defined once in the pure Python module +from ._slab_parser_py import ( + MODE_XYZ, + STATUS_BAD_HEADER, + STATUS_EOF, + STATUS_NEED_MORE, +) + +try: + from ._slab_parser import ( # pylint: disable=import-error + parse_body, + scan_header, + ) +except ModuleNotFoundError: + from ._slab_parser_py import parse_body, scan_header + +#: The trajectory formats supported by the raw fast-path reader. +RAW_READER_TRAJ_FORMATS = ( + TrajectoryFormat.XYZ, + TrajectoryFormat.VEL, + TrajectoryFormat.FORCE, +) + +#: The chunk size (in bytes) of the buffered slab reads. +_CHUNK_SIZE = 8 * 1024 * 1024 + + + +class RawTrajectoryReader(BaseReader): + + """ + A fast-path reader that streams raw per-frame data of xyz-family + trajectory files. + + In contrast to + :py:class:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader`, + this reader does not construct AtomicSystem/Atom objects per frame. + Instead, :py:meth:`raw_frame_generator` yields + ``(values, cell)`` tuples, where ``values`` is the ``(n_atoms, 3)`` + float32 array of the frame body (positions, velocities or forces, + depending on the trajectory format) and ``cell`` is the unit cell + of the frame. + + The reader follows the exact same semantics as + :py:meth:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.frame_generator`: + + - Multiple files are read one after another. + - For the QMCFC MD engine format the leading dummy atom row is + stripped from every frame (and it is checked to be an ``X`` + atom). + - Frames without box information in the header (vacuum frames) + inherit the cell of the last frame that had one - also across + file boundaries. + + As a performance optimization, the reader caches Cell objects by + the (textual) box information of the header line. Consecutive + frames with an identical header box string share the same Cell + object (NPT trajectories with changing boxes still get a new Cell + per unique box string). The yielded Cell objects must therefore be + treated as immutable by consumers. + + For topology-dependent setup (e.g. selections), + :py:meth:`read_first_frame` reads only the first frame of the + trajectory the normal way and returns it as an AtomicSystem. This + does not consume any frames of :py:meth:`raw_frame_generator`: + every call to :py:meth:`raw_frame_generator` always streams the + trajectory from the very first frame, so analyses can bootstrap + their topology from :py:meth:`read_first_frame` and afterwards + still consume every frame of the trajectory exactly once and in + order. + """ + + # Set up the logger + logger = logging.getLogger(__package_name__).getChild(__qualname__) + logger = setup_logger(logger) + + #: The slab parser body mode of this reader (a name token plus + #: three float32 values per atom line). + _SLAB_MODE = MODE_XYZ + + #: The error message used when a frame body line cannot be parsed. + _BODY_ERROR_MESSAGE = 'Invalid file format in xyz coordinates of Frame.' + + @runtime_type_checking + def __init__( + self, + filename: str | List[str], + traj_format: TrajectoryFormat | str = TrajectoryFormat.AUTO, + md_format: MDEngineFormat | str = MDEngineFormat.PQ, + ) -> None: + """ + Parameters + ---------- + filename : str or list of str + The name of the file to read from or a list of filenames + to read from. + traj_format : TrajectoryFormat | str, optional + The format of the trajectory. Default is + TrajectoryFormat.AUTO. The format is inferred from the + file extension. Only the xyz-family formats XYZ, VEL and + FORCE are supported by this reader. + md_format : MDEngineFormat | str, optional + The format of the MD engine. Default is MDEngineFormat.PQ. + + Raises + ------ + TrajectoryReaderError + If the trajectory format is not an xyz-family format. + """ + super().__init__(filename) + + if not self.multiple_files: + self.filenames = [self.filename] + + self.traj_format = TrajectoryFormat((traj_format, self.filenames[0])) + + if self.traj_format not in RAW_READER_TRAJ_FORMATS: + self.logger.error( + ( + "The raw trajectory reader supports only the " + f"{[f.value for f in RAW_READER_TRAJ_FORMATS]} " + f"trajectory formats, got {self.traj_format}." + ), + exception=TrajectoryReaderError, + ) + + self.md_format = MDEngineFormat(md_format) + + # Cache of Cell objects keyed by the box substring of the + # header line, so that unchanged boxes reuse the same Cell + # object instead of rebuilding it for every frame. + self._cell_cache = {} + + def read_first_frame(self) -> AtomicSystem: + """ + Reads only the first frame of the trajectory the normal way. + + This is meant as a topology bootstrap for analyses that use + :py:meth:`raw_frame_generator`: the first frame is read as a + full AtomicSystem (including Atom objects), so that + selections/topologies can be built from it. The raw frame + stream is not affected by this method - it always starts at + the first frame. + + Returns + ------- + AtomicSystem + The first frame of the trajectory. + + Raises + ------ + TrajectoryReaderError + If the trajectory contains no frames. + """ + + frame_reader = XYZFrameReader(md_format=self.md_format) + + for filename in self.filenames: + with open(filename, "r", encoding="utf-8") as file: + header_line = self._next_header_line(file) + + if header_line is None: + continue + + n_atoms, _, _ = self._parse_header_line(header_line) + + frame_lines = [header_line] + frame_lines.extend(islice(file, n_atoms + 1)) + + return frame_reader.read( + "".join(frame_lines), + traj_format=self.traj_format, + ) + + self.logger.error( + "The trajectory does not contain any frames.", + exception=TrajectoryReaderError, + ) + + return None # pragma: no cover - logger.error raises + + @runtime_type_checking + def raw_frame_generator( + self + ) -> Generator[Tuple[Np2DNumberArray, Cell]]: + """ + A generator that yields the raw data of the trajectory frames. + + For every frame a tuple ``(values, cell)`` is yielded, where + ``values`` is the ``(n_atoms, 3)`` float32 array parsed from + the frame body (positions, velocities or forces, depending on + the trajectory format) and ``cell`` is the unit cell of the + frame. The values and cells are bit-identical to the ones + produced by + :py:meth:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.frame_generator`. + + The generator always starts at the first frame of the + trajectory, so it can be restarted by simply calling this + method again. + + Yields + ------ + Generator[Tuple[Np2DNumberArray, Cell]] + The raw values and the cell of the frames of the + trajectory. + + Raises + ------ + FrameReaderError + If a frame of the trajectory is incomplete or its body + cannot be parsed. + ValueError + If the atom count of a frame header cannot be parsed as + an integer. + """ + + strip_dummy_atom = self.md_format == MDEngineFormat.QMCFC + last_cell = None + + for filename in self.filenames: + with open(filename, "rb") as file: + buffer = b"" + offset = 0 + at_eof = False + forced_n_atoms = -1 + + while True: + ( + status, + n_atoms, + box_bytes, + header_token, + body_offset, + ) = scan_header(buffer, offset, at_eof, forced_n_atoms) + + if status == STATUS_EOF: + break + + if status == STATUS_NEED_MORE: + buffer, offset, at_eof = self._refill( + file, buffer, offset + ) + continue + + if status == STATUS_BAD_HEADER: + # replicate the error order of the line based + # header parsing: the box substring is + # validated (and cached) before the atom + # count is converted + self._cell_from_box_bytes(box_bytes) + + forced_n_atoms = int(header_token.decode("utf-8")) + + if forced_n_atoms < 0: + raise ValueError( + "Indices for islice() must be None or " + "an integer: 0 <= x <= sys.maxsize." + ) + + continue + + cell, cell_is_vacuum = self._cell_from_box_bytes( + box_bytes + ) + + try: + ( + body_status, + values, + first_name, + next_offset, + ) = parse_body( + buffer, + body_offset, + n_atoms, + at_eof, + strip_dummy_atom, + self._SLAB_MODE, + ) + except EOFError: + self.logger.error( + ( + f"Unexpected end of file {filename}: " + "incomplete frame." + ), + exception=FrameReaderError, + ) + except ValueError: + self.logger.error( + self._BODY_ERROR_MESSAGE, + exception=FrameReaderError, + ) + + if body_status == STATUS_NEED_MORE: + buffer, offset, at_eof = self._refill( + file, buffer, offset + ) + continue + + if strip_dummy_atom: + values = self._strip_dummy_values(first_name, values) + + if cell_is_vacuum and last_cell is not None: + cell = last_cell + + last_cell = cell + offset = next_offset + forced_n_atoms = -1 + + yield values, cell + + def count_frames(self) -> int: + """ + Counts the number of frames of the trajectory. + + The count is done with a cheap single-pass block scan of the + files, without materializing the lines of the files. The + number of atoms is taken from the first line of every file, + exactly as in the frame counting of + :py:class:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader`. + + Returns + ------- + int + The total number of frames of the trajectory. + + Raises + ------ + TrajectoryReaderError + If the number of lines of a file is not divisible by its + frame size or the number of atoms in the first line of a + file is invalid. + """ + + return sum( + self._count_frames_in_file(filename) + for filename in self.filenames + ) + + def _count_frames_in_file(self, filename: str) -> int: + """ + Counts the number of frames in a single trajectory file. + + Parameters + ---------- + filename : str + The name of the file to count the frames of. + + Returns + ------- + int + The number of frames in the file. + + Raises + ------ + TrajectoryReaderError + If the number of lines in the file is not divisible by + the frame size or the number of atoms in the first line + is invalid. + """ + + n_lines = self._count_lines(filename) + + if n_lines == 0: + return 0 + + with open(filename, "r", encoding="utf-8") as file: + try: + n_atoms = int(file.readline().split()[0]) + except (ValueError, IndexError): + self.logger.error( + ( + "Invalid number of atoms in the first line " + f"of file {filename}." + ), + exception=TrajectoryReaderError, + ) + + # +2 for the cell/atom_count + comment lines + frame_size = n_atoms + 2 + + n_frames, remainder = divmod(n_lines, frame_size) + + if remainder != 0: + self.logger.error( + ( + "The number of lines in the file is not divisible " + f"by the number of atoms {n_atoms} " + "in the first line." + ), + exception=TrajectoryReaderError, + ) + + return n_frames + + @staticmethod + def _count_lines(filename: str) -> int: + """ + Counts the lines of a file with a block scan. + + A trailing line without a final newline character is counted + as a line, matching the semantics of ``readlines()``. + + Parameters + ---------- + filename : str + The name of the file to count the lines of. + + Returns + ------- + int + The number of lines in the file. + """ + + block_size = 1 << 20 + n_lines = 0 + last_block = b"\n" + + with open(filename, "rb") as file: + while True: + block = file.read(block_size) + + if not block: + break + + n_lines += block.count(b"\n") + last_block = block + + if not last_block.endswith(b"\n"): + n_lines += 1 + + return n_lines + + @staticmethod + def _next_header_line(file) -> str | None: + """ + Reads the next non-blank line of a file. + + Parameters + ---------- + file : io.TextIOBase + The file object to read from. + + Returns + ------- + str | None + The next non-blank line or None if the end of the file + was reached. + """ + + while True: + line = file.readline() + + if line == "": + return None + + if line.strip() != "": + return line + + def _parse_header_line( + self, + header_line: str, + ) -> Tuple[int, Cell, bool]: + """ + Parses the header line of a frame. + + The Cell object is cached by the box substring of the header + line, so that frames with textually identical box information + share the same Cell object. + + Parameters + ---------- + header_line : str + The header line to parse. + + Returns + ------- + n_atoms : int + The number of atoms in the frame. + cell : Cell + The cell of the frame. A vacuum cell if the header line + contains no box information. + cell_is_vacuum : bool + Whether the cell of the frame is a vacuum cell. + + Raises + ------ + FrameReaderError + If the header line is not valid. Either it contains too + many or too few values. + """ + + split_header = header_line.split(None, 1) + box_text = split_header[1] if len(split_header) == 2 else "" + + cached_cell = self._cell_cache.get(box_text) + + if cached_cell is None: + cached_cell = self._build_cell(box_text) + self._cell_cache[box_text] = cached_cell + + return (int(split_header[0]), *cached_cell) + + def _build_cell(self, box_text: str) -> Tuple[Cell, bool]: + """ + Builds a Cell object from the box substring of a header line. + + Parameters + ---------- + box_text : str + The header line substring after the atom count. + + Returns + ------- + cell : Cell + The cell described by the box substring. A vacuum cell if + the substring is empty. + cell_is_vacuum : bool + Whether the cell is a vacuum cell. + + Raises + ------ + FrameReaderError + If the box substring does not contain 0, 3 or 6 values. + """ + + box_values = box_text.split() + + if len(box_values) == 0: + cell = Cell() + elif len(box_values) in {3, 6}: + cell = Cell(*(float(value) for value in box_values)) + else: + self.logger.error( + 'Invalid file format in header line of Frame.', + exception=FrameReaderError, + ) + raise FrameReaderError( + 'Invalid file format in header line of Frame.' + ) + + return cell, cell.is_vacuum + + @staticmethod + def _refill(file, buffer: bytes, offset: int) -> Tuple[bytes, int, bool]: + """ + Reads the next chunk of a file into the parse buffer. + + The already consumed part of the buffer (everything before + ``offset``) is dropped and the next chunk is appended, so + that a frame spanning a chunk boundary can be re-parsed from + its start. When the end of the file is reached, the buffer + is terminated with a newline (if it does not already end + with one), so that the slab parsers only ever see complete + lines. + + Parameters + ---------- + file : io.BufferedReader + The (binary mode) file object to read from. + buffer : bytes + The current parse buffer. + offset : int + The offset of the first unconsumed byte of the buffer. + + Returns + ------- + buffer : bytes + The refilled parse buffer. + offset : int + The new parse offset (always 0). + at_eof : bool + Whether the end of the file was reached. + """ + + chunk = file.read(_CHUNK_SIZE) + buffer = buffer[offset:] + chunk + at_eof = chunk == b"" + + if at_eof and buffer != b"" and not buffer.endswith(b"\n"): + buffer += b"\n" + + return buffer, 0, at_eof + + def _cell_from_box_bytes(self, box_bytes: bytes) -> Tuple[Cell, bool]: + """ + Returns the (cached) Cell of a raw header box substring. + + Parameters + ---------- + box_bytes : bytes + The raw box substring of the header line. + + Returns + ------- + cell : Cell + The cell described by the box substring. A vacuum cell + if the substring is empty. + cell_is_vacuum : bool + Whether the cell is a vacuum cell. + + Raises + ------ + FrameReaderError + If the box substring does not contain 0, 3 or 6 values. + """ + + cached_cell = self._cell_cache.get(box_bytes) + + if cached_cell is None: + cached_cell = self._build_cell(box_bytes.decode("utf-8")) + self._cell_cache[box_bytes] = cached_cell + + return cached_cell + + def _strip_dummy_values( + self, + first_name: bytes | None, + values: Np2DNumberArray | Np1DNumberArray, + ) -> Np2DNumberArray | Np1DNumberArray: + """ + Strips the leading QMCFC dummy atom row from the values. + + Parameters + ---------- + first_name : bytes | None + The raw name token of the first atom line of the frame, + or None if the frame has no atom lines. + values : numpy.ndarray + The parsed values of the frame body. + + Returns + ------- + numpy.ndarray + The values without the leading dummy atom row. + + Raises + ------ + FrameReaderError + If the first atom of the frame is not X. + """ + + if first_name is None: + # a QMCFC frame without any atom row; matches the + # IndexError of the line based dummy atom handling + raise IndexError('list index out of range') + + if first_name.decode("utf-8").upper() != 'X': + self.logger.error( + ( + 'The first atom in one of the frames is not X. ' + 'Please use PQ (default) md engine instead' + ), + exception=FrameReaderError, + ) + + return values[1:] diff --git a/PQAnalysis/topology/selection.py b/PQAnalysis/topology/selection.py index dfe0f598..a23e4aed 100644 --- a/PQAnalysis/topology/selection.py +++ b/PQAnalysis/topology/selection.py @@ -54,56 +54,59 @@ class Selection: If the selection object is a Selection object, the selection is copied. There are several ways to create a selection: - - None: all atoms are selected - - Atom: the given atom is selected - - Element: all atoms with the given element type are selected - - Atoms: all atoms in the given list are selected - - Elements: all atoms with the given element types are selected - - Np1DIntArray: the atoms with the given indices are selected - - List[str]: all atoms with the given atom type names are selected - - str: the given string is parsed and the atoms selected by the - selection are selected - - This string will be parsed based on a Lark grammar. Which is - defined as follows: - - - simple word containing only letters and numbers: the - atom type with the given name is selected - - : the atom with the given index is selected - - ..: the indices from integer1 to integer2 - are selected - - -: the indices from integer1 to integer2 - are selected - - ....: the indices from integer1 to - integer3 with a step size of integer3 are selected - - atom(, ): the atom with the given atom - type and atomic number is selected - - atom(, ): the atom with the given atom - type and element symbol is selected - - elem(): all atoms with the given element type - are selected - - elem(): all atoms with the given element type - are selected - - `*`: all atoms are selected (same as 'all'), useful if only - few atoms should be excluded - - All of the above statements can be combined with the following operators: - - - ',': the union of the two statements is selected, meaning that - the atoms selected by the first statement and the atoms selected - by the second statement are selected - - '&': the intersection of the two statements is selected, meaning - that only the atoms selected by both statements are selected - - '|': the set difference of the two statements is selected, - meaning that only the atoms selected by the first statement are - selected, which are not selected by the second statement - - The operators are evaluated in the following order: '|' -> '&' -> ',' - This means that the ',' operator has the lowest precedence and the '|' - operator has the highest precedence and therefore binds the strongest. - - Additionally, parentheses can be used to group statements and change - the order of evaluation. + + - None: all atoms are selected + - Atom: the given atom is selected + - Element: all atoms with the given element type are selected + - Atoms: all atoms in the given list are selected + - Elements: all atoms with the given element types are selected + - Np1DIntArray: the atoms with the given indices are selected + - List[str]: all atoms with the given atom type names are selected + - str: the given string is parsed and the atoms selected by the + selection are selected. + + This string will be parsed based on a Lark grammar, which is + defined as follows: + + - simple word containing only letters and numbers: the atom type + with the given name is selected + - : the atom with the given index is selected + - ..: the indices from integer1 to integer2 + are selected + - -: the indices from integer1 to integer2 + are selected + - ....: the indices from integer1 to + integer3 with a step size of integer3 are selected + - atom(, ): the atom with the given atom + type and atomic number is selected + - atom(, ): the atom with the given atom + type and element symbol is selected + - elem(): all atoms with the given element type + are selected + - elem(): all atoms with the given element type + are selected + - `*`: all atoms are selected (same as 'all'), useful if only + few atoms should be excluded + + All of the above statements can be combined with the following + operators: + + - ',': the union of the two statements is selected, meaning that + the atoms selected by the first statement and the atoms selected + by the second statement are selected + - '&': the intersection of the two statements is selected, meaning + that only the atoms selected by both statements are selected + - '|': the set difference of the two statements is selected, + meaning that only the atoms selected by the first statement are + selected, which are not selected by the second statement + + The operators are evaluated in the following order: + '|' -> '&' -> ','. This means that the ',' operator has the lowest + precedence and the '|' operator has the highest precedence and + therefore binds the strongest. + + Additionally, parentheses can be used to group statements and + change the order of evaluation. Notes diff --git a/benchmarks/analysis/benchmark_momentum.py b/benchmarks/analysis/benchmark_momentum.py new file mode 100644 index 00000000..6af2163e --- /dev/null +++ b/benchmarks/analysis/benchmark_momentum.py @@ -0,0 +1,50 @@ +import numpy as np +import pytest + +from PQAnalysis.analysis.momentum import Momentum +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory + + +def _random_velocities(n_frames, n_atoms, seed=42): + rng = np.random.default_rng(seed) + + return rng.uniform(-1.0, 1.0, (n_frames, n_atoms, 3)) + + +def _write_velocity_file(path, n_frames, n_atoms, seed=42): + velocities = _random_velocities(n_frames, n_atoms, seed=seed) + + lines = [] + for frame_velocities in velocities: + lines.append(f"{n_atoms}\n\n") + for x, y, z in frame_velocities: + lines.append(f"H {x:.6f} {y:.6f} {z:.6f}\n") + + with open(path, "w", encoding="utf-8") as file: + file.writelines(lines) + + return str(path) + + +@pytest.mark.benchmark(group="Momentum") +class BenchmarkMomentum: + + def benchmark_run(self, benchmark): + atoms = [Atom("H") for _ in range(100)] + frames = [ + AtomicSystem(atoms=atoms, vel=vel) + for vel in _random_velocities(50, 100) + ] + traj = Trajectory(frames) + + benchmark(lambda: Momentum(traj).run()) + + def benchmark_run_reader_fast_path(self, benchmark, tmp_path): + # end-to-end fast path: raw-frame streaming from a velocity + # file without per-frame AtomicSystem construction + filename = _write_velocity_file(tmp_path / "traj.vel", 500, 100) + + benchmark(lambda: Momentum(TrajectoryReader(filename)).run()) diff --git a/benchmarks/analysis/benchmark_msd.py b/benchmarks/analysis/benchmark_msd.py new file mode 100644 index 00000000..3bbd9ceb --- /dev/null +++ b/benchmarks/analysis/benchmark_msd.py @@ -0,0 +1,80 @@ +import numpy as np +import pytest + +from PQAnalysis.analysis.msd import MSD +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom, Cell +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory + + +def _random_walk_positions(n_frames, n_atoms, box=20.0, seed=42): + rng = np.random.default_rng(seed) + + return np.cumsum( + rng.normal(0.0, 0.1, (n_frames, n_atoms, 3)), + axis=0, + ) % box + + +def _random_walk_trajectory(n_frames, n_atoms, box=20.0, seed=42): + cell = Cell(box, box, box) + atoms = [Atom("O") if i % 2 == 0 else Atom("H") for i in range(n_atoms)] + + positions = _random_walk_positions(n_frames, n_atoms, box=box, seed=seed) + + return Trajectory([ + AtomicSystem(atoms=atoms, pos=pos, cell=cell) for pos in positions + ]) + + +def _write_random_walk_file(path, n_frames, n_atoms, box=20.0, seed=42): + positions = _random_walk_positions(n_frames, n_atoms, box=box, seed=seed) + + lines = [] + for frame_positions in positions: + lines.append(f"{n_atoms} {box} {box} {box}\n\n") + for i, (x, y, z) in enumerate(frame_positions): + name = "O" if i % 2 == 0 else "H" + lines.append(f"{name} {x:.6f} {y:.6f} {z:.6f}\n") + + with open(path, "w", encoding="utf-8") as file: + file.writelines(lines) + + return str(path) + + +@pytest.mark.benchmark(group="MSD") +class BenchmarkMSD: + + def benchmark_run(self, benchmark): + traj = _random_walk_trajectory(2000, 100) + + benchmark(lambda: MSD(traj, "O", window=200, gap=10).run()) + + def benchmark_run_many_origins(self, benchmark): + traj = _random_walk_trajectory(2000, 100) + + benchmark(lambda: MSD(traj, "O", window=1000, gap=10).run()) + + def benchmark_run_reader_fast_path(self, benchmark, tmp_path): + # end-to-end fast path: raw-frame streaming from file plus + # the Cython (or fallback) accumulation kernel + filename = _write_random_walk_file( + tmp_path / "traj.xyz", 2000, 100 + ) + + benchmark( + lambda: + MSD(TrajectoryReader(filename), "O", window=200, gap=10).run() + ) + + def benchmark_run_reader_fast_path_many_origins(self, benchmark, tmp_path): + filename = _write_random_walk_file( + tmp_path / "traj.xyz", 2000, 100 + ) + + benchmark( + lambda: + MSD(TrajectoryReader(filename), "O", window=1000, gap=10).run() + ) diff --git a/benchmarks/analysis/benchmark_rdf.py b/benchmarks/analysis/benchmark_rdf.py new file mode 100644 index 00000000..0a301ebf --- /dev/null +++ b/benchmarks/analysis/benchmark_rdf.py @@ -0,0 +1,95 @@ +import numpy as np +import pytest + +from PQAnalysis.analysis import RDF +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom, Cell +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory + + +def _random_positions(n_frames, n_atoms, box=20.0, seed=42): + rng = np.random.default_rng(seed) + + return rng.uniform(0.0, box, (n_frames, n_atoms, 3)) + + +def _random_trajectory(n_frames, n_atoms, box=20.0, seed=42): + cell = Cell(box, box, box) + atoms = [Atom("O") if i % 2 == 0 else Atom("H") for i in range(n_atoms)] + + positions = _random_positions(n_frames, n_atoms, box=box, seed=seed) + + return Trajectory([ + AtomicSystem(atoms=atoms, pos=pos, cell=cell) for pos in positions + ]) + + +def _write_random_file(path, n_frames, n_atoms, box=20.0, seed=42): + positions = _random_positions(n_frames, n_atoms, box=box, seed=seed) + + lines = [] + for frame_positions in positions: + lines.append(f"{n_atoms} {box} {box} {box}\n\n") + for i, (x, y, z) in enumerate(frame_positions): + name = "O" if i % 2 == 0 else "H" + lines.append(f"{name} {x:.6f} {y:.6f} {z:.6f}\n") + + with open(path, "w", encoding="utf-8") as file: + file.writelines(lines) + + return str(path) + + +@pytest.mark.benchmark(group="RDF") +class BenchmarkRDF: + + def benchmark_run(self, benchmark): + traj = _random_trajectory(200, 100) + + benchmark( + lambda: RDF(traj, "O", "H", delta_r=0.05, r_max=8.0).run() + ) + + def benchmark_run_no_intra_molecular(self, benchmark): + traj = _random_trajectory(200, 100) + + benchmark( + lambda: RDF( + traj, + "O", + "H", + delta_r=0.05, + r_max=8.0, + no_intra_molecular=True, + ).run() + ) + + def benchmark_run_reader_fast_path(self, benchmark, tmp_path): + # end-to-end fast path: header-only cell scan, raw-frame + # streaming from file and the Cython (or fallback) + # distance-histogram kernel + filename = _write_random_file(tmp_path / "traj.xyz", 200, 100) + + benchmark( + lambda: RDF( + TrajectoryReader(filename), + "O", + "H", + delta_r=0.05, + r_max=8.0, + ).run() + ) + + def benchmark_run_reader_fast_path_large(self, benchmark, tmp_path): + filename = _write_random_file(tmp_path / "traj.xyz", 1000, 100) + + benchmark( + lambda: RDF( + TrajectoryReader(filename), + "O", + "H", + delta_r=0.05, + r_max=8.0, + ).run() + ) diff --git a/benchmarks/analysis/benchmark_spectrum_broadening.py b/benchmarks/analysis/benchmark_spectrum_broadening.py new file mode 100644 index 00000000..ce8c0522 --- /dev/null +++ b/benchmarks/analysis/benchmark_spectrum_broadening.py @@ -0,0 +1,27 @@ +import numpy as np +import pytest + +from PQAnalysis.analysis.spectrum_broadening import broaden, wavenumber_grid + + + +@pytest.mark.benchmark(group="SpectrumBroadening") +class BenchmarkSpectrumBroadening: + + def benchmark_broaden_gaussian(self, benchmark): + rng = np.random.default_rng(42) + wavenumbers = rng.uniform(10.0, 4000.0, 200) + intensities = rng.uniform(0.0, 10.0, 200) + grid = wavenumber_grid() + + benchmark(broaden, wavenumbers, intensities, grid) + + def benchmark_broaden_lorentzian(self, benchmark): + rng = np.random.default_rng(42) + wavenumbers = rng.uniform(10.0, 4000.0, 200) + intensities = rng.uniform(0.0, 10.0, 200) + grid = wavenumber_grid() + + benchmark( + broaden, wavenumbers, intensities, grid, kernel="lorentzian" + ) diff --git a/benchmarks/analysis/benchmark_vacf.py b/benchmarks/analysis/benchmark_vacf.py new file mode 100644 index 00000000..ad29849c --- /dev/null +++ b/benchmarks/analysis/benchmark_vacf.py @@ -0,0 +1,151 @@ +import numpy as np +import pytest + +from PQAnalysis.analysis.vacf import VACF, vacf_spectrum +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory, TrajectoryFormat + + +def _random_velocities(n_frames, n_atoms, seed=42): + rng = np.random.default_rng(seed) + + return rng.uniform(-1.0, 1.0, (n_frames, n_atoms, 3)) + + +def _make_trajectory(n_frames=400, n_atoms=50, seed=42): + atoms = [Atom("H") for _ in range(n_atoms)] + + return Trajectory([ + AtomicSystem(atoms=atoms, vel=vel) + for vel in _random_velocities(n_frames, n_atoms, seed=seed) + ]) + + +def _write_velocity_file(path, n_frames, n_atoms, seed=42): + velocities = _random_velocities(n_frames, n_atoms, seed=seed) + + lines = [] + for frame in velocities: + lines.append(f"{n_atoms} 20.0 22.0 24.0\n\n") + for i, (x, y, z) in enumerate(frame): + name = "O" if i % 2 == 0 else "H" + lines.append(f"{name} {x:.7f} {y:.7f} {z:.7f}\n") + + with open(path, "w", encoding="utf-8") as file: + file.writelines(lines) + + return str(path) + + +def _write_charge_file(path, n_frames, n_atoms, seed=4711): + rng = np.random.default_rng(seed) + charges = 0.5 + 0.1 * rng.standard_normal((n_frames, n_atoms)) + + lines = [] + for frame in charges: + lines.append(f"{n_atoms}\n\n") + for i, charge in enumerate(frame): + name = "O" if i % 2 == 0 else "H" + lines.append(f"{name} {charge:.7f}\n") + + with open(path, "w", encoding="utf-8") as file: + file.writelines(lines) + + return str(path) + + +@pytest.mark.benchmark(group="VACF") +class BenchmarkVACF: + + def benchmark_run_direct(self, benchmark): + traj = _make_trajectory() + + benchmark( + lambda: VACF( + traj, + window_size=100, + time_step=0.002, + gap=5, + ).run() + ) + + def benchmark_run_fft(self, benchmark): + traj = _make_trajectory() + + benchmark( + lambda: VACF( + traj, + window_size=100, + time_step=0.002, + method="fft", + ).run() + ) + + def benchmark_run_reader_fast_path(self, benchmark, tmp_path): + # end-to-end fast path: raw-frame streaming from file plus + # the Cython (or fallback) accumulation kernel + filename = _write_velocity_file(tmp_path / "traj.vel", 2000, 100) + + benchmark( + lambda: VACF( + TrajectoryReader(filename), + window_size=200, + time_step=0.002, + gap=10, + ).run() + ) + + def benchmark_run_reader_fast_path_flux_static(self, benchmark, tmp_path): + filename = _write_velocity_file(tmp_path / "traj.vel", 2000, 100) + charges = np.tile([-0.8, 0.4], 50) + + benchmark( + lambda: VACF( + TrajectoryReader(filename), + window_size=200, + time_step=0.002, + gap=10, + charges=charges, + ).run() + ) + + def benchmark_run_reader_fast_path_flux_charge_traj( + self, + benchmark, + tmp_path, + ): + # charge-flux mode with the lockstep raw charge stream + filename = _write_velocity_file(tmp_path / "traj.vel", 2000, 100) + charge_filename = _write_charge_file( + tmp_path / "traj.chrg", 2000, 100 + ) + + benchmark( + lambda: VACF( + TrajectoryReader(filename), + window_size=200, + time_step=0.002, + gap=10, + charge_traj=TrajectoryReader( + charge_filename, + traj_format=TrajectoryFormat.CHARGE, + ), + ).run() + ) + + def benchmark_spectrum(self, benchmark): + time = np.arange(1001) * 0.002 + correlation = np.cos(2.0 * np.pi * 25.0 * time) * np.exp(-2.0 * time) + + benchmark( + lambda: vacf_spectrum( + time, + correlation, + ftsize=2000, + window_function="blackman", + window_start=0.5, + window_stop=1.5, + ) + ) diff --git a/docs/source/code/PQAnalysis.analysis.rst b/docs/source/code/PQAnalysis.analysis.rst index 24a01836..7cdae7f9 100644 --- a/docs/source/code/PQAnalysis.analysis.rst +++ b/docs/source/code/PQAnalysis.analysis.rst @@ -16,6 +16,7 @@ analysis :maxdepth: 1 PQAnalysis.analysis.rdf + PQAnalysis.analysis.vibrational diff --git a/docs/source/code/PQAnalysis.analysis.vibrational.api.rst b/docs/source/code/PQAnalysis.analysis.vibrational.api.rst new file mode 100644 index 00000000..5c0492c5 --- /dev/null +++ b/docs/source/code/PQAnalysis.analysis.vibrational.api.rst @@ -0,0 +1,32 @@ + +:autogenerated: + +api +========================================== + +.. currentmodule:: PQAnalysis.analysis.vibrational.api + +.. automodule:: PQAnalysis.analysis.vibrational.api + :members: vibrations + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Functions: + + .. autosummary:: + :nosignatures: + + vibrations + + + + + + + + Reference + --------- \ No newline at end of file diff --git a/docs/source/code/PQAnalysis.analysis.vibrational.exceptions.rst b/docs/source/code/PQAnalysis.analysis.vibrational.exceptions.rst new file mode 100644 index 00000000..699cce02 --- /dev/null +++ b/docs/source/code/PQAnalysis.analysis.vibrational.exceptions.rst @@ -0,0 +1,32 @@ + +:autogenerated: + +exceptions +================================================= + +.. currentmodule:: PQAnalysis.analysis.vibrational.exceptions + +.. automodule:: PQAnalysis.analysis.vibrational.exceptions + :members: VibrationalAnalysisError + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Exceptions: + + .. autosummary:: + :nosignatures: + + VibrationalAnalysisError + + + + + + + + Reference + --------- \ No newline at end of file diff --git a/docs/source/code/PQAnalysis.analysis.vibrational.rst b/docs/source/code/PQAnalysis.analysis.vibrational.rst new file mode 100644 index 00000000..f6e8025f --- /dev/null +++ b/docs/source/code/PQAnalysis.analysis.vibrational.rst @@ -0,0 +1,60 @@ + +:autogenerated: + +analysis.vibrational +======================================= + +.. automodule:: PQAnalysis.analysis.vibrational + + + + + Submodules + ---------- + + .. toctree:: + :maxdepth: 1 + + PQAnalysis.analysis.vibrational.api + PQAnalysis.analysis.vibrational.exceptions + PQAnalysis.analysis.vibrational.vibrational_analysis + PQAnalysis.analysis.vibrational.vibrational_input_file_reader + + + + + Summary + ------- + + ``__all__`` Classes: + + + .. list-table:: + + * - :class:`VibrationalAnalysisInputFileReader ` + - A class to read input files for vibrational analysis. + * - :class:`VibrationalAnalysisResult ` + - Result container for a vibrational analysis. + + + ``__all__`` Functions: + + + .. list-table:: + + * - :func:`calculate ` + - Calculate wavenumbers, force constants, reduced masses and normal modes. + * - :func:`read_hessian_file ` + - Read a plain square Hessian matrix. + * - :func:`select_mode_indices ` + - Select mode indices from a user-facing one-based mode selection. + * - :func:`vibrations ` + - Run vibrational analysis from an input file. + * - :func:`write_calculate_output ` + - Write the tabular vibrational analysis output. + * - :func:`write_extxyz_modes ` + - Write selected normal modes to one extended XYZ file. + * - :func:`write_normal_modes ` + - Write normal modes in matrix form. + * - :func:`write_xyz_modes ` + - Write one sinusoidal XYZ trajectory per selected normal mode. diff --git a/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_analysis.rst b/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_analysis.rst new file mode 100644 index 00000000..4792b72c --- /dev/null +++ b/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_analysis.rst @@ -0,0 +1,63 @@ + +:autogenerated: + +vibrational_analysis +=========================================================== + +.. currentmodule:: PQAnalysis.analysis.vibrational.vibrational_analysis + +.. automodule:: PQAnalysis.analysis.vibrational.vibrational_analysis + :members: BOLTZMANN_EV_K, LINEAR_ROTATION_RTOL, MODE_THRESHOLD_CM, SPEED_OF_LIGHT_CM_S, VibrationalAnalysisResult, WAVENUMBER_TO_EV, calculate, calculate_from_system, center_to_com, force_constant, hessian_sign_factor, inertia_tensor, infrared_intensity, internal_coordinates, internal_subspace, mass_weighted_hessian, masses_matrix, mode_displacement, read_hessian_file, reduced_mass, rotational_modes, select_mode_indices, signed_sqrt, symmetrize_addition, transformation_matrix, translational_modes, wavenumber, write_calculate_output, write_extxyz_modes, write_normal_modes, write_xyz_modes + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Classes: + + .. autosummary:: + :nosignatures: + + VibrationalAnalysisResult + + Functions: + + .. autosummary:: + :nosignatures: + + calculate + calculate_from_system + center_to_com + force_constant + hessian_sign_factor + inertia_tensor + infrared_intensity + internal_coordinates + internal_subspace + mass_weighted_hessian + masses_matrix + mode_displacement + read_hessian_file + reduced_mass + rotational_modes + select_mode_indices + signed_sqrt + symmetrize_addition + transformation_matrix + translational_modes + wavenumber + write_calculate_output + write_extxyz_modes + write_normal_modes + write_xyz_modes + + + + + + + + Reference + --------- \ No newline at end of file diff --git a/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_input_file_reader.rst b/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_input_file_reader.rst new file mode 100644 index 00000000..c4fbb2e2 --- /dev/null +++ b/docs/source/code/PQAnalysis.analysis.vibrational.vibrational_input_file_reader.rst @@ -0,0 +1,32 @@ + +:autogenerated: + +vibrational_input_file_reader +==================================================================== + +.. currentmodule:: PQAnalysis.analysis.vibrational.vibrational_input_file_reader + +.. automodule:: PQAnalysis.analysis.vibrational.vibrational_input_file_reader + :members: VibrationalAnalysisInputFileReader, input_keys_documentation + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Classes: + + .. autosummary:: + :nosignatures: + + VibrationalAnalysisInputFileReader + + + + + + + + Reference + --------- \ No newline at end of file diff --git a/docs/source/code/PQAnalysis.cli.rst b/docs/source/code/PQAnalysis.cli.rst index bf7e9baa..5716de0a 100644 --- a/docs/source/code/PQAnalysis.cli.rst +++ b/docs/source/code/PQAnalysis.cli.rst @@ -23,9 +23,9 @@ cli PQAnalysis.cli.rst2xyz PQAnalysis.cli.traj2box PQAnalysis.cli.traj2qmcfc + PQAnalysis.cli.vibrations PQAnalysis.cli.xyz2gen - diff --git a/docs/source/code/PQAnalysis.cli.vibrations.rst b/docs/source/code/PQAnalysis.cli.vibrations.rst new file mode 100644 index 00000000..2deb0a50 --- /dev/null +++ b/docs/source/code/PQAnalysis.cli.vibrations.rst @@ -0,0 +1,39 @@ + +:autogenerated: + +vibrations +================================ + +.. currentmodule:: PQAnalysis.cli.vibrations + +.. automodule:: PQAnalysis.cli.vibrations + :members: VibrationsCLI, code_base_url, input_keys_documentation, main + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Classes: + + .. autosummary:: + :nosignatures: + + VibrationsCLI + + Functions: + + .. autosummary:: + :nosignatures: + + main + + + + + + + + Reference + --------- \ No newline at end of file diff --git a/docs/source/code/PQAnalysis.io.exceptions.rst b/docs/source/code/PQAnalysis.io.exceptions.rst index 85e0b10e..f031b6fd 100644 --- a/docs/source/code/PQAnalysis.io.exceptions.rst +++ b/docs/source/code/PQAnalysis.io.exceptions.rst @@ -7,7 +7,7 @@ exceptions .. currentmodule:: PQAnalysis.io.exceptions .. automodule:: PQAnalysis.io.exceptions - :members: BoxFileFormatError, BoxWriterError, FileWritingModeError, MoldescriptorReaderError, OutputFileFormatError + :members: BoxFileFormatError, BoxWriterError, FileWritingModeError, MoldescriptorReaderError, OptimizerReaderError, OutputFileFormatError :undoc-members: :show-inheritance: :member-order: groupwise @@ -24,6 +24,7 @@ exceptions BoxWriterError FileWritingModeError MoldescriptorReaderError + OptimizerReaderError OutputFileFormatError @@ -33,4 +34,4 @@ exceptions Reference - --------- \ No newline at end of file + --------- diff --git a/docs/source/code/PQAnalysis.io.optimizer_file_reader.rst b/docs/source/code/PQAnalysis.io.optimizer_file_reader.rst new file mode 100644 index 00000000..d712795d --- /dev/null +++ b/docs/source/code/PQAnalysis.io.optimizer_file_reader.rst @@ -0,0 +1,37 @@ + +:autogenerated: + +optimizer_file_reader +========================================== + +.. currentmodule:: PQAnalysis.io.optimizer_file_reader + +.. automodule:: PQAnalysis.io.optimizer_file_reader + :members: OptimizerFileReader, read_optimizer_file + :undoc-members: + :show-inheritance: + :member-order: groupwise + + Summary + ------- + + Classes: + + .. autosummary:: + :nosignatures: + + OptimizerFileReader + + Functions: + + .. autosummary:: + :nosignatures: + + read_optimizer_file + + + + + + Reference + --------- diff --git a/docs/source/code/PQAnalysis.io.rst b/docs/source/code/PQAnalysis.io.rst index bbfe6181..13571acd 100644 --- a/docs/source/code/PQAnalysis.io.rst +++ b/docs/source/code/PQAnalysis.io.rst @@ -24,6 +24,7 @@ io PQAnalysis.io.formats PQAnalysis.io.info_file_reader PQAnalysis.io.moldescriptor_reader + PQAnalysis.io.optimizer_file_reader PQAnalysis.io.write_api Subpackages @@ -43,4 +44,3 @@ io - diff --git a/docs/source/code/modules.rst b/docs/source/code/modules.rst deleted file mode 100644 index 0c8ce3aa..00000000 --- a/docs/source/code/modules.rst +++ /dev/null @@ -1,7 +0,0 @@ -PQAnalysis -========== - -.. toctree:: - :maxdepth: 4 - - PQAnalysis diff --git a/docs/source/conf.py b/docs/source/conf.py index 7db4df75..d7f93d0e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -85,7 +85,6 @@ html_theme_options = { 'canonical_url': '', 'analytics_id': '', # Provided by Google in your dashboard - 'display_version': True, 'prev_next_buttons_location': 'bottom', 'style_external_links': False, @@ -101,7 +100,7 @@ html_logo = 'logo/PQAnalysis.png' # github_url = '' -# html_baseurl = '' +html_baseurl = 'https://molarverse.github.io/PQAnalysis/' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs/source/userGuide/userGuide.rst b/docs/source/userGuide/userGuide.rst index 83dfe593..970df850 100644 --- a/docs/source/userGuide/userGuide.rst +++ b/docs/source/userGuide/userGuide.rst @@ -4,6 +4,12 @@ User Guide ########## +.. toctree:: + :hidden: + :maxdepth: 1 + + inputFile + Command Line Interface ====================== @@ -15,6 +21,9 @@ Input file based tools For more details on the grammar and syntax of the input file see :ref:`inputFile`. - :ref:`rdf` +- :ref:`msd` +- :ref:`vacf` +- :ref:`vibrations` RDF input files ^^^^^^^^^^^^^^^ @@ -53,11 +62,96 @@ as-is. If both files are given and :code:`no_intra_molecular` is omitted, included. Inferred and defaulted values are written to the normal PQAnalysis log output. +Vibrational analysis input files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Vibrational analyses use a structure file and a Cartesian Hessian matrix. The Hessian can be generated by a PQ ``mm-hessian`` run. + +.. code-block:: text + + structure_file = structure.rst + hessian_file = hessian.dat + moldescriptor_file = moldescriptor.dat + out_file = wavenumbers.dat + normal_modes_file = normal_modes.dat + modes_prefix = mode + modes_file = modes.xyz + modes = positive + modes_frames = 30 + modes_amplitude = 0.25 + modes_threshold = 1.0e-6 + unit = kcal + hessian_sign = auto + +The ``moldescriptor_file`` key is optional, but IR intensities require partial charges. ``unit`` accepts ``kcal``, ``hartree`` and ``ev``. ``hessian_sign = auto`` lets PQAnalysis choose the sign convention that gives the larger number of non-negative vibrational modes. + +Mode visualization is optional. ``modes_prefix`` writes one sinusoidal multi-frame XYZ animation per selected mode, for example ``mode-6.xyz``. ``modes_file`` writes one extended XYZ file with mode vectors and metadata, similar to ASE/Jmol vibration output. ``modes`` accepts ``all``, ``nonzero``, ``positive``, one mode number, a list of mode numbers or a range. Explicit mode numbers are one-based. ``modes_frames`` controls animation frames, ``modes_amplitude`` controls fixed-amplitude displacement in Angstrom, and ``modes_threshold`` filters named mode selections in ``cm-1``. ``modes_temperature`` can be used instead for ASE-style energy-scaled animations. + +MSD input files +^^^^^^^^^^^^^^^ + +Mean square displacement analyses compute the multiple-time-origin MSD of a +selected atom set with periodic-image unwrapping. If ``time_step`` (in ps) is +given, the self-diffusion coefficient is obtained from an Einstein-relation +fit over the trailing ``fit_window`` points and reported in the log output in +m\ :sup:`2`/s: + +.. code-block:: text + + traj_files = trajectory.xyz + target_selection = O + out_file = msd.dat + window = 1000 + gap = 10 + time_step = 0.001 + fit_window = 200 + +The output file contains the frame lag and the per-axis MSD in Angstrom +squared, matching the format of the legacy Diffcalc tool. ``window`` must be +divisible by ``gap``. + +VACF input files +^^^^^^^^^^^^^^^^ + +Velocity autocorrelation analyses read a velocity trajectory (``.vel``) and +compute the normalized VACF; with ``spectrum_file`` set, the windowed cosine +transform yields a vibrational power spectrum in cm\ :sup:`-1`: + +.. code-block:: text + + traj_files = trajectory.vel + target_selection = all + out_file = vacf.dat + time_step = 0.001 + window = 2500 + gap = 5 + spectrum_file = spectrum.dat + ftsize = 5000 + window_function = exponential + window_param = 4.0 + window_start = 0.0 + window_stop = 1.0 + +Setting ``charge_file`` (static charges) or ``charge_files`` (a charge +trajectory read in lockstep) switches to the charge-flux autocorrelation +q\ :sub:`i`\ v\ :sub:`i`, whose spectrum approximates an infrared spectrum. +``window_function`` accepts ``exponential``, ``hann`` and ``blackman``; +``method = fft`` selects a faster dense-origin estimator instead of the +legacy-exact sliding-origin one. + Pure command line tools ----------------------- +- :ref:`build_spectrum` +- :ref:`check_momentum` - :ref:`continue_input` - :ref:`rst2xyz` - :ref:`traj2extxyz` - :ref:`traj2qmcfc` - :ref:`traj2box` + +Note that :ref:`check_momentum` parses velocities in +single precision: reported momentum norms below roughly 1e-7 times the +scaled sum of m\ :sub:`i` \|v\ :sub:`i`\| are parsing noise rather than +physical center of mass drift (the legacy ``equipartition.jl`` tool parses +in double precision and resolves smaller drift). diff --git a/examples/continue_input/pq/run-08.in b/examples/continue_input/pq/run-08.in new file mode 100644 index 00000000..1382bcbf --- /dev/null +++ b/examples/continue_input/pq/run-08.in @@ -0,0 +1,13 @@ +# PQ continuation example +jobtype = qm-md; +nstep = 10000; timestep = 0.5; +start_file = pq-md-07.rst; +output_file = pq-md-08.out; +info_file = pq-md-08.info; +energy_file = pq-md-08.en; +traj_file = pq-md-08.xyz; +vel_file = pq-md-08.vel; +charge_file = pq-md-08.chrg; +force_file = pq-md-08.frc; +restart_file = pq-md-08.rst; +file_prefix = pq-md-08; diff --git a/examples/continue_input/pq/run-09.in.ref b/examples/continue_input/pq/run-09.in.ref new file mode 100644 index 00000000..7eaaa81c --- /dev/null +++ b/examples/continue_input/pq/run-09.in.ref @@ -0,0 +1,13 @@ +# PQ continuation example +jobtype = qm-md; +nstep = 10000; timestep = 0.5; +start_file = pq-md-08.rst; +output_file = pq-md-09.out; +info_file = pq-md-09.info; +energy_file = pq-md-09.en; +traj_file = pq-md-09.xyz; +vel_file = pq-md-09.vel; +charge_file = pq-md-09.chrg; +force_file = pq-md-09.frc; +restart_file = pq-md-09.rst; +file_prefix = pq-md-09; diff --git a/examples/continue_input/qmcfc/run-01.in b/examples/continue_input/qmcfc/run-01.in new file mode 100644 index 00000000..5189d04e --- /dev/null +++ b/examples/continue_input/qmcfc/run-01.in @@ -0,0 +1,29 @@ + jobtype = qmcf-md; + nstep = 50000; timestep = 0.2; + write_traj = on; + output_freq = 2; + rcoulomb= 15.0; + density = 0.997; + long_range = rf; ewald_param = 10; epsilon = 78.4; + thermostat = berendsen; t_relaxation = 0.1; temp = 298.15; + manostat = berendsen; p_relaxation = 0.5; pressure = 1.01325; + virial = atomic; + integrator = v-verlet; + water_intra = tip3pmtr; + guff_path = . ; + noncoulomb = lj; + r_oh_equilibrium = 0.958; alpha_hoh_equilibrium = 109.471519; + r_hh_equilibrium = 1.594410; + mtr_l_rr = 114.438097512; mtr_l_rt = -163.161567873; mtr_l_tt = 242.114388072; + qm_prog = dftbplus; qm_script = dftbplus; smoothing=exact; + rcore = 0.0; rlayer = 3.8; rsmoothing = 3.6; + + start_file = k-qmcf-00.rst; + output_file = k-qmcf-01.out; + info_file = k-qmcf-01.info; + energy_file = k-qmcf-01.en; + traj_file = k-qmcf-01.xyz; + vel_file = k-qmcf-01.vel; + charge_file = k-qmcf-01.chrg; + restart_file = k-qmcf-01.rst; + diff --git a/examples/continue_input/qmcfc/run-02.in.ref b/examples/continue_input/qmcfc/run-02.in.ref new file mode 100644 index 00000000..37530e6a --- /dev/null +++ b/examples/continue_input/qmcfc/run-02.in.ref @@ -0,0 +1,29 @@ + jobtype = qmcf-md; + nstep = 50000; timestep = 0.2; + write_traj = on; + output_freq = 2; + rcoulomb= 15.0; + density = 0.997; + long_range = rf; ewald_param = 10; epsilon = 78.4; + thermostat = berendsen; t_relaxation = 0.1; temp = 298.15; + manostat = berendsen; p_relaxation = 0.5; pressure = 1.01325; + virial = atomic; + integrator = v-verlet; + water_intra = tip3pmtr; + guff_path = . ; + noncoulomb = lj; + r_oh_equilibrium = 0.958; alpha_hoh_equilibrium = 109.471519; + r_hh_equilibrium = 1.594410; + mtr_l_rr = 114.438097512; mtr_l_rt = -163.161567873; mtr_l_tt = 242.114388072; + qm_prog = dftbplus; qm_script = dftbplus; smoothing=exact; + rcore = 0.0; rlayer = 3.8; rsmoothing = 3.6; + + start_file = k-qmcf-01.rst; + output_file = k-qmcf-02.out; + info_file = k-qmcf-02.info; + energy_file = k-qmcf-02.en; + traj_file = k-qmcf-02.xyz; + vel_file = k-qmcf-02.vel; + charge_file = k-qmcf-02.chrg; + restart_file = k-qmcf-02.rst; + diff --git a/examples/vibrational/README.md b/examples/vibrational/README.md new file mode 100644 index 00000000..8b93aa22 --- /dev/null +++ b/examples/vibrational/README.md @@ -0,0 +1,33 @@ +# Vibrational Analysis + +This example runs the PQAnalysis input-file based vibrational analysis command. + +```bash +pqanalysis vibrations input.in +``` + +The standalone entry point is equivalent: + +```bash +vibrations input.in +``` + +The input file reads a restart structure, a Cartesian Hessian matrix and a moldescriptor file with partial charges: + +```text +structure_file = h2o.rst +hessian_file = hessian.dat +moldescriptor_file = moldescriptor.dat +out_file = wavenumbers.dat +normal_modes_file = normal_modes.dat +modes_prefix = mode +modes_file = modes.xyz +modes = positive +modes_frames = 30 +modes_amplitude = 0.25 +modes_threshold = 1.0e-6 +unit = kcal +hessian_sign = auto +``` + +`wavenumbers.dat` contains frequencies, IR intensities, reduced masses and force constants. `normal_modes.dat` contains the normal-mode matrix. The `mode-*.xyz` files are sinusoidal XYZ animations for the selected modes. `modes.xyz` is an extended XYZ file with all selected mode vectors and metadata. diff --git a/examples/vibrational/h2o.rst b/examples/vibrational/h2o.rst new file mode 100644 index 00000000..7226c55e --- /dev/null +++ b/examples/vibrational/h2o.rst @@ -0,0 +1,5 @@ +Step 100 +Box 10000.00000000000000000000 10000.00000000000000000000 10000.00000000000000000000 +o 1 1 -0.01294293652 -0.00022738404 -0.00072569662 -2.25292229963757e-04 6.28852028732295e-04 6.86433511395749e-04 -0.00008324796963 0.00011709551580 0.00012630346959 -0.01294293652 -0.00022738404 -0.00072569662 -2.25292229963757e-04 6.28852028732295e-04 6.86433511395749e-04 -0.00008324796963 0.00011709551580 0.00012630346959 +h 1 1 0.43396012267 0.59193103593 0.66981595463 -2.70676037467477e-04 -1.23075940459605e-04 -1.45885375156416e-04 -0.00003512911329 -0.00000732676868 -0.00000938176397 0.43396012267 0.59193103593 0.66981595463 -2.70676037467477e-04 -1.23075940459605e-04 -1.45885375156416e-04 -0.00003512911329 -0.00000732676868 -0.00000938176397 +h 1 1 0.68120631717 -0.49583217141 -0.52277201300 4.95968267431234e-04 -5.05776088272690e-04 -5.40548136239333e-04 0.00011837708292 -0.00010976874712 -0.00011692170561 0.68120631717 -0.49583217141 -0.52277201300 4.95968267431234e-04 -5.05776088272690e-04 -5.40548136239333e-04 0.00011837708292 -0.00010976874712 -0.00011692170561 diff --git a/examples/vibrational/hessian.dat b/examples/vibrational/hessian.dat new file mode 100644 index 00000000..e5d28f8e --- /dev/null +++ b/examples/vibrational/hessian.dat @@ -0,0 +1,9 @@ +-972.27114865125 72.703300706 44.6584165134 341.259656515 243.63212434735 281.65414616979996 631.0114921362499 -316.33542505335 -326.3125626832 +72.43640742024999 -674.5852443028 -742.8405429819501 308.6780010301 391.22178112439997 443.67901089414994 -381.11440845029995 283.36346317835 299.16153208785 +44.3263200225 -742.95022798165 -818.7729118656999 353.58191376975003 441.3895651482 500.3370296489 -397.90823379225 301.5606628335 318.4358822168 +341.27123099364997 308.57797712085 353.40052818494996 -291.11349558269995 -269.41069350065004 -308.29360805150003 -50.1577354109 -39.167283620199996 -45.106920133399996 +243.72273244809998 391.21029794015004 441.29128983615004 -269.50523028199996 -401.40821941129997 -453.50515752649994 25.782497833899995 10.19792147115 12.2138676904 +281.82713682195 443.76241595775 500.3238973269 -308.46941658410003 -453.5947744466499 -512.15979234805 26.642279762199998 9.8323584889 11.83589502115 +631.0308902554999 -381.29072072444995 -398.0677850221 -50.149908116249996 25.779137909399996 26.639581397449994 -580.88098213925 355.51158281495 371.42820362465 +-316.1501723482 283.3513250057 301.53670756820003 -39.1708521425 10.1972669614 9.8331803144 355.3210244907 -293.5485919671 -311.36988788254996 +-326.138221318 299.1705863244 318.4220430644 -45.11062007875 12.2147735595 11.8351888897 371.24884139665 -311.3853598839 -330.2572319541 diff --git a/examples/vibrational/input.in b/examples/vibrational/input.in new file mode 100644 index 00000000..066b9f72 --- /dev/null +++ b/examples/vibrational/input.in @@ -0,0 +1,13 @@ +structure_file = h2o.rst +hessian_file = hessian.dat +moldescriptor_file = moldescriptor.dat +out_file = wavenumbers.dat +normal_modes_file = normal_modes.dat +modes_prefix = mode +modes_file = modes.xyz +modes = positive +modes_frames = 30 +modes_amplitude = 0.25 +modes_threshold = 1.0e-6 +unit = kcal +hessian_sign = auto diff --git a/examples/vibrational/moldescriptor.dat b/examples/vibrational/moldescriptor.dat new file mode 100644 index 00000000..b1f60394 --- /dev/null +++ b/examples/vibrational/moldescriptor.dat @@ -0,0 +1,5 @@ +# Molecule 1 +H2O 3 0.0 +O 0 -0.65966 +H 1 0.32983 +H 1 0.32983 diff --git a/pyproject.toml b/pyproject.toml index f63783c7..861260d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,13 @@ include-package-data = true include = ["PQAnalysis*"] [tool.setuptools.package-data] -PQAnalysis = ["grammar/*.lark", "io/traj_file/*.pyx"] +PQAnalysis = [ + "grammar/*.lark", + "io/traj_file/*.pyx", + "analysis/msd/*.pyx", + "analysis/vacf/*.pyx", + "analysis/rdf/*.pyx", +] [project.scripts] pqanalysis = "PQAnalysis.cli.main:main" @@ -76,6 +82,11 @@ rst2xyz = "PQAnalysis.cli.rst2xyz:main" xyz2rst = "PQAnalysis.cli.xyz2rst:main" continue_input = "PQAnalysis.cli.continue_input:main" rdf = "PQAnalysis.cli.rdf:main" +msd = "PQAnalysis.cli.msd:main" +vacf = "PQAnalysis.cli.vacf:main" +build_spectrum = "PQAnalysis.cli.build_spectrum:main" +check_momentum = "PQAnalysis.cli.check_momentum:main" +vibrations = "PQAnalysis.cli.vibrations:main" add_molecules = "PQAnalysis.cli.add_molecules:main" activate_argcomplete = "PQAnalysis.cli.activate_argcomplete:main" build_nep_traj = "PQAnalysis.cli.build_nep_traj:main" diff --git a/scratch_install.log b/scratch_install.log new file mode 100644 index 00000000..10f7a511 --- /dev/null +++ b/scratch_install.log @@ -0,0 +1,2 @@ +ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. +pqenalyzer 0.7.1.dev26+g1d30939e5.d20260611 requires PQAnalysis>=1.0, but you have pqanalysis 0.0.0 which is incompatible. diff --git a/setup.py b/setup.py index b93be1fa..35c921db 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,40 @@ -"""Build the Cython extension used by PQAnalysis.""" +"""Build the Cython extensions used by PQAnalysis.""" from Cython.Build import cythonize import numpy as np from setuptools import Extension, setup extensions = cythonize( - Extension( - 'PQAnalysis.io.traj_file.process_lines', - sources=['PQAnalysis/io/traj_file/process_lines.pyx'], - include_dirs=[np.get_include()] - ), + [ + Extension( + 'PQAnalysis.io.traj_file.process_lines', + sources=['PQAnalysis/io/traj_file/process_lines.pyx'], + include_dirs=[np.get_include()] + ), + Extension( + 'PQAnalysis.io.traj_file._slab_parser', + sources=['PQAnalysis/io/traj_file/_slab_parser.pyx'], + include_dirs=[np.get_include()] + ), + Extension( + 'PQAnalysis.analysis.msd._msd_kernel', + sources=['PQAnalysis/analysis/msd/_msd_kernel.pyx'], + include_dirs=[np.get_include()] + ), + Extension( + 'PQAnalysis.analysis.vacf._vacf_kernel', + sources=['PQAnalysis/analysis/vacf/_vacf_kernel.pyx'], + include_dirs=[np.get_include()] + ), + Extension( + 'PQAnalysis.analysis.rdf._rdf_kernel', + sources=['PQAnalysis/analysis/rdf/_rdf_kernel.pyx'], + include_dirs=[np.get_include()], + # no FMA contraction: the kernel must round exactly like + # the separate numpy operations it replicates + extra_compile_args=['-ffp-contract=off'] + ), + ], language_level=3, ) diff --git a/tests/analysis/momentum/__init__.py b/tests/analysis/momentum/__init__.py new file mode 100644 index 00000000..ba005f2b --- /dev/null +++ b/tests/analysis/momentum/__init__.py @@ -0,0 +1,3 @@ +""" +Tests for the momentum analysis. +""" diff --git a/tests/analysis/momentum/test_api.py b/tests/analysis/momentum/test_api.py new file mode 100644 index 00000000..46937ea6 --- /dev/null +++ b/tests/analysis/momentum/test_api.py @@ -0,0 +1,91 @@ +""" +Tests for the momentum analysis API and output writer. +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.momentum import MomentumDataWriter, check_momentum + +from .. import pytestmark # pylint: disable=unused-import + +from .test_momentum import TWO_FRAMES_NORMS + + + +class TestCheckMomentumAPI: + + """ + Tests for the check_momentum API function. + """ + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_check_momentum_to_file(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The API reads a QMCFC velocity trajectory and writes one row + per frame with the one-based frame index and the scaled + momentum norm. + """ + momentum_norms = check_momentum( + "two_frames.vel", + output="momentum.dat", + md_format="qmcfc", + ) + + assert np.allclose( + momentum_norms, + np.array(TWO_FRAMES_NORMS) * 1e-15, + rtol=1e-12, + ) + + with open("momentum.dat", encoding="utf-8") as file: + lines = file.readlines() + + assert lines == [ + f"1 {momentum_norms[0]:.12e}\n", + f"2 {momentum_norms[1]:.12e}\n", + ] + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_check_momentum_to_stdout(self, test_with_data_dir, capsys): # pylint: disable=unused-argument + """ + Without an output file the momentum norms are printed + to stdout. + """ + momentum_norms = check_momentum( + "two_frames.vel", + md_format="qmcfc", + scale=1.0, + ) + + captured = capsys.readouterr() + + assert captured.out == ( + f"1 {momentum_norms[0]:.12e}\n" + f"2 {momentum_norms[1]:.12e}\n" + ) + assert np.allclose(momentum_norms, TWO_FRAMES_NORMS, rtol=1e-12) + + + +class TestMomentumDataWriter: + + """ + Tests for the MomentumDataWriter class. + """ + + def test_write(self, tmpdir): # pylint: disable=unused-argument + """ + The writer produces one-based frame indices and the momentum + norms in scientific notation. + """ + writer = MomentumDataWriter("momentum_out.dat") + writer.write(np.array([1.871482266947e-14, 0.0])) + + with open("momentum_out.dat", encoding="utf-8") as file: + lines = file.readlines() + + assert lines == [ + "1 1.871482266947e-14\n", + "2 0.000000000000e+00\n", + ] diff --git a/tests/analysis/momentum/test_momentum.py b/tests/analysis/momentum/test_momentum.py new file mode 100644 index 00000000..3617a1ff --- /dev/null +++ b/tests/analysis/momentum/test_momentum.py @@ -0,0 +1,324 @@ +""" +Tests for the Momentum analysis class. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis import config +from PQAnalysis.analysis.momentum import Momentum +from PQAnalysis.analysis.momentum.exceptions import MomentumError +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + +# pylint: disable=protected-access + +momentum_module = sys.modules[Momentum.__module__] + +# hand-computed |P| references for tests/data/momentum/two_frames.vel +# (velocities are exactly representable in float32, masses +# O = 15.9994 amu and H = 1.00794 amu): +# frame 1: P = 15.9994*(0.5, -0.25, 1.0) + 1.00794*(2.0, 1.5, -0.5) +# + 1.00794*(-1.0, 0.25, 0.75) +# frame 2: P = 15.9994*(1.0, 0.0, 0.0) + 1.00794*(0.0, 2.0, 0.0) +# + 1.00794*(0.0, 0.0, 4.0) +TWO_FRAMES_NORMS = [18.714822669473786, 16.622264022448928] +TWO_FRAMES_NORMS_OXYGEN = [18.329615393469116, 15.9994] + +# masses used by the independent gas3.vel reference parser below +# (identical to the PQAnalysis element data for c and o) +GAS3_MASSES = {"c": 12.0107, "o": 15.9994} + + +def _independent_gas3_norms(filename, scale=1e-15): + """ + Compute the scaled total momentum norms of a QMCFC velocity + trajectory independently of the TrajectoryReader/Momentum + pipeline. + + This minimal parser only shares the documented number semantics + with the pipeline: every velocity component is parsed from its + token in single precision (float32 quantization) and the + mass-weighted sum is accumulated in float64. Any behavioral + change in TrajectoryReader parsing or in the Momentum + accumulation therefore makes the pipeline diverge from this + reference. + """ + with open(filename, encoding="utf-8") as file: + lines = file.readlines() + + norms = [] + line_index = 0 + + while line_index < len(lines): + n_atoms = int(lines[line_index].split()[0]) + atom_lines = lines[line_index + 2:line_index + 2 + n_atoms] + line_index += 2 + n_atoms + + momentum = np.zeros(3, dtype=np.float64) + + for atom_line in atom_lines: + tokens = atom_line.split() + name = tokens[0].lower() + + if name == "x": # QMCFC dummy atom is stripped + continue + + velocity = np.array( + tokens[1:4], dtype=np.float32 + ).astype(np.float64) + momentum += GAS3_MASSES[name] * velocity + + norms.append(float(np.linalg.norm(momentum)) * scale) + + return np.array(norms) + + + +class TestMomentum: + + """ + Tests for the Momentum class. + """ + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_two_frames_reference(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The momentum norms of a hand-computed two-frame QMCFC velocity + trajectory are reproduced. The leading dummy 'X' atom is + stripped by the QMCFC engine format. + """ + reader = TrajectoryReader("two_frames.vel", md_format="qmcfc") + momentum_norms = Momentum(reader).run() + + assert np.allclose( + momentum_norms, + np.array(TWO_FRAMES_NORMS) * 1e-15, + rtol=1e-12, + ) + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_gas_noise_floor_reference(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The momentum norms of the first three frames of the legacy + equipartition.jl gas phase test trajectory (gas3.vel, the + momentum-conserving 150-atom QMCFC trajectory gas_md_01.vel) + match an independent single-precision reference computation. + + The total momentum of this data is zero up to floating point + noise (single m_i * v_i terms are of the order 5e13 + amu*Angstrom/s), so the norm is pure summation noise of the + parsing precision: PQAnalysis parses the velocities as + float32 and reports norms of the order 5e-8 (scaled), while + the legacy Julia tool parses as float64 and prints + 2.6407665688752317e-16, 3.625033674412557e-16 and + 2.827919968396604e-16 for these frames. The expected values + are recomputed by _independent_gas3_norms, a minimal parser + written independently of the TrajectoryReader/Momentum + pipeline, so this test fails if either changes behavior. + """ + expected_norms = _independent_gas3_norms("gas3.vel") + + reader = TrajectoryReader("gas3.vel", md_format="qmcfc") + momentum_norms = Momentum(reader).run() + + # momentum conservation: the norms sit at the float32 + # parsing noise floor, orders of magnitude below a single + # scaled m_i * |v_i| term (~5e-2 after the 1e-15 scaling) + assert np.all(momentum_norms < 1e-6) + + assert np.allclose(momentum_norms, expected_norms, rtol=1e-6) + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_selection(self, test_with_data_dir): # pylint: disable=unused-argument + """ + With a selection only the selected atoms contribute to the + total momentum. + """ + reader = TrajectoryReader("two_frames.vel", md_format="qmcfc") + momentum_norms = Momentum(reader, selection="O").run() + + assert np.allclose( + momentum_norms, + np.array(TWO_FRAMES_NORMS_OXYGEN) * 1e-15, + rtol=1e-12, + ) + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_scale(self, test_with_data_dir): # pylint: disable=unused-argument + """ + A custom scaling factor replaces the default 1e-15 conversion. + """ + reader = TrajectoryReader("two_frames.vel", md_format="qmcfc") + momentum_norms = Momentum(reader, scale=1.0).run() + + assert np.allclose( + momentum_norms, TWO_FRAMES_NORMS, rtol=1e-12 + ) + + def test_zero_drift(self): + """ + Symmetric velocities of identical atoms cancel to a total + momentum of exactly zero. + """ + system = AtomicSystem( + atoms=[Atom("H"), Atom("H")], + vel=np.array([[1.5, -2.0, 3.25], [-1.5, 2.0, -3.25]]), + ) + momentum_norms = Momentum(Trajectory([system])).run() + + assert momentum_norms.shape == (1, ) + assert momentum_norms[0] == 0.0 + + def test_n_frames(self): + """ + The number of analyzed frames is exposed after run(). + """ + system = AtomicSystem( + atoms=[Atom("H")], vel=np.array([[1.0, 0.0, 0.0]]) + ) + momentum = Momentum(Trajectory([system, system])) + + assert momentum.n_frames == 0 + + momentum.run() + + assert momentum.n_frames == 2 + + def test_empty_trajectory(self, caplog): + """ + An empty trajectory is rejected. + """ + assert_logging_with_exception( + caplog=caplog, + logging_name=Momentum.__qualname__, + logging_level="ERROR", + message_to_test="Trajectory cannot be of length 0.", + exception=MomentumError, + function=Momentum, + traj=Trajectory(), + ) + + def test_empty_selection(self, caplog): + """ + A selection that does not select any atoms is rejected + instead of silently producing all-zero momentum norms. + """ + system = AtomicSystem( + atoms=[Atom("H"), Atom("H")], + vel=np.array([[1.5, -2.0, 3.25], [-1.5, 2.0, -3.25]]), + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name=Momentum.__qualname__, + logging_level="ERROR", + message_to_test="The selection does not select any atoms.", + exception=MomentumError, + function=Momentum, + traj=Trajectory([system]), + selection="O", + ) + + def test_unknown_mass(self, caplog): + """ + A selection containing an atom with unknown mass is rejected. + """ + system = AtomicSystem( + atoms=[Atom("Foo123", use_guess_element=False)], + vel=np.array([[1.0, 0.0, 0.0]]), + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name=Momentum.__qualname__, + logging_level="ERROR", + message_to_test=( + "The mass of at least one selected atom is unknown. " + "The total momentum cannot be calculated." + ), + exception=MomentumError, + function=Momentum, + traj=Trajectory([system]), + ) + + @pytest.mark.parametrize("example_dir", ["momentum"], indirect=False) + def test_raw_fast_path_matches_in_memory_path(self, test_with_data_dir): # pylint: disable=unused-argument + """ + A velocity TrajectoryReader dispatches to the raw fast-path + stream, which produces bit-identical momentum norms compared + to the in-memory AtomicSystem based stream. + """ + momentum = Momentum( + TrajectoryReader("gas3.vel", md_format="qmcfc") + ) + + assert momentum._raw_reader is not None + + raw_norms = momentum.run() + + traj = TrajectoryReader("gas3.vel", md_format="qmcfc").read() + in_memory = Momentum(traj) + + assert in_memory._raw_reader is None + + in_memory_norms = in_memory.run() + + assert np.array_equal(raw_norms, in_memory_norms) + + def test_progress_bar_binds_config_at_call_time(self, monkeypatch): + """ + config.with_progress_bar is set by the CLI after the module + import, so it must be read at call time, not bound by value + at import time. + """ + captured = {} + + def fake_tqdm(iterable, **kwargs): + captured.update(kwargs) + return iterable + + monkeypatch.setattr(momentum_module, "tqdm", fake_tqdm) + + system = AtomicSystem( + atoms=[Atom("H")], vel=np.array([[1.0, 0.0, 0.0]]) + ) + + monkeypatch.setattr(config, "with_progress_bar", False) + Momentum(Trajectory([system, system])).run() + assert captured["disable"] is True + + captured.clear() + + monkeypatch.setattr(config, "with_progress_bar", True) + Momentum(Trajectory([system, system])).run() + assert captured["disable"] is False + + def test_missing_velocities(self, caplog): + """ + A trajectory without velocity information is rejected. + """ + system = AtomicSystem( + atoms=[Atom("H")], pos=np.array([[0.0, 0.0, 0.0]]) + ) + momentum = Momentum(Trajectory([system])) + + assert_logging_with_exception( + caplog=caplog, + logging_name=Momentum.__qualname__, + logging_level="ERROR", + message_to_test=( + "The trajectory does not contain velocity " + "information for all atoms. Please provide a " + "velocity trajectory." + ), + exception=MomentumError, + function=momentum.run, + ) diff --git a/tests/analysis/momentum/test_momentum_dispatch.py b/tests/analysis/momentum/test_momentum_dispatch.py new file mode 100644 index 00000000..c9e658e7 --- /dev/null +++ b/tests/analysis/momentum/test_momentum_dispatch.py @@ -0,0 +1,118 @@ +""" +Tests for the Momentum trajectory-source dispatch branches. + +These tests exercise the construction-time dispatch of the Momentum +class that is not covered by ``test_momentum.py``: the explicit +``use_full_atom_info=None`` default fallback and the lazy +TrajectoryReader branch for a non-VEL (here extended xyz) velocity +trajectory, which streams frames through ``frame_generator`` instead +of the raw VEL fast path. +""" + +import numpy as np + +from PQAnalysis.analysis.momentum import Momentum +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory, TrajectoryFormat + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + +# extended xyz velocity trajectory (parsed in float64 by the reader); +# hand-computed |P| = m_H * |sum_i v_i| references with m_H = 1.00794 +_EXTXYZ_VEL_TRAJECTORY = ( + "2\n" + "Properties=species:S:1:pos:R:3:vel:R:3\n" + "H 0.0 0.0 0.0 1.0 2.0 3.0\n" + "H 1.0 1.0 1.0 0.5 0.5 0.5\n" + "2\n" + "Properties=species:S:1:pos:R:3:vel:R:3\n" + "H 0.0 0.0 0.0 -1.0 0.0 2.0\n" + "H 1.0 1.0 1.0 0.0 3.0 -1.0\n" +) + +# per-frame summed velocity vectors of the trajectory above +_EXTXYZ_VEL_SUMS = np.array([[1.5, 2.5, 3.5], [-1.0, 3.0, 1.0]]) + + + +class TestMomentumDispatch: + + """ + Tests for the Momentum construction-time source dispatch. + """ + + def test_use_full_atom_info_none_uses_default(self): + """ + Passing ``use_full_atom_info=None`` explicitly falls back to the + class default (``False``) instead of storing ``None``. + """ + system = AtomicSystem( + atoms=[Atom("H")], vel=np.array([[1.0, 0.0, 0.0]]) + ) + + momentum = Momentum( + Trajectory([system]), use_full_atom_info=None + ) + + assert momentum.use_full_atom_info is False + assert ( + momentum.use_full_atom_info == Momentum._use_full_atom_default + ) + + def test_non_vel_reader_uses_frame_generator(self, tmp_path): + """ + A TrajectoryReader whose format is not VEL (an extended xyz + velocity trajectory) does not take the raw VEL fast path but + the lazy frame_generator branch, and still computes the correct + scaled total momentum norms. + """ + traj_file = tmp_path / "vel.extxyz" + traj_file.write_text(_EXTXYZ_VEL_TRAJECTORY, encoding="utf-8") + + reader = TrajectoryReader(str(traj_file), traj_format="EXTXYZ") + + assert reader.traj_format != TrajectoryFormat.VEL + + momentum = Momentum(reader) + + # the non-VEL reader lands in the frame_generator branch, not + # the raw VEL fast path + assert momentum._raw_reader is None + assert momentum.frame_generator is not None + assert momentum._n_frames_total == 2 + + norms = momentum.run() + + mass = Atom("H").mass + expected = mass * np.linalg.norm(_EXTXYZ_VEL_SUMS, axis=1) * 1e-15 + + assert np.allclose(norms, expected, rtol=1e-12) + + def test_non_vel_reader_matches_in_memory_path(self, tmp_path): + """ + The lazy non-VEL reader branch yields bit-identical momentum + norms to the in-memory Trajectory branch for the same frames. + """ + traj_file = tmp_path / "vel.extxyz" + traj_file.write_text(_EXTXYZ_VEL_TRAJECTORY, encoding="utf-8") + + reader = TrajectoryReader(str(traj_file), traj_format="EXTXYZ") + lazy = Momentum(reader) + + assert lazy._raw_reader is None + assert lazy.frame_generator is not None + + lazy_norms = lazy.run() + + traj = TrajectoryReader( + str(traj_file), traj_format="EXTXYZ" + ).read() + in_memory = Momentum(traj) + + assert in_memory._raw_reader is None + + assert np.array_equal(lazy_norms, in_memory.run()) diff --git a/tests/analysis/msd/__init__.py b/tests/analysis/msd/__init__.py new file mode 100644 index 00000000..f4630058 --- /dev/null +++ b/tests/analysis/msd/__init__.py @@ -0,0 +1,3 @@ +""" +Tests for the MSD analysis. +""" diff --git a/tests/analysis/msd/test_api.py b/tests/analysis/msd/test_api.py new file mode 100644 index 00000000..4f63c525 --- /dev/null +++ b/tests/analysis/msd/test_api.py @@ -0,0 +1,82 @@ +""" +Tests for the MSD API. +""" + +from pathlib import Path + +import numpy as np +import pytest + +from PQAnalysis.analysis.msd.api import msd +from PQAnalysis.type_checking import get_type_error_message +from PQAnalysis.exceptions import PQTypeError + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + + + +class TestMSDAPI: + + """ + Tests for the MSD API. + """ + + def test_wrong_param_types(self, caplog): + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message( + "input_file", + 1, + str, + ), + exception=PQTypeError, + function=msd, + input_file=1, + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message( + "md_format", + 1, + "PQAnalysis.traj.formats.MDEngineFormat | str", + ), + exception=PQTypeError, + function=msd, + input_file="test", + md_format=1, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_msd(self, test_with_data_dir): + msd("input.in") + + out_file = Path("msd.dat") + log_file = Path("msd.log") + + assert out_file.is_file() + assert log_file.is_file() + + # input.in uses the same window and gap as the legacy + # reference run diffcalc_O.in + result = np.loadtxt("msd.dat") + reference = np.loadtxt("msd_ref_O.dat") + + assert np.array_equal(result[:, 0], reference[:, 0]) + assert np.allclose( + result[:, 1:], + reference[:, 1:], + rtol=1e-5, + atol=5e-6 + ) + + log_contents = log_file.read_text(encoding="utf-8") + + assert "MSD calculation:" in log_contents + assert "Diffusion coefficients (Einstein relation):" in log_contents + assert "Elapsed time:" in log_contents diff --git a/tests/analysis/msd/test_exceptions.py b/tests/analysis/msd/test_exceptions.py new file mode 100644 index 00000000..1ee18076 --- /dev/null +++ b/tests/analysis/msd/test_exceptions.py @@ -0,0 +1,30 @@ +""" +Tests for the MSD exceptions and warnings. +""" + +from PQAnalysis.analysis.msd.exceptions import MSDError, MSDWarning +from PQAnalysis.exceptions import PQException, PQWarning + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestMSDExceptions: + + """ + Tests for the MSD exception and warning classes. + """ + + def test_msd_error(self): + error = MSDError("something went wrong") + + assert error.message == "something went wrong" + assert str(error) == "something went wrong" + assert isinstance(error, PQException) + + def test_msd_warning(self): + warning = MSDWarning("watch out") + + assert warning.message == "watch out" + assert str(warning) == "watch out" + assert isinstance(warning, PQWarning) diff --git a/tests/analysis/msd/test_msd.py b/tests/analysis/msd/test_msd.py new file mode 100644 index 00000000..c139f015 --- /dev/null +++ b/tests/analysis/msd/test_msd.py @@ -0,0 +1,767 @@ +""" +Tests for the MSD class. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis import config +from PQAnalysis.analysis.msd import MSD +from PQAnalysis.analysis.msd.exceptions import MSDError +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom, Cell +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import Trajectory, TrajectoryFormat + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging, assert_logging_with_exception + +#: The module defining the MSD class (the package attribute ``msd`` +#: is shadowed by the api function of the same name). +msd_module = sys.modules[MSD.__module__] + +# pylint: disable=protected-access + + + +def _make_trajectory(positions, box=100.0, names=None): + """ + Builds a trajectory from an (n_frames, n_atoms, 3) position array. + """ + positions = np.asarray(positions, dtype=float) + n_atoms = positions.shape[1] + + if names is None: + names = ["O"] * n_atoms + + cell = Cell(box, box, box, 90, 90, 90) + atoms = [Atom(name) for name in names] + + systems = [ + AtomicSystem(atoms=atoms, pos=frame_positions, cell=cell) + for frame_positions in positions + ] + + return Trajectory(systems) + + + +def _reference_msd(wrapped, window, gap, box, n_start=0): + """ + Brute-force emulation of the legacy Diffcalc algorithm. + """ + n_frames, n_atoms, _ = wrapped.shape + + stop_frame = (n_frames - window) // gap * gap + total_origins = stop_frame // gap + + # origins spawn at multiples of the gap not smaller than n_start + first_origin = gap * -(-max(n_start, 1) // gap) + + msd = np.zeros((window + 1, 3)) + + for origin in range(first_origin, stop_frame + 1, gap): + image = np.zeros((n_atoms, 3)) + + for frame in range(origin, origin + window + 1): + if frame > origin: + displacement = wrapped[frame - 1] - wrapped[frame - 2] + image -= box * np.rint(displacement / box) + + total = wrapped[frame - 1] - wrapped[origin - 1] + image + msd[frame - origin] += (total**2).sum(axis=0) + + return msd / (n_atoms * total_origins) + + + +class TestMSD: + + """ + Tests for the MSD class. + """ + + def test_two_frame_msd(self): + positions = [ + [[0.0, 0.0, 0.0], [1.0, 1.0, 1.0]], + [[0.5, 0.0, 0.0], [1.0, 1.0, 2.0]], + ] + traj = _make_trajectory(positions) + + msd = MSD(traj, "O", window=1, gap=1) + lags, msd_x, msd_y, msd_z, msd_tot = msd.run() + + assert np.array_equal(lags, [0, 1]) + assert np.allclose(msd_x, [0.0, 0.125]) + assert np.allclose(msd_y, [0.0, 0.0]) + assert np.allclose(msd_z, [0.0, 0.5]) + assert np.allclose(msd_tot, [0.0, 0.625]) + + def test_three_frame_msd(self): + positions = [ + [[0.0, 0.0, 0.0]], + [[1.0, 0.5, 0.0]], + [[3.0, 1.5, 0.0]], + ] + traj = _make_trajectory(positions) + + msd = MSD(traj, "O", window=2, gap=1) + _, msd_x, msd_y, msd_z, _ = msd.run() + + # a single origin at the first frame contributes lags 0, 1 and 2 + assert np.allclose(msd_x, [0.0, 1.0, 9.0]) + assert np.allclose(msd_y, [0.0, 0.25, 2.25]) + assert np.allclose(msd_z, [0.0, 0.0, 0.0]) + + def test_gap_one_full_window_matches_legacy(self, caplog): + # legacy Diffcalc boundary case: gap == 1 with a trajectory + # of exactly window frames spawns a single time origin at + # the first frame instead of raising the + # too-short-trajectory error; a warning is emitted instead + positions = [ + [[0.0, 0.0, 0.0]], + [[1.0, 0.5, 0.0]], + [[3.0, 1.5, 0.0]], + ] + traj = _make_trajectory(positions) + + msd = assert_logging( + caplog=caplog, + logging_name="MSD", + logging_level="WARNING", + message_to_test=( + "The trajectory contains exactly window = 3 frames " + "with a gap of 1. Following the legacy Diffcalc " + "convention a single time origin is spawned at the " + "first frame. The final lag bin (lag = 3) can never " + "be sampled and is written as exactly 0.0; a " + "diffusion fit including this bin would be biased." + ), + function=MSD, + traj=traj, + target_species="O", + window=3, + gap=1, + ) + + assert msd.stop_frame == 1 + assert msd.total_origins == 1 + + lags, msd_x, msd_y, msd_z, _ = msd.run() + + # pinned against the recompiled legacy Diffcalc binary + # (window = 3; gap = 1; on the same three-frame trajectory): + # the single origin fills lags 0 to 2, the final lag bin + # is written as exactly 0.0 + assert np.array_equal(lags, [0, 1, 2, 3]) + assert np.allclose(msd_x, [0.0, 1.0, 9.0, 0.0]) + assert np.allclose(msd_y, [0.0, 0.25, 2.25, 0.0]) + assert np.allclose(msd_z, [0.0, 0.0, 0.0, 0.0]) + assert msd.msd_tot[3] == 0.0 + + def test_unwrap_across_boundary(self): + positions = [ + [[9.8, 0.1, 5.0]], + [[0.1, 9.8, 5.0]], + ] + traj = _make_trajectory(positions, box=10.0) + + msd = MSD(traj, "O", window=1, gap=1) + _, msd_x, msd_y, msd_z, _ = msd.run() + + # x crosses the upper boundary (+0.3), y the lower one (-0.3) + assert np.allclose(msd_x, [0.0, 0.09]) + assert np.allclose(msd_y, [0.0, 0.09]) + assert np.allclose(msd_z, [0.0, 0.0]) + + def test_matches_brute_force_reference(self): + rng = np.random.default_rng(4711) + n_atoms, n_frames, box = 6, 57, 8.0 + + start = rng.uniform(0.0, box, size=(1, n_atoms, 3)) + steps = rng.normal(0.0, 0.4, size=(n_frames - 1, n_atoms, 3)) + unwrapped = np.concatenate( + [start, start + np.cumsum(steps, axis=0)] + ) + wrapped = unwrapped % box + + window, gap = 20, 5 + + traj = _make_trajectory(wrapped, box=box) + msd = MSD(traj, "O", window=window, gap=gap) + _, msd_x, msd_y, msd_z, _ = msd.run() + + reference = _reference_msd(wrapped, window, gap, box) + + assert np.allclose(msd_x, reference[:, 0], rtol=1e-10, atol=1e-12) + assert np.allclose(msd_y, reference[:, 1], rtol=1e-10, atol=1e-12) + assert np.allclose(msd_z, reference[:, 2], rtol=1e-10, atol=1e-12) + + def test_selection_subset(self): + rng = np.random.default_rng(1234) + wrapped = rng.uniform(0.0, 5.0, size=(8, 4, 3)) + names = ["O", "H", "O", "H"] + + traj = _make_trajectory(wrapped, box=5.0, names=names) + msd = MSD(traj, "O", window=2, gap=1) + + assert np.array_equal(msd.target_indices, [0, 2]) + + _, msd_x, _, _, _ = msd.run() + + reference = _reference_msd(wrapped[:, [0, 2]], 2, 1, 5.0) + + assert np.allclose(msd_x, reference[:, 0], rtol=1e-10, atol=1e-12) + + def test_n_start_skips_leading_frames(self): + rng = np.random.default_rng(99) + wrapped = rng.uniform(0.0, 5.0, size=(30, 2, 3)) % 5.0 + + traj = _make_trajectory(wrapped, box=5.0) + msd = MSD(traj, "O", window=10, gap=5, n_start=6) + + _, msd_x, msd_y, msd_z, _ = msd.run() + + # origins may only spawn at multiples of the gap >= n_start + # (here 10, 15 and 20), the legacy normalization by + # total_origins = stop_frame // gap = 4 is kept nevertheless + reference = _reference_msd(wrapped, 10, 5, 5.0, n_start=6) + + assert np.allclose(msd_x, reference[:, 0], rtol=1e-10, atol=1e-12) + assert np.allclose(msd_y, reference[:, 1], rtol=1e-10, atol=1e-12) + assert np.allclose(msd_z, reference[:, 2], rtol=1e-10, atol=1e-12) + + def test_run_with_time_step_sets_fit_results(self): + rng = np.random.default_rng(7) + wrapped = np.cumsum( + rng.normal(0.0, 0.2, size=(40, 3, 3)), axis=0 + ) % 6.0 + + traj = _make_trajectory(wrapped, box=6.0) + msd = MSD(traj, "O", window=10, gap=5, time_step=0.5) + + assert msd.fit_window == 2 + + msd.run() + + assert msd.fit_results is not None + assert set(msd.fit_results.keys()) == {"x", "y", "z", "total"} + + for fit in msd.fit_results.values(): + assert np.isfinite(fit.diffusion_coefficient) + assert np.isfinite(fit.slope) + + def test_fit_diffusion_linear(self): + lags = np.arange(101) + time_step = 0.1 + times = lags * time_step + + # per axis: MSD_axis = 2 * D_axis * t with slopes 0.6, 0.8, 1.0 + msd_x = 0.6 * times + 1.0 + msd_y = 0.8 * times + 2.0 + msd_z = 1.0 * times + 3.0 + msd_tot = msd_x + msd_y + msd_z + + results = MSD._fit_diffusion( + lags, + msd_x, + msd_y, + msd_z, + msd_tot, + time_step, + fit_window=20 + ) + + assert results["x"].slope == pytest.approx(0.6) + assert results["y"].slope == pytest.approx(0.8) + assert results["z"].slope == pytest.approx(1.0) + assert results["total"].slope == pytest.approx(2.4) + + # D = slope / (2 * dim) * 1e-8 m^2/s + assert results["x"].diffusion_coefficient == pytest.approx(0.3e-8) + assert results["z"].diffusion_coefficient == pytest.approx(0.5e-8) + assert results["total"].diffusion_coefficient == pytest.approx(0.4e-8) + + for fit in results.values(): + assert fit.r_squared == pytest.approx(1.0) + assert fit.slope_stderr == pytest.approx(0.0, abs=1e-8) + + def test_fit_diffusion_uses_trailing_window(self): + # piecewise data: the leading part (indices 0 to 80) has a + # steep slope, only the exact trailing fit_window = 20 points + # (indices 81 to 100) lie on the flat tail lines. Fitting the + # leading window, ignoring fit_window (fitting everything) or + # an off-by-one slice including index 80 (which is far off + # the tail lines) all yield different slopes and r^2 < 1. + lags = np.arange(101) + time_step = 0.1 + times = lags * time_step + fit_window = 20 + + tail = lags > 80 + + msd_x = np.where(tail, 0.6 * times + 100.0, 2.0 * times) + msd_y = np.where(tail, 0.8 * times + 200.0, 3.0 * times) + msd_z = np.where(tail, 1.0 * times + 300.0, 4.0 * times) + msd_tot = msd_x + msd_y + msd_z + + results = MSD._fit_diffusion( + lags, + msd_x, + msd_y, + msd_z, + msd_tot, + time_step, + fit_window=fit_window + ) + + assert results["x"].slope == pytest.approx(0.6) + assert results["y"].slope == pytest.approx(0.8) + assert results["z"].slope == pytest.approx(1.0) + assert results["total"].slope == pytest.approx(2.4) + + assert results["x"].intercept == pytest.approx(100.0) + assert results["y"].intercept == pytest.approx(200.0) + assert results["z"].intercept == pytest.approx(300.0) + assert results["total"].intercept == pytest.approx(600.0) + + assert results["x"].diffusion_coefficient == pytest.approx(0.3e-8) + assert results["total"].diffusion_coefficient == pytest.approx(0.4e-8) + + # r^2 == 1 and stderr == 0 hold only for the exact trailing + # window: including even one leading point breaks both (an + # off-by-one slice gives stderr of order 1 and r^2 well + # below 1; the tolerance only allows for float rounding of + # the large intercepts) + for fit in results.values(): + assert fit.r_squared == pytest.approx(1.0, abs=1e-9) + assert fit.slope_stderr == pytest.approx(0.0, abs=1e-6) + + def test_fit_diffusion_noisy(self): + rng = np.random.default_rng(42) + + lags = np.arange(101) + time_step = 0.1 + times = lags * time_step + + noise = rng.normal(0.0, 0.05, size=(4, lags.size)) + + msd_x = 1.2 * times + noise[0] + msd_y = 1.2 * times + noise[1] + msd_z = 1.2 * times + noise[2] + msd_tot = 3.6 * times + noise[3] + + results = MSD._fit_diffusion( + lags, + msd_x, + msd_y, + msd_z, + msd_tot, + time_step, + fit_window=30 + ) + + for fit in results.values(): + assert 0.0 < fit.r_squared < 1.0 + assert fit.slope_stderr > 0.0 + assert fit.diffusion_coefficient_stderr > 0.0 + + assert results["x"].slope == pytest.approx(1.2, rel=0.1) + assert results["total"].slope == pytest.approx(3.6, rel=0.1) + + def test_window_not_multiple_of_gap(self, caplog): + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The window size 15 has to be an integer multiple of the gap 4." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=15, + gap=4, + ) + + def test_trajectory_too_short(self, caplog): + traj = _make_trajectory(np.zeros((12, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The trajectory with 12 frames is too short to establish " + "a window of 10 frames with a gap of 5 frames. At least " + "window + gap = 15 frames are required (or exactly " + "window frames for gap == 1)." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + ) + + def test_trajectory_too_short_gap_one(self, caplog): + # for gap == 1 only a trajectory of exactly window frames is + # accepted as the legacy single-origin boundary case - any + # shorter trajectory has to raise + traj = _make_trajectory(np.zeros((8, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The trajectory with 8 frames is too short to establish " + "a window of 10 frames with a gap of 1 frames. At least " + "window + gap = 11 frames are required (or exactly " + "window frames for gap == 1)." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=1, + ) + + def test_empty_trajectory(self, caplog): + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test="Trajectory cannot be of length 0.", + exception=MSDError, + function=MSD, + traj=Trajectory(), + target_species="O", + window=1, + gap=1, + ) + + def test_negative_n_start(self, caplog): + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test="n_start must be a non-negative integer.", + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + n_start=-1, + ) + + def test_n_start_too_large(self, caplog): + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The starting frame 25 is too large: time origins only " + "spawn at multiples of the gap 5 up to stop_frame = " + "(n_frames - window) // gap * gap = 20 (n_frames = 30, " + "window = 10), so no time origin could spawn." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + n_start=25, + ) + + def test_n_start_between_stop_frame_and_window_limit(self, caplog): + # n_start = 5 satisfies n_start <= n_frames - window = 6 but + # exceeds stop_frame = (14 - 8) // 4 * 4 = 4, so no origin + # could ever spawn - this used to run through silently and + # write an all-zero MSD + traj = _make_trajectory(np.zeros((14, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The starting frame 5 is too large: time origins only " + "spawn at multiples of the gap 4 up to stop_frame = " + "(n_frames - window) // gap * gap = 4 (n_frames = 14, " + "window = 8), so no time origin could spawn." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=8, + gap=4, + n_start=5, + ) + + def test_empty_selection(self, caplog): + traj = _make_trajectory(np.zeros((30, 1, 3)), names=["H"]) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test="The target selection does not select any atoms.", + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + ) + + def test_zero_time_step(self, caplog): + # time_step = 0.0 passes the PositiveReal type check but + # would make every fit abscissa identical - it has to be + # rejected before any frame is streamed + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The time_step must be a positive real number." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + time_step=0.0, + ) + + def test_fit_window_too_small(self, caplog): + # a linear regression needs at least two points, otherwise + # scipy returns an all-NaN fit + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The fit_window 1 must be at least 2 to perform a " + "linear diffusion fit." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + fit_window=1, + ) + + def test_fit_window_too_large(self, caplog): + traj = _make_trajectory(np.zeros((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "The fit_window 12 cannot be larger than window + 1 = 11." + ), + exception=MSDError, + function=MSD, + traj=traj, + target_species="O", + window=10, + gap=5, + fit_window=12, + ) + + def test_frame_atom_count_mismatch_multi_file(self, tmp_path, caplog): + # multiple trajectory files with different atom counts used + # to be silently minimum-imaged into garbage MSD values + file_a = tmp_path / "a.xyz" + file_b = tmp_path / "b.xyz" + + file_a.write_text( + ( + "2 100.0 100.0 100.0\n\n" + "O 0.0 0.0 0.0\nH 1.0 0.0 0.0\n" + "2 100.0 100.0 100.0\n\n" + "O 0.1 0.0 0.0\nH 1.0 0.0 0.0\n" + ), + encoding="utf-8", + ) + file_b.write_text( + ( + "1 100.0 100.0 100.0\n\n" + "O 0.2 0.0 0.0\n" + "1 100.0 100.0 100.0\n\n" + "O 0.3 0.0 0.0\n" + ), + encoding="utf-8", + ) + + reader = TrajectoryReader([str(file_a), str(file_b)]) + msd = MSD(reader, "O", window=2, gap=1) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "Frame 3 of the trajectory does not provide positions " + "for all 2 atoms of the topology. Please provide a " + "position trajectory (e.g. .xyz files) with a " + "consistent number of atoms." + ), + exception=MSDError, + function=msd.run, + ) + + def test_extxyz_reader_uses_non_raw_old_path(self, tmp_path): + # a TrajectoryReader is only routed to the raw fast path for + # plain XYZ trajectories; every other frame-carrying format + # (here EXTXYZ) is streamed through the per-frame + # AtomicSystem frame_generator (the old non-fast path). The + # result has to be identical to running the in-memory + # trajectory of the same wrapped coordinates and cell. + rng = np.random.default_rng(2024) + box = (10.0, 12.0, 14.0) + n_frames, n_atoms = 8, 3 + + wrapped = rng.uniform(0.0, 5.0, size=(n_frames, n_atoms, 3)) + + file = tmp_path / "traj.extxyz" + lines = [] + for frame in wrapped: + lines.append(str(n_atoms)) + lines.append( + f'Lattice="{box[0]} 0 0 0 {box[1]} 0 0 0 {box[2]}" ' + "Properties=species:S:1:pos:R:3" + ) + for atom in frame: + lines.append(f"O {atom[0]} {atom[1]} {atom[2]}") + file.write_text("\n".join(lines) + "\n", encoding="utf-8") + + reader = TrajectoryReader(str(file)) + + assert reader.traj_format == TrajectoryFormat.EXTXYZ + + msd = MSD(reader, "O", window=2, gap=1) + + # the EXTXYZ reader is not eligible for the raw fast path: + # it lands on the elif TrajectoryReader (old) branch that sets + # up the per-frame frame_generator instead of a _raw_reader + assert msd._raw_reader is None + assert msd.frame_generator is not None + assert msd.n_frames == n_frames + + _, msd_x, msd_y, msd_z, _ = msd.run() + + cell = Cell(*box, 90, 90, 90) + atoms = [Atom("O")] * n_atoms + systems = [ + AtomicSystem(atoms=atoms, pos=frame, cell=cell) + for frame in wrapped + ] + reference = MSD(Trajectory(systems), "O", window=2, gap=1) + _, ref_x, ref_y, ref_z, _ = reference.run() + + assert np.allclose(msd_x, ref_x, rtol=1e-5, atol=1e-6) + assert np.allclose(msd_y, ref_y, rtol=1e-5, atol=1e-6) + assert np.allclose(msd_z, ref_z, rtol=1e-5, atol=1e-6) + + def test_velocity_trajectory_rejected(self, caplog): + # frames of a velocity trajectory carry no positions and + # used to crash with a raw IndexError + cell = Cell(100.0, 100.0, 100.0, 90, 90, 90) + atoms = [Atom("O"), Atom("O")] + + systems = [ + AtomicSystem(atoms=atoms, vel=np.ones((2, 3)), cell=cell) + for _ in range(3) + ] + traj = Trajectory(systems) + + msd = MSD(traj, "O", window=1, gap=1) + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSD", + logging_level="ERROR", + message_to_test=( + "Frame 1 of the trajectory does not provide positions " + "for all 2 atoms of the topology. Please provide a " + "position trajectory (e.g. .xyz files) with a " + "consistent number of atoms." + ), + exception=MSDError, + function=msd.run, + ) + + def test_progress_bar_binds_config_at_call_time(self, monkeypatch): + # config.with_progress_bar is set by the CLI after the module + # import, so it must be read at call time, not bound by value + # at import time + captured = {} + + def fake_tqdm(iterable, **kwargs): + captured.update(kwargs) + return iterable + + monkeypatch.setattr(msd_module, "tqdm", fake_tqdm) + + monkeypatch.setattr(config, "with_progress_bar", False) + MSD(_make_trajectory(np.zeros((4, 1, 3))), "O", window=2, gap=1).run() + assert captured["disable"] is True + + captured.clear() + + monkeypatch.setattr(config, "with_progress_bar", True) + MSD(_make_trajectory(np.zeros((4, 1, 3))), "O", window=2, gap=1).run() + assert captured["disable"] is False + + def test_defaults(self): + traj = _make_trajectory(np.zeros((1200, 1, 3))) + + msd = MSD(traj, "O") + + assert msd.window == 1000 + assert msd.gap == 10 + assert msd.n_start == 0 + assert msd.time_step is None + assert msd.fit_window == 200 + assert msd.n_origins_max == 100 + assert msd.stop_frame == 200 + assert msd.total_origins == 20 + + def test_unwrap_shift_vacuum(self): + displacement = np.array([[1.0, 2.0, 3.0]]) + + shift = MSD._unwrap_shift(displacement, Cell()) + + assert np.array_equal(shift, np.zeros((1, 3))) + + def test_unwrap_shift_orthorhombic(self): + cell = Cell(10.0, 12.0, 14.0, 90, 90, 90) + displacement = np.array([[9.7, -11.9, 3.0]]) + + shift = MSD._unwrap_shift(displacement, cell) + + assert np.allclose(shift, [[-10.0, 12.0, 0.0]]) diff --git a/tests/analysis/msd/test_msd_input_file_reader.py b/tests/analysis/msd/test_msd_input_file_reader.py new file mode 100644 index 00000000..2d1d00e2 --- /dev/null +++ b/tests/analysis/msd/test_msd_input_file_reader.py @@ -0,0 +1,231 @@ +""" +Tests for the MSDInputFileReader class. +""" + +from pathlib import Path + +import pytest + +from PQAnalysis.analysis.msd.msd_input_file_reader import MSDInputFileReader +from PQAnalysis.io.input_file_reader.exceptions import InputFileError +from PQAnalysis.type_checking import get_type_error_message +from PQAnalysis.exceptions import PQTypeError, PQFileNotFoundError + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging, assert_logging_with_exception + + + +class TestMSDInputFileReader: + + """ + Tests for the MSDInputFileReader class. + """ + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test__init__(self, test_with_data_dir): + with pytest.raises(PQFileNotFoundError) as exception: + MSDInputFileReader("not-a-file") + assert str(exception.value) == "File not-a-file not found." + + filename = "input.in" + + reader = MSDInputFileReader(filename) + assert reader.filename == filename + assert reader.parser.filename == filename + + def test__init__type_checking(self, caplog): + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message("filename", 1.0, str), + exception=PQTypeError, + function=MSDInputFileReader, + filename=1.0, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_read_defaults(self, test_with_data_dir): + reader = MSDInputFileReader("input_defaults.in") + + reader.read() + + assert reader.traj_files == ["traj.xyz"] + assert reader.target_selection == "O" + assert reader.out_file == "msd.dat" + assert reader.window is None + assert reader.gap is None + assert reader.n_start is None + assert reader.time_step is None + assert reader.fit_window is None + assert reader.log_file is None + assert reader.use_full_atom_info is None + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_read_full(self, test_with_data_dir): + reader = MSDInputFileReader("input_full.in") + + reader.read() + + assert reader.traj_files == ["traj.xyz"] + assert reader.target_selection == "O" + assert reader.out_file == "msd.dat" + assert reader.log_file == "msd.log" + assert reader.window == 50 + assert reader.gap == 5 + assert reader.n_start == 7 + assert reader.time_step == 0.25 + assert reader.fit_window == 12 + assert reader.use_full_atom_info is True + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_start_alias(self, test_with_data_dir): + reader = MSDInputFileReader("input_start_alias.in") + + reader.read() + + assert reader.n_start == 7 + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_alias_conflict(self, test_with_data_dir, caplog): + reader = MSDInputFileReader("input_alias_conflict.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSDInputFileReader", + logging_level="ERROR", + message_to_test=( + "The keys 'first_frame' and 'start' are aliases and " + "cannot be used at the same time." + ), + exception=InputFileError, + function=reader.read, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_negative_start(self, test_with_data_dir, caplog): + # the input file grammar parses negative numbers as strings, + # so a negative start value is already rejected by the + # generic int parsing of the base reader + reader = MSDInputFileReader("input_negative_start.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="PQAnalysisInputFileReader", + logging_level="ERROR", + message_to_test=( + 'The "start" value has to be of int type - ' + "actually it is parsed as a str" + ), + exception=InputFileError, + function=reader.read, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_negative_start_injected(self, test_with_data_dir, caplog): + # the input file grammar parses literal negative numbers as + # strings, so the generic int parsing rejects them before the + # dedicated non-negative check is reached. Inject a negative + # first_frame value that is already typed as an int directly + # into the parsed dictionary so the reader's own + # non-negativity guard is exercised. + Path("input_negative_injected.in").write_text( + ( + "traj_files = traj.xyz\n" + "target_selection = O\n" + "out_file = msd.dat\n" + ), + encoding="utf-8", + ) + + reader = MSDInputFileReader("input_negative_injected.in") + + # read() rebuilds self.dictionary from parser.parse(), so the + # negative int is injected into the dictionary the reader will + # actually use by patching parse to return the doctored one + dictionary = reader.parser.parse() + dictionary["first_frame"] = (-5, "int", "0") + reader.parser.parse = lambda: dictionary + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSDInputFileReader", + logging_level="ERROR", + message_to_test=( + "The 'first_frame'/'start' value has to be a " + "non-negative integer - It actually is -5!" + ), + exception=InputFileError, + function=reader.read, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_zero_time_step(self, test_with_data_dir, caplog): + # the generic positive-real parsing of the base reader + # accepts 0.0, so the MSD reader has to reject it itself + Path("input_zero_time_step.in").write_text( + ( + "traj_files = traj.xyz\n" + "target_selection = O\n" + "out_file = msd.dat\n" + "time_step = 0.0\n" + ), + encoding="utf-8", + ) + + reader = MSDInputFileReader("input_zero_time_step.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSDInputFileReader", + logging_level="ERROR", + message_to_test=( + "The 'time_step' value has to be a positive real " + "number - It actually is 0.0!" + ), + exception=InputFileError, + function=reader.read, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_missing_required_key(self, test_with_data_dir, caplog): + reader = MSDInputFileReader("input_missing_required.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="MSDInputFileReader", + logging_level="ERROR", + message_to_test=( + "Not all required keys were set in the input file! " + f"The required keys are: {MSDInputFileReader.required_keys}." + ), + exception=InputFileError, + function=reader.read, + ) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_unknown_key_warning(self, test_with_data_dir, caplog): + Path("input_unknown_key.in").write_text( + ( + "traj_files = traj.xyz\n" + "target_selection = O\n" + "out_file = msd.dat\n" + "r_max = 5.0\n" + ), + encoding="utf-8", + ) + + reader = MSDInputFileReader("input_unknown_key.in") + + assert_logging( + caplog=caplog, + logging_name="MSDInputFileReader", + logging_level="WARNING", + message_to_test=( + "Unknown keys were set in the input file! The known keys " + f"are: {MSDInputFileReader.required_keys + MSDInputFileReader.optional_keys}. " + "They will be ignored!" + ), + function=reader.read, + ) diff --git a/tests/analysis/msd/test_msd_kernel.py b/tests/analysis/msd/test_msd_kernel.py new file mode 100644 index 00000000..8c5b6982 --- /dev/null +++ b/tests/analysis/msd/test_msd_kernel.py @@ -0,0 +1,330 @@ +""" +Equivalence tests of the Cython MSD frame kernel against the pure +Python/numpy fallback kernel. + +Both kernels implement the identical signature and are driven frame by +frame over synthetic wrapped random-walk trajectories (orthorhombic, +triclinic, NPT with changing boxes and vacuum cases). The resulting +MSD accumulators and the complete mutable state (shift, prev_pos, +origins, bookkeeping) must agree to within tight floating point +tolerances. The fast path of the MSD class itself is additionally run +against both kernels via monkeypatching. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis.analysis.msd import MSD +from PQAnalysis.analysis.msd import _msd_kernel_py +from PQAnalysis.core import Cell +from PQAnalysis.io import TrajectoryReader + +from .. import pytestmark # pylint: disable=unused-import + +try: + from PQAnalysis.analysis.msd import _msd_kernel +except ModuleNotFoundError: # pragma: no cover - build-dependent + _msd_kernel = None + +#: The module defining the MSD class (the package attribute ``msd`` +#: is shadowed by the api function of the same name). +msd_module = sys.modules[MSD.__module__] + +KERNELS = [ + pytest.param(_msd_kernel_py.msd_frame_update, id="python-fallback"), + pytest.param( + _msd_kernel.msd_frame_update if _msd_kernel is not None else None, + id="cython", + marks=pytest.mark.skipif( + _msd_kernel is None, + reason="Cython _msd_kernel extension not built", + ), + ), +] + + + +def _wrapped_random_walk(n_frames, n_atoms, cells, seed): + """ + Builds a float32 wrapped random walk (one array per frame) that is + wrapped into the (possibly per-frame changing) cells. + """ + rng = np.random.default_rng(seed) + + positions = np.cumsum( + rng.normal(0.0, 1.5, size=(n_frames, n_atoms, 3)), + axis=0, + ) + + frames = [] + + for frame_positions, cell in zip(positions, cells): + if cell.is_vacuum: + wrapped = frame_positions + else: + # wrap into the cell with the generic triclinic recipe + fractional = frame_positions @ np.linalg.inv(cell.box_matrix).T + wrapped = ( + frame_positions + - np.floor(fractional) @ cell.box_matrix.T + ) + + frames.append(np.asarray(wrapped, dtype=np.float32)) + + return frames + + + +def _drive_kernel( + kernel, + frames, + cells, + indices, + window, + gap, + n_start, + stop_frame, + n_origins_max, +): + """ + Drives a kernel implementation frame by frame and returns the + full final state. + """ + n_sel = len(indices) + + msd = np.zeros((window + 1, 3)) + origins = np.zeros((n_origins_max, n_sel, 3)) + state = np.zeros(2, dtype=np.int64) + + pos = np.zeros((n_sel, 3)) + prev_pos = np.zeros((n_sel, 3)) + shift = np.zeros((n_sel, 3)) + unwrapped = np.zeros((n_sel, 3)) + + indices = np.ascontiguousarray(indices, dtype=np.int64) + + for counter, (values, cell) in enumerate(zip(frames, cells), start=1): + is_vacuum = 1 if cell.is_vacuum else 0 + + if is_vacuum: + box = np.eye(3) + inv_box = np.eye(3) + else: + box = np.ascontiguousarray(cell.box_matrix, dtype=np.float64) + inv_box = np.ascontiguousarray( + cell.inverse_box_matrix, dtype=np.float64 + ) + + kernel( + values, + indices, + box, + inv_box, + is_vacuum, + pos, + prev_pos, + shift, + unwrapped, + origins, + msd, + state, + counter, + gap, + window, + n_start, + stop_frame, + ) + + return { + "msd": msd, + "origins": origins, + "state": state, + "pos": pos, + "prev_pos": prev_pos, + "shift": shift, + "unwrapped": unwrapped, + } + + + +def _assert_kernel_equivalence(cells, n_frames, window, gap, n_start=0): + """ + Runs both kernels over the same trajectory and asserts that the + complete final state agrees. + """ + if _msd_kernel is None: # pragma: no cover - build-dependent + pytest.skip("Cython _msd_kernel extension not built") + + n_atoms = 7 + frames = _wrapped_random_walk(n_frames, n_atoms, cells, seed=2024) + indices = np.array([0, 2, 3, 6], dtype=np.int64) + + stop_frame = (n_frames - window) // gap * gap + n_origins_max = window // gap + + results = [ + _drive_kernel( + kernel, + frames, + cells, + indices, + window, + gap, + n_start, + stop_frame, + n_origins_max, + ) + for kernel in ( + _msd_kernel.msd_frame_update, + _msd_kernel_py.msd_frame_update, + ) + ] + + for key in results[0]: + assert np.allclose( + results[0][key], + results[1][key], + rtol=0.0, + atol=1e-12, + ), f"kernel/fallback mismatch in {key}" + + assert np.array_equal(results[0]["state"], results[1]["state"]) + + # both kernels must have accumulated a non-trivial MSD + assert np.any(results[0]["msd"] != 0.0) + + + +class TestMSDKernelEquivalence: + + """ + Equivalence tests of the Cython kernel vs the numpy fallback. + """ + + def test_orthorhombic(self): + cells = [Cell(11.0, 13.0, 17.0)] * 90 + + _assert_kernel_equivalence(cells, 90, window=20, gap=5) + + def test_orthorhombic_gap_one(self): + cells = [Cell(9.0, 9.0, 9.0)] * 50 + + _assert_kernel_equivalence(cells, 50, window=10, gap=1) + + def test_orthorhombic_n_start(self): + cells = [Cell(11.0, 13.0, 17.0)] * 90 + + _assert_kernel_equivalence(cells, 90, window=20, gap=5, n_start=17) + + def test_triclinic(self): + cells = [Cell(12.0, 14.0, 16.0, 80.0, 95.0, 103.0)] * 90 + + _assert_kernel_equivalence(cells, 90, window=20, gap=5) + + def test_npt_changing_boxes(self): + # box breathes every 10 frames (NPT-like), including a + # triclinic stretch + cells = [] + for i in range(90): + factor = 1.0 + 0.02 * ((i // 10) % 4) + if (i // 10) % 2 == 0: + cells.append( + Cell(11.0 * factor, 13.0 * factor, 17.0 * factor) + ) + else: + cells.append( + Cell( + 11.0 * factor, + 13.0 * factor, + 17.0 * factor, + 85.0, + 92.0, + 88.0, + ) + ) + + _assert_kernel_equivalence(cells, 90, window=20, gap=5) + + def test_vacuum(self): + cells = [Cell()] * 60 + + _assert_kernel_equivalence(cells, 60, window=20, gap=5) + + def test_mixed_vacuum_and_box(self): + # vacuum frames in between (no unwrapping applied there) + cells = [ + Cell() if i % 7 == 3 else Cell(11.0, 13.0, 17.0) + for i in range(60) + ] + + _assert_kernel_equivalence(cells, 60, window=20, gap=5) + + + +class TestMSDFastPathKernels: + + """ + Tests of the MSD fast path with both kernel implementations. + """ + + @staticmethod + def _write_trajectory(path, n_frames=60, n_atoms=8, seed=99): + rng = np.random.default_rng(seed) + box = np.array([10.0, 12.0, 14.0]) + + positions = np.cumsum( + rng.normal(0.0, 0.8, size=(n_frames, n_atoms, 3)), + axis=0, + ) % box + + names = ["O" if i % 2 == 0 else "H" for i in range(n_atoms)] + + with open(path, "w", encoding="utf-8") as file: + for frame_positions in positions: + file.write(f"{n_atoms} {box[0]} {box[1]} {box[2]}\n\n") + for name, (x, y, z) in zip(names, frame_positions): + file.write(f"{name} {x:.6f} {y:.6f} {z:.6f}\n") + + return positions + + @pytest.mark.parametrize("kernel", KERNELS) + def test_fast_path_matches_in_memory_path( + self, + kernel, + tmp_path, + monkeypatch, + ): + # the fast path (with either kernel implementation) must + # reproduce the results of the original in-memory hot loop + filename = str(tmp_path / "traj.xyz") + self._write_trajectory(filename) + + monkeypatch.setattr(msd_module, "msd_frame_update", kernel) + + reader = TrajectoryReader(filename) + msd_fast = MSD(reader, "O", window=20, gap=5) + + assert msd_fast._raw_reader is not None # pylint: disable=protected-access + + result_fast = np.column_stack(msd_fast.run()[1:]) + + traj = TrajectoryReader(filename).read() + msd_reference = MSD(traj, "O", window=20, gap=5) + + assert msd_reference._raw_reader is None # pylint: disable=protected-access + + result_reference = np.column_stack(msd_reference.run()[1:]) + + assert np.allclose( + result_fast, result_reference, rtol=0.0, atol=1e-12 + ) + + def test_active_kernel_is_a_known_implementation(self): + # the msd module must have wired up either the Cython kernel + # or the numpy fallback via the try-import + assert msd_module.msd_frame_update.__module__ in ( + "PQAnalysis.analysis.msd._msd_kernel", + "PQAnalysis.analysis.msd._msd_kernel_py", + ) diff --git a/tests/analysis/msd/test_msd_kernel_fallback.py b/tests/analysis/msd/test_msd_kernel_fallback.py new file mode 100644 index 00000000..bd704cc3 --- /dev/null +++ b/tests/analysis/msd/test_msd_kernel_fallback.py @@ -0,0 +1,110 @@ +""" +Tests for the pure-Python fallback import of the MSD frame kernel. + +The ``msd`` module imports the compiled Cython kernel +:py:mod:`PQAnalysis.analysis.msd._msd_kernel` and falls back to the +pure numpy implementation +:py:mod:`PQAnalysis.analysis.msd._msd_kernel_py` only when the compiled +extension is not importable (``except ModuleNotFoundError``). As the +compiled extension is present in the test environment, that fallback +branch is exercised by importing a *fresh* copy of the ``msd`` module +source (from the same file, under a throwaway name) while a meta_path +finder blocks the compiled kernel. A fresh copy is used instead of +reloading the shared module object on purpose: reloading would rebind +the ``MSD`` / ``MSDDiffusionFit`` classes to new objects and break the +beartype runtime type checks of other tests that captured the original +class identities. The throwaway module leaves the shared ``msd`` module +completely untouched. +""" + +import importlib +import importlib.machinery +import importlib.util +import sys + +from PQAnalysis.analysis.msd import MSD + +from .. import pytestmark # pylint: disable=unused-import + +#: The dotted name of the compiled kernel module blocked below. +_KERNEL = "PQAnalysis.analysis.msd._msd_kernel" + +#: The dotted name of the pure-Python fallback kernel module. +_KERNEL_PY = "PQAnalysis.analysis.msd._msd_kernel_py" + +#: The throwaway name under which the fresh msd module copy is loaded. +_PROBE = "PQAnalysis.analysis.msd._msd_fallback_probe" + +# pylint: disable=protected-access + + + +class _BlockKernel: + + """ + A meta_path finder that raises ModuleNotFoundError for the compiled + MSD kernel module and defers to the remaining finders for every + other module. + """ + + def find_spec(self, name, path=None, target=None): + if name == _KERNEL: + raise ModuleNotFoundError(name) + return None + + + +def test_msd_frame_update_falls_back_to_python_kernel(): + real_module = sys.modules[MSD.__module__] + real_kernel = real_module.msd_frame_update + + assert real_kernel.__module__.endswith("_msd_kernel") + + # pre-import the pure-Python fallback kernel so the probe's fallback + # ``from ._msd_kernel_py import ...`` is served from the module cache + # instead of re-running the import machinery (which, under the + # beartype claw import hook in DEBUG mode, recurses on a re-entrant + # first import of a hooked package module) + importlib.import_module(_KERNEL_PY) + + blocker = _BlockKernel() + had_kernel = _KERNEL in sys.modules + + # drop the cached compiled kernel so the fresh import re-runs the + # import machinery (and thus the blocking finder) for the relative + # ``from ._msd_kernel import ...`` line; already bound references + # (e.g. real_module.msd_frame_update) are unaffected by this + sys.modules.pop(_KERNEL, None) + sys.meta_path.insert(0, blocker) + + try: + # exec the msd.py source through a plain SourceFileLoader so the + # same file lines are executed (and counted by coverage) without + # going through the beartype claw import hook, which recurses on + # a re-entrant fresh load of a hooked package module in DEBUG + # mode. __package__ is set so the relative fallback import + # ``from ._msd_kernel_py import ...`` resolves correctly. + loader = importlib.machinery.SourceFileLoader( + _PROBE, real_module.__file__ + ) + spec = importlib.util.spec_from_loader(_PROBE, loader) + probe = importlib.util.module_from_spec(spec) + probe.__package__ = "PQAnalysis.analysis.msd" + sys.modules[_PROBE] = probe + loader.exec_module(probe) + + # the ModuleNotFoundError of the compiled kernel selected the + # pure-Python fallback import (the except branch of msd.py) + assert probe.msd_frame_update.__module__.endswith("_msd_kernel_py") + finally: + sys.meta_path.remove(blocker) + sys.modules.pop(_PROBE, None) + if had_kernel: + # restore the compiled kernel in sys.modules for any later + # test that imports it freshly + importlib.import_module(_KERNEL) + + # the shared msd module and its class identities are untouched + assert sys.modules[MSD.__module__] is real_module + assert real_module.msd_frame_update is real_kernel + assert real_module.msd_frame_update.__module__.endswith("_msd_kernel") diff --git a/tests/analysis/msd/test_msd_output_file_writer.py b/tests/analysis/msd/test_msd_output_file_writer.py new file mode 100644 index 00000000..55770ea9 --- /dev/null +++ b/tests/analysis/msd/test_msd_output_file_writer.py @@ -0,0 +1,188 @@ +""" +Tests for the MSDDataWriter and MSDLogWriter classes. +""" + +import numpy as np + +from PQAnalysis.analysis.msd import MSD, MSDDataWriter, MSDLogWriter +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom, Cell +from PQAnalysis.traj import Trajectory +from PQAnalysis.type_checking import get_type_error_message +from PQAnalysis.exceptions import PQTypeError + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + + + +def _make_msd(time_step=None): + """ + Builds a small MSD analysis object for writer tests. + """ + rng = np.random.default_rng(42) + cell = Cell(10.0, 10.0, 10.0) + atoms = [Atom("O"), Atom("H")] + + systems = [ + AtomicSystem( + atoms=atoms, + pos=rng.uniform(0.0, 10.0, (2, 3)), + cell=cell + ) for _ in range(20) + ] + + return MSD( + Trajectory(systems), + "O", + window=5, + gap=5, + time_step=time_step + ) + + + +class TestMSDDataWriter: + + """ + Tests for the MSDDataWriter class. + """ + + def test__type_checking(self, caplog): + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message("filename", 1.0, str), + exception=PQTypeError, + function=MSDDataWriter, + filename=1.0, + ) + + def test_write_legacy_format(self, tmp_path): + data = ( + np.array([0, 1]), + np.array([0.0, 0.08081983]), + np.array([0.0, 0.09092513]), + np.array([0.0, 0.09018468]), + np.array([0.0, 0.26192964]), + ) + + out_file = tmp_path / "msd.dat" + writer = MSDDataWriter(str(out_file)) + + writer.write(data) + + # exactly the legacy Diffcalc output format + assert out_file.read_text(encoding="utf-8") == ( + " 0 0.00000000 0.00000000 0.00000000\n" + " 1 0.08081983 0.09092513 0.09018468\n" + ) + + + +class TestMSDLogWriter: + + """ + Tests for the MSDLogWriter class. + """ + + def test__type_checking(self, caplog): + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message( + "filename", + 1.0, + str | None + ), + exception=PQTypeError, + function=MSDLogWriter, + filename=1.0, + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message("msd", 1.0, MSD), + exception=PQTypeError, + function=MSDLogWriter("test.out").write_before_run, + msd=1.0, + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name="TypeChecking", + logging_level="ERROR", + message_to_test=get_type_error_message("msd", 1.0, MSD), + exception=PQTypeError, + function=MSDLogWriter("test.out").write_after_run, + msd=1.0, + ) + + def test_write_before_run(self, tmp_path): + msd = _make_msd() + log_file = tmp_path / "msd.log" + writer = MSDLogWriter(str(log_file)) + + writer.write_before_run(msd) + + contents = log_file.read_text(encoding="utf-8") + + assert "MSD calculation:" in contents + assert "Window size (frames): 5" in contents + assert "Origin gap (frames): 5" in contents + assert "Number of origins: 3" in contents + assert "Number of frames: 20" in contents + assert "Number of atoms: 2" in contents + assert "Target selection:" in contents + assert "total number of atoms in target selection: 1" in contents + assert "Time step" not in contents + + def test_write_before_run_with_time_step(self, tmp_path): + msd = _make_msd(time_step=0.5) + log_file = tmp_path / "msd.log" + writer = MSDLogWriter(str(log_file)) + + writer.write_before_run(msd) + + contents = log_file.read_text(encoding="utf-8") + + assert "Time step: 0.5 ps" in contents + assert "Fit window: last 2 points" in contents + + def test_write_after_run(self, tmp_path): + msd = _make_msd() + msd.run() + + log_file = tmp_path / "msd.log" + writer = MSDLogWriter(str(log_file)) + + writer.write_after_run(msd) + + contents = log_file.read_text(encoding="utf-8") + + assert "Diffusion coefficients" not in contents + assert "Elapsed time:" in contents + + def test_write_after_run_with_fit_results(self, tmp_path): + msd = _make_msd(time_step=0.5) + msd.run() + + log_file = tmp_path / "msd.log" + writer = MSDLogWriter(str(log_file)) + + writer.write_after_run(msd) + + contents = log_file.read_text(encoding="utf-8") + + assert "Diffusion coefficients (Einstein relation):" in contents + assert "D_x" in contents + assert "D_y" in contents + assert "D_z" in contents + assert "D_total" in contents + assert "m^2/s" in contents + assert "R^2" in contents + assert "Elapsed time:" in contents diff --git a/tests/analysis/msd/test_parity.py b/tests/analysis/msd/test_parity.py new file mode 100644 index 00000000..3b516cd0 --- /dev/null +++ b/tests/analysis/msd/test_parity.py @@ -0,0 +1,75 @@ +""" +Parity tests of the MSD class against reference data generated with +the legacy thh_tools Diffcalc binary. + +The reference data in tests/data/msd was generated by running the +legacy Diffcalc tool (compiled with -O2) with the checked-in input +files diffcalc_O.in, diffcalc_atom3.in and diffcalc_O_start.in on +the checked-in trajectory traj.xyz (40 atoms with alternating O/H +names performing a wrapped random walk in an orthorhombic box of +20 Angstrom over 500 frames). +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.msd import MSD +from PQAnalysis.io import TrajectoryReader + +from .. import pytestmark # pylint: disable=unused-import + +#: The tolerances of the parity tests. PQAnalysis parses coordinates +#: as float32 while the legacy tool parses them as double, so exact +#: equality cannot be expected. The observed maximum absolute +#: deviation is below 1e-6 for MSD values of the order of 10. +RTOL = 1e-5 +ATOL = 5e-6 + + + +def _run_msd(target_species, **kwargs): + """ + Runs an MSD analysis on the reference trajectory. + """ + reader = TrajectoryReader("traj.xyz") + msd = MSD(reader, target_species, window=100, gap=10, **kwargs) + _, msd_x, msd_y, msd_z, _ = msd.run() + + return np.column_stack([msd_x, msd_y, msd_z]) + + + +class TestMSDLegacyParity: + + """ + Parity tests of the MSD class against the legacy Diffcalc tool. + """ + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_name_selection_matches_legacy(self, test_with_data_dir): + reference = np.loadtxt("msd_ref_O.dat") + + result = _run_msd("O") + + assert np.allclose(result, reference[:, 1:], rtol=RTOL, atol=ATOL) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_index_selection_matches_legacy(self, test_with_data_dir): + # the legacy Diffcalc target_atoms indices are 0-based, + # exactly like the PQAnalysis selection indices + reference = np.loadtxt("msd_ref_atom3.dat") + + result = _run_msd(np.array([3])) + + assert np.allclose(result, reference[:, 1:], rtol=RTOL, atol=ATOL) + + @pytest.mark.parametrize("example_dir", ["msd"], indirect=False) + def test_n_start_matches_legacy(self, test_with_data_dir): + # legacy 'start = 155;' delays the origin spawning to the + # first multiple of the gap >= 155 but intentionally keeps + # the normalization by total_origins = stop_frame // gap + reference = np.loadtxt("msd_ref_O_start.dat") + + result = _run_msd("O", n_start=155) + + assert np.allclose(result, reference[:, 1:], rtol=RTOL, atol=ATOL) diff --git a/tests/analysis/rdf/test_rdf.py b/tests/analysis/rdf/test_rdf.py index 00886da0..f476936e 100644 --- a/tests/analysis/rdf/test_rdf.py +++ b/tests/analysis/rdf/test_rdf.py @@ -673,6 +673,32 @@ def test_run_with_no_intra_molecular(self): assert np.isfinite(normalized_bins2).all() assert np.isfinite(differential_bins).all() + def test_run_skips_self_pairs_for_overlapping_selections(self): + system = AtomicSystem( + atoms=[Atom("H"), Atom("H")], + pos=np.array([[0, 0, 0], [1, 0, 0]]), + cell=Cell(10, 10, 10, 90, 90, 90) + ) + + rdf = RDF(Trajectory([system]), ["H"], ["H"], delta_r=0.5, n_bins=4) + + ( + _bin_middle_points, + normalized_bins, + integrated_bins, + normalized_bins2, + differential_bins + ) = rdf.run() + + np.testing.assert_allclose(rdf.bins, np.array([0.0, 0.0, 2.0, 0.0])) + np.testing.assert_allclose( + integrated_bins, + np.array([0.0, 0.0, 1.0, 1.0]) + ) + assert np.isfinite(normalized_bins).all() + assert np.isfinite(normalized_bins2).all() + assert np.isfinite(differential_bins).all() + def test_matches_ase_partial_rdf_reference(self): from ase import Atoms from ase.geometry.rdf import get_rdf as ase_get_rdf diff --git a/tests/analysis/rdf/test_rdf_kernel.py b/tests/analysis/rdf/test_rdf_kernel.py new file mode 100644 index 00000000..939b1264 --- /dev/null +++ b/tests/analysis/rdf/test_rdf_kernel.py @@ -0,0 +1,562 @@ +""" +Equivalence tests of the Cython RDF distance-histogram kernel against +the pure Python/numpy fallback kernel and bit-identity tests of the +raw-frame fast path against the original RDF path. + +Both kernels implement the identical signature and are driven frame +by frame over synthetic float32 frames (orthorhombic, triclinic, NPT +with changing boxes, vacuum and bin-edge cases). The resulting int64 +histograms must agree exactly (atol 0). The fast path of the RDF +class itself is additionally run against both kernels via +monkeypatching and compared bit-identically (np.array_equal on all +output arrays) against the original path, both from an in-memory +trajectory and from a TrajectoryReader with the fast path disabled. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis.analysis import RDF +from PQAnalysis.analysis.rdf import _rdf_kernel_py +from PQAnalysis.analysis.rdf.exceptions import RDFError +from PQAnalysis.core import Cell +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io.traj_file.exceptions import TrajectoryReaderError + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + +# pylint: disable=protected-access + +try: + from PQAnalysis.analysis.rdf import _rdf_kernel +except ModuleNotFoundError: # pragma: no cover - build-dependent + _rdf_kernel = None + +#: The module defining the RDF class (the package attribute ``rdf`` +#: is shadowed by the api function of the same name). +rdf_module = sys.modules[RDF.__module__] + +KERNELS = [ + pytest.param(_rdf_kernel_py.rdf_frame_histogram, id="python-fallback"), + pytest.param( + _rdf_kernel.rdf_frame_histogram if _rdf_kernel is not None else None, + id="cython", + marks=pytest.mark.skipif( + _rdf_kernel is None, + reason="Cython _rdf_kernel extension not built", + ), + ), +] + + +def _random_frames(n_frames, n_atoms, spread, seed): + """ + Builds float32 frames of uniformly distributed positions. + """ + rng = np.random.default_rng(seed) + + return [ + np.asarray( + rng.uniform(0.0, spread, size=(n_atoms, 3)), + dtype=np.float32, + ) + for _ in range(n_frames) + ] + + +def _drive_kernel(kernel, frames, cells, r_min, delta_r, n_bins): + """ + Drives a kernel implementation frame by frame (like the fast + path of the RDF class does) and returns the histogram. + """ + reference_indices = np.arange(0, 30, 2, dtype=np.int64) + # overlaps with the reference indices, so that the self-pair + # exclusion is exercised + target_indices = np.arange(0, 30, 3, dtype=np.int64) + + hist = np.zeros(n_bins, dtype=np.int64) + + for values, cell in zip(frames, cells): + is_orthorhombic = 1 if ( + cell.alpha == 90 and cell.beta == 90 and cell.gamma == 90 + ) else 0 + + kernel( + values, + reference_indices, + target_indices, + np.ascontiguousarray(cell.box_lengths, dtype=np.float64), + np.ascontiguousarray(cell.box_matrix, dtype=np.float64), + np.ascontiguousarray(cell.inverse_box_matrix, dtype=np.float64), + is_orthorhombic, + r_min, + delta_r, + n_bins, + hist, + ) + + return hist + + +def _assert_kernel_equivalence(cells, r_min=0.0, delta_r=0.05, n_bins=200): + """ + Runs both kernels over the same frames and asserts that the + histograms agree exactly. + """ + if _rdf_kernel is None: # pragma: no cover - build-dependent + pytest.skip("Cython _rdf_kernel extension not built") + + frames = _random_frames(len(cells), 30, 17.0, seed=2026) + + histograms = [ + _drive_kernel(kernel, frames, cells, r_min, delta_r, n_bins) + for kernel in ( + _rdf_kernel.rdf_frame_histogram, + _rdf_kernel_py.rdf_frame_histogram, + ) + ] + + assert np.array_equal(histograms[0], histograms[1]) + + # both kernels must have accumulated a non-trivial histogram + assert histograms[0].sum() > 0 + + +def _write_trajectory(path, positions, headers): + """ + Writes an xyz trajectory file with the given per-frame header + box strings. + """ + with open(path, "w", encoding="utf-8") as file: + for frame_positions, header in zip(positions, headers): + file.write(f"{len(frame_positions)}{header}\n\n") + + for i, (x, y, z) in enumerate(frame_positions): + name = "O" if i % 2 == 0 else "H" + file.write(f"{name} {x:.6f} {y:.6f} {z:.6f}\n") + + return str(path) + + +def _write_random_trajectory(path, n_frames=25, n_atoms=16, seed=4242): + """ + Writes a constant orthorhombic box xyz trajectory file. + """ + rng = np.random.default_rng(seed) + + positions = rng.uniform(0.0, 12.0, size=(n_frames, n_atoms, 3)) + headers = [" 12.0 12.0 12.0"] * n_frames + + return _write_trajectory(path, positions, headers) + + +def _write_npt_trajectory(path, n_frames=24, n_atoms=16, seed=99): + """ + Writes an NPT-like xyz trajectory file with per-frame changing + boxes, mixing orthorhombic and triclinic headers. + """ + rng = np.random.default_rng(seed) + + positions = rng.uniform(0.0, 12.0, size=(n_frames, n_atoms, 3)) + + headers = [] + for i in range(n_frames): + factor = 1.0 + 0.01 * (i % 4) + if (i // 4) % 2 == 0: + headers.append(f" {12.0 * factor} {13.0 * factor} {14.0}") + else: + headers.append( + f" {12.0 * factor} {13.0 * factor} {14.0} 80.0 95.0 103.0" + ) + + return _write_trajectory(path, positions, headers) + + +def _run_rdf(traj, **kwargs): + """ + Runs an RDF analysis and returns its stacked output arrays. + """ + analysis = RDF(traj, "O", "H", **kwargs) + results = np.column_stack(analysis.run()) + + return analysis, results + + +class TestRDFKernelEquivalence: + + """ + Equivalence tests of the Cython kernel vs the numpy fallback. + """ + + def test_orthorhombic(self): + _assert_kernel_equivalence([Cell(11.0, 13.0, 17.0)] * 40) + + def test_orthorhombic_r_min(self): + _assert_kernel_equivalence( + [Cell(11.0, 13.0, 17.0)] * 40, + r_min=1.5, + delta_r=0.037, + n_bins=150, + ) + + def test_triclinic(self): + _assert_kernel_equivalence( + [Cell(12.0, 14.0, 16.0, 80.0, 95.0, 103.0)] * 40 + ) + + def test_npt_changing_boxes(self): + # box breathes every 5 frames (NPT-like), including + # triclinic stretches + cells = [] + for i in range(40): + factor = 1.0 + 0.02 * ((i // 5) % 4) + if (i // 5) % 2 == 0: + cells.append( + Cell(11.0 * factor, 13.0 * factor, 17.0 * factor) + ) + else: + cells.append( + Cell( + 11.0 * factor, + 13.0 * factor, + 17.0 * factor, + 85.0, + 92.0, + 88.0, + ) + ) + + _assert_kernel_equivalence(cells) + + def test_vacuum(self): + _assert_kernel_equivalence([Cell()] * 40, delta_r=0.5, n_bins=60) + + def test_distances_on_bin_edges(self): + # positions on an exact grid produce distances exactly on + # the bin edges, exercising the exact floor-divide path + if _rdf_kernel is None: # pragma: no cover - build-dependent + pytest.skip("Cython _rdf_kernel extension not built") + + frames = [ + np.array( + [[0.25 * i, 0.0, 0.0] for i in range(30)], + dtype=np.float32, + ) + ] + cells = [Cell(20.0, 20.0, 20.0)] + + histograms = [ + _drive_kernel(kernel, frames, cells, 0.0, 0.25, 40) + for kernel in ( + _rdf_kernel.rdf_frame_histogram, + _rdf_kernel_py.rdf_frame_histogram, + ) + ] + + assert np.array_equal(histograms[0], histograms[1]) + assert histograms[0].sum() > 0 + + +class TestRDFFastPath: + + """ + Bit-identity tests of the raw-frame fast path against the + original RDF path (with both kernel implementations). + """ + + @pytest.mark.parametrize("kernel", KERNELS) + @pytest.mark.parametrize( + "write_file", [_write_random_trajectory, _write_npt_trajectory] + ) + def test_fast_path_matches_original_paths( + self, + kernel, + write_file, + tmp_path, + monkeypatch, + ): + # the fast path (with either kernel implementation) must + # reproduce the results of the original path bit for bit, + # both from an in-memory trajectory and from a reader with + # the fast path disabled + filename = write_file(tmp_path / "traj.xyz") + + monkeypatch.setattr(rdf_module, "rdf_frame_histogram", kernel) + + rdf_fast, results_fast = _run_rdf( + TrajectoryReader(filename), delta_r=0.1, r_max=5.0 + ) + + assert rdf_fast._raw_reader is not None + + rdf_memory, results_memory = _run_rdf( + TrajectoryReader(filename).read(), delta_r=0.1, r_max=5.0 + ) + + assert rdf_memory._raw_reader is None + + monkeypatch.setattr( + RDF, "_use_raw_fast_path", lambda self, traj: False + ) + + rdf_reader, results_reader = _run_rdf( + TrajectoryReader(filename), delta_r=0.1, r_max=5.0 + ) + + assert rdf_reader._raw_reader is None + + assert np.array_equal(rdf_fast.bins, rdf_memory.bins) + assert np.array_equal(results_fast, results_memory) + assert np.array_equal(results_fast, results_reader) + assert rdf_fast.bins.sum() > 0 + + @pytest.mark.parametrize("kernel", KERNELS) + def test_fast_path_matches_original_path_r_min( + self, + kernel, + tmp_path, + monkeypatch, + ): + filename = _write_random_trajectory(tmp_path / "traj.xyz") + + monkeypatch.setattr(rdf_module, "rdf_frame_histogram", kernel) + + rdf_fast, results_fast = _run_rdf( + TrajectoryReader(filename), delta_r=0.1, r_max=5.0, r_min=1.0 + ) + + assert rdf_fast._raw_reader is not None + + rdf_memory, results_memory = _run_rdf( + TrajectoryReader(filename).read(), + delta_r=0.1, + r_max=5.0, + r_min=1.0, + ) + + assert np.array_equal(rdf_fast.bins, rdf_memory.bins) + assert np.array_equal(results_fast, results_memory) + + def test_fast_path_multiple_files(self, tmp_path): + filename1 = _write_random_trajectory(tmp_path / "traj1.xyz", seed=1) + filename2 = _write_random_trajectory(tmp_path / "traj2.xyz", seed=2) + + rdf_fast, results_fast = _run_rdf( + TrajectoryReader([filename1, filename2]), + delta_r=0.1, + r_max=5.0, + ) + + assert rdf_fast._raw_reader is not None + assert rdf_fast.n_frames == 50 + + traj = TrajectoryReader([filename1, filename2]).read() + _rdf_memory, results_memory = _run_rdf( + traj, delta_r=0.1, r_max=5.0 + ) + + assert np.array_equal(results_fast, results_memory) + + def test_dispatch_restrictions(self, tmp_path): + filename = _write_random_trajectory(tmp_path / "traj.xyz") + + # plain reader input uses the fast path + rdf_fast = RDF( + TrajectoryReader(filename), "O", "H", delta_r=0.1, r_max=5.0 + ) + assert rdf_fast._raw_reader is not None + assert rdf_fast.frame_generator is None + + # intra-molecular exclusion keeps the original path + rdf_no_intra = RDF( + TrajectoryReader(filename), + "O", + "H", + delta_r=0.1, + r_max=5.0, + no_intra_molecular=True, + ) + assert rdf_no_intra._raw_reader is None + assert rdf_no_intra.frame_generator is not None + + # in-memory trajectories keep the original path + rdf_memory = RDF( + TrajectoryReader(filename).read(), + "O", + "H", + delta_r=0.1, + r_max=5.0, + ) + assert rdf_memory._raw_reader is None + assert rdf_memory.frame_generator is not None + + def test_fast_path_frame_with_missing_atoms( + self, tmp_path, caplog, monkeypatch + ): + filename = _write_random_trajectory(tmp_path / "traj.xyz") + + rdf_fast = RDF( + TrajectoryReader(filename), "O", "H", delta_r=0.1, r_max=5.0 + ) + + def _truncated_generator(): + yield ( + np.zeros((3, 3), dtype=np.float32), + Cell(12.0, 12.0, 12.0), + ) + + monkeypatch.setattr( + rdf_fast._raw_reader, + "raw_frame_generator", + _truncated_generator, + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name=RDF.__qualname__, + logging_level="ERROR", + message_to_test=( + "Frame 1 of the trajectory provides only 3 atoms, " + "but the selections reference the atom index 15. " + "Please provide a trajectory with a consistent " + "number of atoms." + ), + exception=RDFError, + function=rdf_fast.run, + ) + + def test_active_kernel_is_a_known_implementation(self): + # the rdf module must have wired up either the Cython kernel + # or the numpy fallback via the try-import + assert rdf_module.rdf_frame_histogram.__module__ in ( + "PQAnalysis.analysis.rdf._rdf_kernel", + "PQAnalysis.analysis.rdf._rdf_kernel_py", + ) + + +class TestScanCells: + + """ + Tests of the header-only cell scan of the fast path against the + cells full scan of the TrajectoryReader. + """ + + @staticmethod + def _assert_cells_match(scanned, reference): + assert len(scanned) == len(reference) + + for scanned_cell, reference_cell in zip(scanned, reference): + assert np.array_equal( + scanned_cell.box_lengths, reference_cell.box_lengths + ) + assert np.array_equal( + scanned_cell.box_angles, reference_cell.box_angles + ) + + def test_matches_trajectory_reader_cells_npt(self, tmp_path): + filename = _write_npt_trajectory(tmp_path / "traj.xyz") + + cells, unique_cells = RDF._scan_cells([filename]) + + self._assert_cells_match(cells, TrajectoryReader(filename).cells) + + # every distinct box appears exactly once in the unique list + assert len({id(cell) for cell in cells}) == len(unique_cells) + + def test_matches_trajectory_reader_cells_dedup(self, tmp_path): + filename = _write_random_trajectory(tmp_path / "traj.xyz") + + cells, unique_cells = RDF._scan_cells([filename]) + + self._assert_cells_match(cells, TrajectoryReader(filename).cells) + + assert len(unique_cells) == 1 + assert all(cell is unique_cells[0] for cell in cells) + + def test_matches_trajectory_reader_cells_vacuum_inheritance( + self, tmp_path + ): + rng = np.random.default_rng(11) + positions = rng.uniform(0.0, 10.0, size=(6, 4, 3)) + + # frames without box information inherit the last box + headers = [ + " 10.0 10.0 10.0", + "", + " 11.0 11.0 11.0 80.0 95.0 103.0", + "", + "", + " 10.0 10.0 10.0", + ] + filename = _write_trajectory(tmp_path / "traj.xyz", positions, headers) + + cells, unique_cells = RDF._scan_cells([filename]) + + self._assert_cells_match(cells, TrajectoryReader(filename).cells) + + assert len(unique_cells) == 2 + assert cells[1] is cells[0] + assert cells[3] is cells[2] + assert cells[4] is cells[2] + assert cells[5] is cells[0] + + def test_matches_trajectory_reader_cells_pure_vacuum(self, tmp_path): + rng = np.random.default_rng(12) + positions = rng.uniform(0.0, 10.0, size=(3, 4, 3)) + + filename = _write_trajectory( + tmp_path / "traj.xyz", positions, ["", "", ""] + ) + + cells, unique_cells = RDF._scan_cells([filename]) + + self._assert_cells_match(cells, TrajectoryReader(filename).cells) + + assert len(unique_cells) == 1 + assert unique_cells[0].is_vacuum + + def test_multiple_files_inherit_across_boundaries(self, tmp_path): + rng = np.random.default_rng(13) + positions = rng.uniform(0.0, 10.0, size=(2, 4, 3)) + + filename1 = _write_trajectory( + tmp_path / "traj1.xyz", positions, [" 10.0 10.0 10.0", ""] + ) + filename2 = _write_trajectory( + tmp_path / "traj2.xyz", positions, ["", " 11.0 11.0 11.0"] + ) + + cells, unique_cells = RDF._scan_cells([filename1, filename2]) + + reader = TrajectoryReader([filename1, filename2]) + self._assert_cells_match(cells, reader.cells) + + assert len(cells) == 4 + assert cells[2] is cells[0] + assert len(unique_cells) == 2 + + def test_invalid_box_header(self, tmp_path, caplog): + rng = np.random.default_rng(14) + positions = rng.uniform(0.0, 10.0, size=(2, 4, 3)) + + filename = _write_trajectory( + tmp_path / "traj.xyz", + positions, + [" 10.0 10.0 10.0", " 10.0 10.0"], + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name=RDF.__qualname__, + logging_level="ERROR", + message_to_test=( + "Invalid number of arguments for box: 3 encountered " + f"in file {filename}:2 = 4 10.0 10.0" + ), + exception=TrajectoryReaderError, + function=RDF._scan_cells, + filenames=[filename], + ) diff --git a/tests/analysis/spectrum_broadening/__init__.py b/tests/analysis/spectrum_broadening/__init__.py new file mode 100644 index 00000000..fa89b5e2 --- /dev/null +++ b/tests/analysis/spectrum_broadening/__init__.py @@ -0,0 +1,3 @@ +""" +Tests for spectrum broadening. +""" diff --git a/tests/analysis/spectrum_broadening/test_api.py b/tests/analysis/spectrum_broadening/test_api.py new file mode 100644 index 00000000..74390d34 --- /dev/null +++ b/tests/analysis/spectrum_broadening/test_api.py @@ -0,0 +1,145 @@ +""" +Tests for the spectrum broadening API and output writer. +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.spectrum_broadening import ( + SpectrumDataWriter, + build_spectrum, +) +from PQAnalysis.analysis.spectrum_broadening.exceptions import ( + SpectrumBroadeningError, +) + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestBuildSpectrumAPI: + + """ + Tests for the build_spectrum API function. + """ + + @pytest.mark.parametrize( + "example_dir", ["spectrum_broadening"], indirect=False + ) + def test_legacy_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The broadened spectrum of the legacy 78-line stick spectrum + matches the output of the legacy build_spectrum.sh gawk + implementation on the default grid. + + The reference file spectrum.dat was produced by the legacy + awk loop with BROAD=0.0025 from lines.dat + (paste frequencies.dat intensity.dat of the legacy test case). + """ + grid, values = build_spectrum("lines.dat", output="out.dat") + + reference = np.loadtxt("spectrum.dat") + + assert grid.size == 15960 + assert np.array_equal(grid, reference[:, 0]) + assert np.allclose( + values, reference[:, 1], rtol=1e-10, atol=1e-300 + ) + + with open("out.dat", encoding="utf-8") as file: + lines = file.readlines() + + with open("spectrum.dat", encoding="utf-8") as file: + reference_lines = file.readlines() + + assert len(lines) == len(reference_lines) + + # the vast majority of the lines must be byte-identical to the + # legacy output; the remaining ones only differ in the last + # digit of the mantissa or in the subnormal underflow region + identical = sum( + 1 for line, reference_line in zip(lines, reference_lines) + if line == reference_line + ) + assert identical >= 15900 + + def test_stdout_output(self, tmpdir, capsys): # pylint: disable=unused-argument + """ + Without an output file the spectrum is printed to stdout in + the legacy '%8.4f %16.12e' format. + """ + with open("sticks.dat", "w", encoding="utf-8") as file: + file.write("15.0 2.0\n") + + build_spectrum( + "sticks.dat", + wavenumber_min=10.0, + wavenumber_max=11.0, + wavenumber_step=0.5, + ) + + captured = capsys.readouterr() + expected_first = 2.0 * np.exp(-0.0025 * (10.0 - 15.0)**2) + expected_second = 2.0 * np.exp(-0.0025 * (10.5 - 15.0)**2) + + assert captured.out == ( + f" 10.0000 {expected_first:16.12e}\n" + f" 10.5000 {expected_second:16.12e}\n" + ) + + def test_fwhm_option(self, tmpdir): # pylint: disable=unused-argument + """ + The fwhm parameter is an alternative way to set the width. + """ + with open("sticks.dat", "w", encoding="utf-8") as file: + file.write("100.0 2.0\n") + + _, values = build_spectrum( + "sticks.dat", + output="out.dat", + fwhm=20.0, + wavenumber_min=100.0, + wavenumber_max=120.0, + wavenumber_step=10.0, + ) + + assert values[0] == pytest.approx(2.0, rel=1e-15) + assert values[1] == pytest.approx(1.0, rel=1e-12) + + def test_alpha_and_fwhm_are_mutually_exclusive(self, tmpdir): # pylint: disable=unused-argument + """ + Specifying both alpha and fwhm is rejected. + """ + with open("sticks.dat", "w", encoding="utf-8") as file: + file.write("100.0 2.0\n") + + with pytest.raises(SpectrumBroadeningError): + build_spectrum("sticks.dat", alpha=0.0025, fwhm=20.0) + + + +class TestSpectrumDataWriter: + + """ + Tests for the SpectrumDataWriter class. + """ + + def test_write(self, tmpdir): # pylint: disable=unused-argument + """ + The writer produces the legacy '%8.4f %16.12e' rows. + """ + writer = SpectrumDataWriter("spectrum_out.dat") + writer.write( + ( + np.array([10.0, 3999.75]), + np.array([1.918547669503, 0.0]), + ) + ) + + with open("spectrum_out.dat", encoding="utf-8") as file: + lines = file.readlines() + + assert lines == [ + " 10.0000 1.918547669503e+00\n", + "3999.7500 0.000000000000e+00\n", + ] diff --git a/tests/analysis/spectrum_broadening/test_spectrum_broadening.py b/tests/analysis/spectrum_broadening/test_spectrum_broadening.py new file mode 100644 index 00000000..b53073d3 --- /dev/null +++ b/tests/analysis/spectrum_broadening/test_spectrum_broadening.py @@ -0,0 +1,261 @@ +""" +Tests for the spectrum broadening numerical routines. +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.spectrum_broadening import ( + DEFAULT_ALPHA, + alpha_from_fwhm, + broaden, + fwhm_from_alpha, + read_stick_spectrum, + wavenumber_grid, +) +from PQAnalysis.analysis.spectrum_broadening import ( + spectrum_broadening as spectrum_broadening_module, +) +from PQAnalysis.analysis.spectrum_broadening.exceptions import ( + SpectrumBroadeningError, +) + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestWidthConversion: + + """ + Tests for the alpha/FWHM conversion helpers. + """ + + def test_alpha_from_fwhm_roundtrip(self): + """ + The alpha/FWHM conversions are inverse to each other and the + default alpha corresponds to a FWHM of about 33.3 cm^-1. + """ + fwhm = fwhm_from_alpha(DEFAULT_ALPHA) + assert fwhm == pytest.approx(33.302185, rel=1e-6) + assert alpha_from_fwhm(fwhm) == pytest.approx( + DEFAULT_ALPHA, rel=1e-12 + ) + + def test_non_positive_values(self): + """ + Non-positive widths are rejected. + """ + with pytest.raises(SpectrumBroadeningError): + alpha_from_fwhm(0.0) + + with pytest.raises(SpectrumBroadeningError): + fwhm_from_alpha(0.0) + + + +class TestWavenumberGrid: + + """ + Tests for the wavenumber grid construction. + """ + + def test_default_grid_matches_legacy_loop(self): + """ + The default grid reproduces the legacy awk loop + 'for (i=10; i<4000; i+=0.25)' with 15960 points and an + exclusive upper bound. + """ + grid = wavenumber_grid() + + assert grid.size == 15960 + assert grid[0] == 10.0 + assert grid[-1] == 3999.75 + assert grid.dtype == np.float64 + + def test_custom_grid(self): + """ + A custom grid honors min, max and step. + """ + grid = wavenumber_grid(0.0, 1.0, 0.5) + assert np.array_equal(grid, [0.0, 0.5]) + + def test_invalid_grid_settings(self): + """ + Invalid grid settings are rejected. + """ + with pytest.raises(SpectrumBroadeningError): + wavenumber_grid(10.0, 4000.0, 0.0) + + with pytest.raises(SpectrumBroadeningError): + wavenumber_grid(4000.0, 10.0, 0.25) + + + +class TestBroaden: + + """ + Tests for the broadening kernel evaluation. + """ + + def test_gaussian_peak_height_convention(self): + """ + A single stick located on a grid point reaches exactly its + intensity there (no area normalization). + """ + grid = wavenumber_grid(1990.0, 2010.0, 0.25) + result = broaden( + np.array([2000.0]), np.array([3.0]), grid, alpha=0.0025 + ) + + assert result[np.where(grid == 2000.0)[0][0]] == pytest.approx( + 3.0, rel=1e-15 + ) + + def test_gaussian_matches_direct_formula(self): + """ + The vectorized broadening matches a direct per-stick scalar + evaluation of sum_k I_k * exp(-alpha (g - nu_k)^2). + """ + wavenumbers = np.array([36.7203, 83.2782, 114.5203]) + intensities = np.array([11.4330, 0.8398, 0.9518]) + grid = wavenumber_grid(10.0, 200.0, 0.25) + alpha = 0.0025 + + expected = np.zeros(grid.size) + for stick, intensity in zip(wavenumbers, intensities): + for index, grid_point in enumerate(grid): + expected[index] += intensity * np.exp( + -alpha * (grid_point - stick)**2 + ) + + result = broaden(wavenumbers, intensities, grid, alpha=alpha) + + assert np.allclose(result, expected, rtol=1e-13) + + def test_gaussian_fwhm(self): + """ + The broadened profile of a single stick falls to half of its + peak height at half the FWHM away from the stick. + """ + fwhm = 20.0 + alpha = alpha_from_fwhm(fwhm) + grid = np.array([1000.0, 1000.0 + fwhm / 2.0]) + + result = broaden(np.array([1000.0]), np.array([2.0]), grid, alpha) + + assert result[0] == pytest.approx(2.0, rel=1e-15) + assert result[1] == pytest.approx(1.0, rel=1e-12) + + def test_lorentzian_fwhm(self): + """ + The Lorentzian kernel shares peak height and FWHM with the + Gaussian kernel for the same alpha. + """ + fwhm = 20.0 + alpha = alpha_from_fwhm(fwhm) + grid = np.array([1000.0, 1000.0 + fwhm / 2.0]) + + result = broaden( + np.array([1000.0]), + np.array([2.0]), + grid, + alpha, + kernel="lorentzian", + ) + + assert result[0] == pytest.approx(2.0, rel=1e-15) + assert result[1] == pytest.approx(1.0, rel=1e-12) + + def test_chunked_evaluation(self, monkeypatch): + """ + Chunked evaluation gives the same result as a single chunk. + """ + rng = np.random.default_rng(42) + wavenumbers = rng.uniform(10.0, 4000.0, 17) + intensities = rng.uniform(0.0, 10.0, 17) + grid = wavenumber_grid(10.0, 500.0, 0.25) + + expected = broaden(wavenumbers, intensities, grid) + + monkeypatch.setattr( + spectrum_broadening_module, "_GRID_CHUNK_SIZE", 7 + ) + result = broaden(wavenumbers, intensities, grid) + + # bit-exact equality is not guaranteed because BLAS may sum + # small matrix products in a different order + assert np.allclose(result, expected, rtol=1e-12, atol=0.0) + + def test_empty_sticks(self): + """ + An empty stick spectrum broadens to all zeros like the legacy + awk implementation. + """ + grid = wavenumber_grid(10.0, 20.0, 1.0) + result = broaden(np.array([]), np.array([]), grid) + + assert np.array_equal(result, np.zeros(grid.size)) + + def test_invalid_inputs(self): + """ + Invalid alpha, kernel and shape settings are rejected. + """ + grid = wavenumber_grid(10.0, 20.0, 1.0) + + with pytest.raises(SpectrumBroadeningError): + broaden(np.array([1.0]), np.array([1.0]), grid, alpha=0.0) + + with pytest.raises(SpectrumBroadeningError): + broaden(np.array([1.0]), np.array([1.0]), grid, kernel="voigt") + + with pytest.raises(SpectrumBroadeningError): + broaden(np.array([1.0, 2.0]), np.array([1.0]), grid) + + + +class TestReadStickSpectrum: + + """ + Tests for the stick spectrum file reader. + """ + + def test_read(self, tmpdir): # pylint: disable=unused-argument + """ + A two-column file with comments and blank lines is parsed + into float64 arrays. + """ + with open("sticks.dat", "w", encoding="utf-8") as file: + file.write("# comment\n") + file.write("36.7203 11.4330\n") + file.write("\n") + file.write("83.2782 0.8398 extra-column\n") + + wavenumbers, intensities = read_stick_spectrum("sticks.dat") + + assert np.allclose(wavenumbers, [36.7203, 83.2782]) + assert np.allclose(intensities, [11.4330, 0.8398]) + assert wavenumbers.dtype == np.float64 + assert intensities.dtype == np.float64 + + def test_missing_file(self): + """ + A missing file is rejected. + """ + with pytest.raises(SpectrumBroadeningError): + read_stick_spectrum("does-not-exist.dat") + + def test_malformed_lines(self, tmpdir): # pylint: disable=unused-argument + """ + Files with too few columns or non-numeric data are rejected. + """ + with open("one_column.dat", "w", encoding="utf-8") as file: + file.write("36.7203\n") + + with pytest.raises(SpectrumBroadeningError): + read_stick_spectrum("one_column.dat") + + with open("non_numeric.dat", "w", encoding="utf-8") as file: + file.write("36.7203 abc\n") + + with pytest.raises(SpectrumBroadeningError): + read_stick_spectrum("non_numeric.dat") diff --git a/tests/analysis/vacf/__init__.py b/tests/analysis/vacf/__init__.py new file mode 100644 index 00000000..a518b92c --- /dev/null +++ b/tests/analysis/vacf/__init__.py @@ -0,0 +1,3 @@ +""" +Tests for the VACF analysis. +""" diff --git a/tests/analysis/vacf/test_api.py b/tests/analysis/vacf/test_api.py new file mode 100644 index 00000000..2938589f --- /dev/null +++ b/tests/analysis/vacf/test_api.py @@ -0,0 +1,219 @@ +""" +Tests for the API functions of the VACF analysis. +""" + +import os + +import numpy as np +import pytest + +from PQAnalysis.analysis.vacf import read_static_charges, vacf +from PQAnalysis.analysis.vacf.exceptions import VACFError +from PQAnalysis.io.exceptions import FileWritingModeError + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + + + +def _write_file(filename, content): + """ + Writes a file with the given content. + """ + with open(filename, "w", encoding="utf-8") as file: + file.write(content) + + + +class TestReadStaticCharges: + + """ + Tests for the read_static_charges function. + """ + + def test_read_pq_format(self, tmpdir): # pylint: disable=unused-argument + """ + For the PQ format all charge entries are read. + """ + _write_file( + "charges.dat", + ( + "3\n" + "# comment\n" + "O -0.82\n" + "H 0.41\n" + "H 0.41\n" + ), + ) + + charges = read_static_charges("charges.dat") + + assert np.allclose(charges, [-0.82, 0.41, 0.41], atol=1e-14) + + def test_read_qmcfc_format_strips_dummy_atom(self, tmpdir): # pylint: disable=unused-argument + """ + For the QMCFC format the leading dummy 'X' entry is stripped. + """ + _write_file( + "charges.dat", + ( + "4\n" + "# comment\n" + "X 0.0\n" + "O -0.82\n" + "H 0.41\n" + "H 0.41\n" + ), + ) + + charges = read_static_charges("charges.dat", md_format="qmcfc") + + assert np.allclose(charges, [-0.82, 0.41, 0.41], atol=1e-14) + + def test_qmcfc_format_without_dummy_atom(self, tmpdir): # pylint: disable=unused-argument + """ + A QMCFC charge file without a leading dummy 'X' entry raises a + VACFError. + """ + _write_file( + "charges.dat", + ( + "2\n" + "# comment\n" + "O -0.82\n" + "H 0.41\n" + ), + ) + + with pytest.raises(VACFError, match="dummy 'X' atom"): + read_static_charges("charges.dat", md_format="qmcfc") + + def test_qmcfc_format_zero_atoms(self, tmpdir): # pylint: disable=unused-argument + """ + A QMCFC charge file declaring zero atoms raises a VACFError + instead of a raw IndexError (it cannot contain the dummy 'X' + atom). + """ + _write_file( + "charges.dat", + ( + "0\n" + "# comment\n" + ), + ) + + with pytest.raises(VACFError, match="dummy 'X' atom"): + read_static_charges("charges.dat", md_format="qmcfc") + + def test_invalid_header(self, tmpdir): # pylint: disable=unused-argument + """ + An unparsable header raises a VACFError. + """ + _write_file("charges.dat", "not_a_number\n# comment\n") + + with pytest.raises(VACFError, match="number of atoms"): + read_static_charges("charges.dat") + + def test_too_few_charge_lines(self, tmpdir): # pylint: disable=unused-argument + """ + Fewer charge lines than announced in the header raise a + VACFError. + """ + _write_file( + "charges.dat", + ( + "3\n" + "# comment\n" + "O -0.82\n" + "H 0.41\n" + ), + ) + + with pytest.raises(VACFError, match="provides only"): + read_static_charges("charges.dat") + + def test_invalid_charge_line(self, tmpdir): # pylint: disable=unused-argument + """ + An unparsable charge line raises a VACFError. + """ + _write_file( + "charges.dat", + ( + "2\n" + "# comment\n" + "O -0.82\n" + "H not_a_number\n" + ), + ) + + with pytest.raises(VACFError, match="Could not parse"): + read_static_charges("charges.dat") + + + +class TestVACFApi: + + """ + Tests for the input file based vacf api function. + """ + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_existing_spectrum_file_fails_before_run(self, test_with_data_dir): # pylint: disable=unused-argument + """ + A pre-existing spectrum output file raises a + FileWritingModeError before the VACF analysis is run, so that + no computation is lost: the VACF output file must not have + been written yet. + """ + _write_file( + "vacf.in", + ( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = vacf_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "spectrum_file = spectrum_out.dat\n" + "windowed_out_file = windowed_out.dat\n" + "window_function = hann\n" + ), + ) + + _write_file("spectrum_out.dat", "already there\n") + + with pytest.raises(FileWritingModeError): + vacf("vacf.in", md_format="qmcfc") + + assert not os.path.exists("vacf_out.dat") + assert not os.path.exists("windowed_out.dat") + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_existing_windowed_out_file_fails_before_run(self, test_with_data_dir): # pylint: disable=unused-argument + """ + A pre-existing windowed output file raises a + FileWritingModeError before the VACF analysis is run. + """ + _write_file( + "vacf.in", + ( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = vacf_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "spectrum_file = spectrum_out.dat\n" + "windowed_out_file = windowed_out.dat\n" + "window_function = hann\n" + ), + ) + + _write_file("windowed_out.dat", "already there\n") + + with pytest.raises(FileWritingModeError): + vacf("vacf.in", md_format="qmcfc") + + assert not os.path.exists("vacf_out.dat") + assert not os.path.exists("spectrum_out.dat") diff --git a/tests/analysis/vacf/test_exceptions.py b/tests/analysis/vacf/test_exceptions.py new file mode 100644 index 00000000..434dad01 --- /dev/null +++ b/tests/analysis/vacf/test_exceptions.py @@ -0,0 +1,37 @@ +""" +Tests for the exceptions and warnings of the VACF analysis. +""" + +from PQAnalysis.analysis.vacf.exceptions import VACFError, VACFWarning +from PQAnalysis.exceptions import PQException, PQWarning + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestVACFExceptions: + + """ + Tests for the VACF exception and warning classes. + """ + + def test_vacf_error_message(self): + """ + The VACFError stores the message and is a PQException. + """ + error = VACFError("something went wrong") + + assert error.message == "something went wrong" + assert str(error) == "something went wrong" + assert isinstance(error, PQException) + + def test_vacf_warning_message(self): + """ + The VACFWarning stores the message and is a PQWarning. + """ + warning = VACFWarning("watch out") + + assert warning.message == "watch out" + assert str(warning) == "watch out" + assert isinstance(warning, PQWarning) + assert isinstance(warning, Warning) diff --git a/tests/analysis/vacf/test_parity.py b/tests/analysis/vacf/test_parity.py new file mode 100644 index 00000000..27f98e6f --- /dev/null +++ b/tests/analysis/vacf/test_parity.py @@ -0,0 +1,285 @@ +""" +Parity tests of the VACF analysis against the legacy FreqCalc, +Fluxfreqcalc and ft.f tools. + +The reference data in tests/data/vacf was generated with the original +(recompiled) legacy binaries from a synthetic 8-atom QMCFC velocity +trajectory (superposed cosines plus noise, split over two files) with +window = 100, gap = 5, time_step = 0.002 ps and target_atoms = 1-8, +and spectra with ftsize = 256 for all window functions with +windowparam = 20.0, winon = 0.02 and winoff = 0.15. + +The tolerances account for the float32 parsing of PQAnalysis (the +legacy tools parse in double precision) and for the printing precision +of the reference files. +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.vacf import ( + VACF, + read_static_charges, + vacf, + vacf_spectrum, +) +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import TrajectoryFormat + +from .. import pytestmark # pylint: disable=unused-import + +VEL_FILES = ["traj_1.vel", "traj_2.vel"] +CHARGE_FILES = ["traj_1.chrg", "traj_2.chrg"] + +WINDOW_SIZE = 100 +GAP = 5 +TIME_STEP = 0.002 +FTSIZE = 256 + +SPECTRUM_KWARGS = { + "none": {}, + "exponential": { + "window_function": "exponential", + "window_param": 20.0, + "window_start": 0.02, + "window_stop": 0.15, + }, + "hann": { + "window_function": "hann", + "window_start": 0.02, + "window_stop": 0.15, + }, + "blackman": { + "window_function": "blackman", + "window_start": 0.02, + "window_stop": 0.15, + }, +} + + + +def _run_vacf(**kwargs): + """ + Runs a VACF analysis on the reference velocity trajectory. + """ + reader = TrajectoryReader(VEL_FILES, md_format="qmcfc") + + analysis = VACF( + traj=reader, + window_size=WINDOW_SIZE, + time_step=TIME_STEP, + gap=GAP, + **kwargs, + ) + + return analysis.run() + + + +class TestVACFLegacyParity: + + """ + Parity tests against the legacy reference data. + """ + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_freqcalc_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The VACF matches the legacy FreqCalc reference. + """ + time, correlation = _run_vacf() + + reference = np.loadtxt("vacf_ref.dat") + + assert np.allclose(time, reference[:, 0], atol=1e-6) + assert np.allclose( + correlation, + reference[:, 1], + rtol=1e-5, + atol=1e-8, + ) + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_fluxfreqcalc_static_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The charge-flux VACF with static charges matches the legacy + Fluxfreqcalc reference. + """ + charges = read_static_charges("charges.dat", md_format="qmcfc") + _, correlation = _run_vacf(charges=charges) + + reference = np.loadtxt("flux_static_ref.dat") + + assert np.allclose( + correlation, + reference[:, 1], + rtol=1e-5, + atol=1e-8, + ) + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_fluxfreqcalc_charge_trajectory_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The charge-flux VACF with a charge trajectory matches the + legacy Fluxfreqcalc reference. + """ + charge_reader = TrajectoryReader( + CHARGE_FILES, + traj_format=TrajectoryFormat.CHARGE, + md_format="qmcfc", + ) + _, correlation = _run_vacf(charge_traj=charge_reader) + + reference = np.loadtxt("flux_traj_ref.dat") + + assert np.allclose( + correlation, + reference[:, 1], + rtol=1e-5, + atol=1e-8, + ) + + @pytest.mark.parametrize( + "window_function", + ["none", "exponential", "hann", "blackman"], + ) + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_ft_parity(self, test_with_data_dir, window_function): # pylint: disable=unused-argument + """ + The spectrum of the reference VACF matches the legacy ft.f + reference for all window functions. + """ + reference_vacf = np.loadtxt("vacf_ref.dat") + + wavenumbers, amplitudes, windowed = vacf_spectrum( + reference_vacf[:, 0], + reference_vacf[:, 1], + ftsize=FTSIZE, + **SPECTRUM_KWARGS[window_function], + ) + + reference = np.loadtxt(f"spectrum_{window_function}_ref.dat") + + assert np.allclose(wavenumbers, reference[:, 0], atol=1e-6) + assert np.allclose( + amplitudes, + reference[:, 1], + rtol=1e-5, + atol=1e-9, + ) + + if window_function != "none": + windowed_reference = np.loadtxt( + f"windowed_{window_function}_ref.dat" + ) + + assert np.allclose( + windowed, + windowed_reference[:, 1], + rtol=1e-5, + atol=1e-9, + ) + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_api_end_to_end_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The input file based api reproduces the legacy VACF, spectrum + and windowed output files. + """ + with open("vacf.in", "w", encoding="utf-8") as file: + file.write( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = vacf_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "spectrum_file = spectrum_out.dat\n" + "ftsize = 256\n" + "window_function = hann\n" + "window_start = 0.02\n" + "window_stop = 0.15\n" + "windowed_out_file = windowed_out.dat\n" + "log_file = vacf.log\n" + ) + + vacf("vacf.in", md_format="qmcfc") + + result = np.loadtxt("vacf_out.dat") + reference = np.loadtxt("vacf_ref.dat") + + assert np.allclose(result, reference, rtol=1e-5, atol=1e-7) + + spectrum_result = np.loadtxt("spectrum_out.dat") + spectrum_reference = np.loadtxt("spectrum_hann_ref.dat") + + # the spectrum of the api is calculated from the full + # precision VACF, while the legacy ft.f tool reads the VACF + # rounded to 8 decimals - hence the absolute tolerance + assert np.allclose( + spectrum_result, + spectrum_reference, + rtol=1e-4, + atol=1e-6, + ) + + windowed_result = np.loadtxt("windowed_out.dat") + windowed_reference = np.loadtxt("windowed_hann_ref.dat") + + assert np.allclose( + windowed_result, + windowed_reference, + rtol=1e-4, + atol=1e-7, + ) + + @pytest.mark.parametrize("example_dir", ["vacf"], indirect=False) + def test_api_flux_end_to_end_parity(self, test_with_data_dir): # pylint: disable=unused-argument + """ + The input file based api reproduces the legacy charge-flux + references for both charge sources. + """ + with open("flux_static.in", "w", encoding="utf-8") as file: + file.write( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = flux_static_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "charge_file = charges.dat\n" + ) + + with open("flux_traj.in", "w", encoding="utf-8") as file: + file.write( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = flux_traj_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "charge_files = [traj_1.chrg, traj_2.chrg]\n" + ) + + vacf("flux_static.in", md_format="qmcfc") + vacf("flux_traj.in", md_format="qmcfc") + + static_result = np.loadtxt("flux_static_out.dat") + static_reference = np.loadtxt("flux_static_ref.dat") + + assert np.allclose( + static_result, + static_reference, + rtol=1e-5, + atol=1e-7, + ) + + traj_result = np.loadtxt("flux_traj_out.dat") + traj_reference = np.loadtxt("flux_traj_ref.dat") + + assert np.allclose( + traj_result, + traj_reference, + rtol=1e-5, + atol=1e-7, + ) diff --git a/tests/analysis/vacf/test_raw_charge_reader.py b/tests/analysis/vacf/test_raw_charge_reader.py new file mode 100644 index 00000000..794acde8 --- /dev/null +++ b/tests/analysis/vacf/test_raw_charge_reader.py @@ -0,0 +1,89 @@ +""" +Tests for the RawChargeTrajectoryReader fast-path reader and the +ModuleNotFoundError fallback import of its scalar line parser. +""" + +import importlib +import sys + +from PQAnalysis.analysis.vacf._raw_charge_reader import ( + RawChargeTrajectoryReader, +) + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + +#: The compiled Cython kernel that provides ``parse_charge_lines``. The +#: fallback import is only taken when this module cannot be imported. +_KERNEL = "PQAnalysis.analysis.vacf._vacf_kernel" + +#: The module object of the reader under test, used for the in-process +#: reload that exercises the ModuleNotFoundError fallback import. +_rcr_module = sys.modules[RawChargeTrajectoryReader.__module__] + + + +class _KernelBlocker: + + """ + A meta_path finder that hides the compiled vacf kernel so that the + ``except ModuleNotFoundError`` fallback import is taken on reload. + """ + + def find_spec(self, name, path=None, target=None): # pylint: disable=unused-argument + """Raise ModuleNotFoundError for the kernel, delegate otherwise.""" + if name == _KERNEL: + raise ModuleNotFoundError(name) + + + +class TestRawChargeTrajectoryReader: + + """ + Tests for the RawChargeTrajectoryReader construction. + """ + + def test_single_filename_is_wrapped_into_a_list(self, tmp_path): + """ + A single filename string is wrapped into the ``filenames`` list. + """ + charge_file = tmp_path / "single.chrg" + charge_file.write_text("1\ncomment\nO 0.5\n", encoding="utf-8") + + reader = RawChargeTrajectoryReader(str(charge_file)) + + assert reader.multiple_files is False + assert reader.filenames == [str(charge_file)] + + def test_module_not_found_fallback_import(self): + """ + When the compiled kernel is absent, ``parse_charge_lines`` is + imported from the pure-python ``_vacf_kernel_py`` fallback. + + The reader module is reloaded in-process with the compiled + kernel hidden by a meta_path blocker and restored to the + compiled version afterwards, so that the test does not affect + any other test regardless of the execution order. + """ + assert _rcr_module.parse_charge_lines.__module__.endswith( + "_vacf_kernel" + ) + + sys.modules.pop(_KERNEL, None) + blocker = _KernelBlocker() + sys.meta_path.insert(0, blocker) + + try: + importlib.reload(_rcr_module) + assert _rcr_module.parse_charge_lines.__module__.endswith( + "_vacf_kernel_py" + ) + finally: + sys.meta_path.remove(blocker) + sys.modules.pop(_KERNEL, None) + importlib.reload(_rcr_module) + + assert _rcr_module.parse_charge_lines.__module__.endswith( + "_vacf_kernel" + ) diff --git a/tests/analysis/vacf/test_spectrum.py b/tests/analysis/vacf/test_spectrum.py new file mode 100644 index 00000000..7260d643 --- /dev/null +++ b/tests/analysis/vacf/test_spectrum.py @@ -0,0 +1,337 @@ +""" +Tests for the spectrum functions of the VACF analysis. +""" + +import numpy as np +import pytest + +from beartype.roar import BeartypeCallHintParamViolation + +from PQAnalysis.analysis.vacf.exceptions import VACFError +from PQAnalysis.analysis.vacf.spectrum import ( + BLACKMAN_A0, + BLACKMAN_A1, + BLACKMAN_A2, + SPEED_OF_LIGHT_CM_S, + WINDOW_FUNCTIONS, + _legacy_nint, + apodization_window, + vacf_spectrum, +) + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + + + +def _direct_cosine_spectrum(correlation, ftsize): + """ + Literal (slow) transcription of the legacy ft.f cosine sum. + """ + padded = np.zeros(ftsize) + n_points = min(len(correlation), ftsize) + padded[:n_points] = correlation[:n_points] + + # legacy even extension cd(1..2*ftsize-1) centered at ftsize + cd = np.zeros(2 * ftsize - 1) + cd[ftsize - 1] = padded[0] + for i in range(2, ftsize + 1): + cd[ftsize - (i - 1) - 1] = padded[i - 1] + cd[ftsize + (i - 1) - 1] = padded[i - 1] + + fu = 2.0 * np.pi / (2 * ftsize - 1) + + amplitudes = np.zeros(ftsize) + for spectral_index in range(1, ftsize + 1): + total = 0.0 + for k in range(1, 2 * ftsize): + total += cd[k - 1] * np.cos( + fu * spectral_index * (k - ftsize) + ) + amplitudes[spectral_index - 1] = abs(0.5 * total) + + return amplitudes + + + +class TestLegacyNint: + + """ + Tests for the legacy FORTRAN nint emulation. + """ + + def test_rounds_half_away_from_zero(self): + """ + Half-way cases are rounded away from zero. + """ + assert _legacy_nint(2.5) == 3 + assert _legacy_nint(-2.5) == -3 + assert _legacy_nint(0.5) == 1 + assert _legacy_nint(2.4) == 2 + assert _legacy_nint(-2.4) == -2 + assert _legacy_nint(3.0) == 3 + + + +class TestApodizationWindow: + + """ + Tests for the legacy apodization windows. + """ + + def test_supported_window_functions(self): + """ + The supported window functions are none, exponential, hann + and blackman. + """ + assert WINDOW_FUNCTIONS == ("none", "exponential", "hann", "blackman") + + def test_none_window(self): + """ + The none window consists of ones only. + """ + factors = apodization_window(10, 0.1, window_function="none") + + assert np.all(factors == 1.0) + + def test_exponential_window_shape(self): + """ + The exponential window is one before the start index, decays + with exp(-a dt (i - 1 - winsind)) inside the window range and + is zero after the end index. + """ + factors = apodization_window( + 20, + 0.1, + window_function="exponential", + window_param=2.0, + window_start=0.5, + window_stop=1.5, + ) + + # winsind = nint(0.5 / 0.1) = 5, wineind = nint(1.5 / 0.1) = 15 + index = np.arange(1, 21) + expected = np.exp(-2.0 * 0.1 * (index - 1 - 5)) + expected[index <= 5] = 1.0 + expected[index > 15] = 0.0 + + assert np.allclose(factors, expected, atol=1e-14) + + def test_hann_window_shape(self): + """ + The legacy hann window is mirrored: it rises from the end of + the window range and reaches zero exactly at the end index. + """ + factors = apodization_window( + 20, + 0.1, + window_function="hann", + window_start=0.5, + window_stop=1.5, + ) + + index = np.arange(1, 21) + expected = (1.0 - np.cos(np.pi * (15 - index) / 10)) / 2.0 + expected[index <= 5] = 1.0 + expected[index > 15] = 0.0 + + assert np.allclose(factors, expected, atol=1e-14) + assert factors[14] == 0.0 # i = wineind = 15 + + def test_blackman_window_shape(self): + """ + The legacy blackman window uses the (non-standard) end index + as denominator and single precision leading coefficients. + """ + factors = apodization_window( + 20, + 0.1, + window_function="blackman", + window_start=0.5, + window_stop=1.5, + ) + + index = np.arange(1, 21) + phase = np.pi * (index - 1 - 5) / 15 + expected = ( + BLACKMAN_A0 + BLACKMAN_A1 * np.cos(phase) + + BLACKMAN_A2 * np.cos(2.0 * phase) + ) + expected[index <= 5] = 1.0 + expected[index > 15] = 0.0 + + assert BLACKMAN_A0 == float(np.float32(0.42)) + assert BLACKMAN_A2 == float(np.float32(0.08)) + assert np.allclose(factors, expected, atol=1e-14) + + def test_unknown_window_function(self): + """ + An unknown window function raises a VACFError. + """ + with pytest.raises(VACFError, match="Unknown window function"): + apodization_window(10, 0.1, window_function="hamming") + + def test_empty_window_range(self): + """ + An empty or inverted window range raises a VACFError. + """ + with pytest.raises(VACFError, match="window range is empty"): + apodization_window( + 10, + 0.1, + window_function="hann", + window_start=1.5, + window_stop=0.5, + ) + + + +class TestVACFSpectrum: + + """ + Tests for the legacy cosine-transform spectrum. + """ + + def test_matches_direct_cosine_sum(self): + """ + The rfft based implementation is numerically identical to the + literal legacy cosine sum. + """ + rng = np.random.default_rng(42) + correlation = rng.standard_normal(40) + time = np.arange(40) * 0.1 + + _, amplitudes, _ = vacf_spectrum(time, correlation, ftsize=64) + + reference = _direct_cosine_spectrum(correlation, 64) + + assert np.allclose(amplitudes, reference, atol=1e-9) + + def test_matches_direct_cosine_sum_with_truncation(self): + """ + A correlation function longer than ftsize is truncated like in + the legacy tool. + """ + rng = np.random.default_rng(43) + correlation = rng.standard_normal(100) + time = np.arange(100) * 0.05 + + _, amplitudes, _ = vacf_spectrum(time, correlation, ftsize=32) + + reference = _direct_cosine_spectrum(correlation, 32) + + assert np.allclose(amplitudes, reference, atol=1e-9) + + def test_frequency_axis_replicates_legacy_calibration(self): + """ + The frequency axis replicates the historical ft.f calibration + with a period of 2 * (ftsize - 1) points although the even + extension has 2 * ftsize - 1 points. + """ + time = np.arange(10) * 0.002 + correlation = np.ones(10) + + wavenumbers, amplitudes, _ = vacf_spectrum( + time, + correlation, + ftsize=16, + ) + + spacing = 1.0 / (0.002e-12 * 2.0 * 15 * SPEED_OF_LIGHT_CM_S) + + assert len(wavenumbers) == 16 + assert np.allclose( + wavenumbers, + np.arange(1, 17) * spacing, + rtol=1e-12, + ) + # the last point duplicates its predecessor (legacy quirk of + # evaluating the cosine sum at l = ftsize) + assert amplitudes[-1] == amplitudes[-2] + + def test_single_cosine_peak_position(self): + """ + The spectrum of a pure cosine peaks at the corresponding + wavenumber (within one frequency spacing). + """ + time_step = 0.002 + frequency = 25.0 # ps^-1 + time = np.arange(101) * time_step + correlation = np.cos(2.0 * np.pi * frequency * time) + + wavenumbers, amplitudes, _ = vacf_spectrum( + time, + correlation, + ftsize=256, + ) + + expected = frequency * 1.0e12 / SPEED_OF_LIGHT_CM_S + spacing = wavenumbers[0] + + assert abs(wavenumbers[np.argmax(amplitudes)] - expected) <= spacing + + def test_windowed_correlation_output(self): + """ + The windowed correlation function equals the input multiplied + with the apodization window. + """ + rng = np.random.default_rng(44) + correlation = rng.standard_normal(30) + time = np.arange(30) * 0.1 + + _, _, windowed = vacf_spectrum( + time, + correlation, + ftsize=32, + window_function="hann", + window_start=0.5, + window_stop=2.0, + ) + + factors = apodization_window( + 30, + 0.1, + window_function="hann", + window_start=0.5, + window_stop=2.0, + ) + + assert np.allclose(windowed, correlation * factors, atol=1e-14) + + def test_length_mismatch(self): + """ + A length mismatch between the time axis and the correlation + function raises a VACFError. + """ + with pytest.raises(VACFError, match="same length"): + vacf_spectrum(np.arange(5) * 0.1, np.ones(4)) + + def test_too_few_points(self): + """ + Less than two points raise a VACFError. + """ + with pytest.raises(VACFError, match="At least two"): + vacf_spectrum(np.zeros(1), np.ones(1)) + + def test_too_small_ftsize(self): + """ + An ftsize smaller than two raises a VACFError. + """ + with pytest.raises(VACFError, match="ftsize"): + vacf_spectrum(np.arange(5) * 0.1, np.ones(5), ftsize=1) + + def test_non_increasing_time_axis(self): + """ + A non-increasing time axis raises a VACFError. + """ + with pytest.raises(VACFError, match="strictly increasing"): + vacf_spectrum(np.zeros(5), np.ones(5)) + + def test_non_one_dimensional_input(self): + """ + Multi-dimensional input raises a VACFError (or a beartype + violation when running with beartype in DEBUG mode). + """ + with pytest.raises((VACFError, BeartypeCallHintParamViolation)): + vacf_spectrum(np.zeros((5, 2)), np.ones((5, 2))) diff --git a/tests/analysis/vacf/test_vacf.py b/tests/analysis/vacf/test_vacf.py new file mode 100644 index 00000000..5f45a766 --- /dev/null +++ b/tests/analysis/vacf/test_vacf.py @@ -0,0 +1,727 @@ +""" +Tests for the VACF class. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis import config +from PQAnalysis.analysis.vacf import VACF +from PQAnalysis.analysis.vacf.exceptions import VACFError +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.traj import Trajectory + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + +# pylint: disable=protected-access + +vacf_module = sys.modules[VACF.__module__] + + + +def _make_velocity_trajectory(velocities, names=None): + """ + Builds a trajectory from an (n_frames, n_atoms, 3) velocity array. + """ + velocities = np.asarray(velocities, dtype=float) + n_atoms = velocities.shape[1] + + if names is None: + names = ["O"] * n_atoms + + atoms = [Atom(name) for name in names] + + systems = [ + AtomicSystem(atoms=atoms, vel=frame_velocities) + for frame_velocities in velocities + ] + + return Trajectory(systems) + + + +def _make_charge_trajectory(charges, names=None): + """ + Builds a charge trajectory from an (n_frames, n_atoms) charge array. + """ + charges = np.asarray(charges, dtype=float) + n_atoms = charges.shape[1] + + if names is None: + names = ["O"] * n_atoms + + atoms = [Atom(name) for name in names] + + systems = [ + AtomicSystem(atoms=atoms, charges=frame_charges) + for frame_charges in charges + ] + + return Trajectory(systems) + + + +def _reference_vacf(velocities, window_size, gap): + """ + Brute-force emulation of the legacy FreqCalc estimator. + """ + velocities = np.asarray(velocities, dtype=float) + n_frames = velocities.shape[0] + + stop_frame = (n_frames - window_size) // gap * gap + + corr = np.zeros(window_size + 1) + n_origins = 0 + + for origin in range(gap, stop_frame + 1, gap): + origin_velocities = velocities[origin - 1] + norm = np.sum(origin_velocities * origin_velocities) + n_origins += 1 + + for lag in range(window_size + 1): + corr[lag] += np.sum( + velocities[origin - 1 + lag] * origin_velocities + ) / norm + + return corr / n_origins + + + +def _reference_fft_vacf(velocities, window_size): + """ + Brute-force emulation of the Wiener-Khinchin (fft) estimator. + """ + velocities = np.asarray(velocities, dtype=float) + n_frames = velocities.shape[0] + + raw = np.zeros(window_size + 1) + + for lag in range(window_size + 1): + scalar = 0.0 + for frame in range(n_frames - lag): + scalar += np.sum( + velocities[frame] * velocities[frame + lag] + ) + raw[lag] = scalar / (n_frames - lag) + + return raw / raw[0] + + + +#: Velocities of the n_frames == window_size boundary-case parity +#: check (20 frames, 2 atoms). The corresponding QMCFC velocity file +#: (values printed with 7 decimals) was run through the recompiled +#: legacy FreqCalc binary with window = 20, gap = 1, time_step = 0.1 +#: and target_atoms = 1-2. +BOUNDARY_VELOCITIES = np.array( + [ + [[-0.7931225, 0.2405713, -1.8963263], + [1.3957717, 0.6382947, -0.2920475]], + [[-0.3119493, 0.3038354, -0.2676603], + [-0.2259089, 0.7200678, 0.5147052]], + [[-0.0641279, -0.0854766, 0.1609163], + [-0.6140184, -0.4037503, 0.5482602]], + [[-0.1304828, -1.3744262, -0.4772787], + [0.6566216, -0.2322828, -0.1487328]], + [[0.6418366, 1.8246103, -0.7131887], + [1.3482068, -1.2300128, 0.1749776]], + [[-1.1695295, 1.3514582, 0.8339230], + [1.1377168, -0.8855332, 0.6845550]], + [[-0.5190133, -0.4573853, 0.5065371], + [0.8767182, 0.2044202, -0.6279871]], + [[-0.8258165, 1.4443170, 0.5939459], + [0.7197279, 2.1834881, -0.8158629]], + [[2.5594578, 3.1509081, 1.6184131], + [0.8271065, -0.6638220, 0.9944856]], + [[-0.4426921, -0.0216508, -0.2904332], + [0.2838300, 1.2880777, -0.5555841]], + [[-0.9854038, -1.0029566, -0.9682773], + [-1.4311030, -0.9129341, 1.2932656]], + [[-0.5933120, 0.2571077, -1.2168940], + [0.1696506, -1.7407814, -0.6987559]], + [[2.2545389, -0.5829697, 1.1199764], + [0.4550541, -0.1529858, -0.6521068]], + [[1.2869094, -0.1773835, 1.5274245], + [-0.7190790, 0.0573390, 0.4654991]], + [[0.3731602, -1.2338015, -0.6640627], + [-0.1959802, -0.8536993, 0.6773251]], + [[0.5880192, -1.9570845, -1.8052541], + [-1.2815633, 0.1172595, 2.0331725]], + [[-0.3823565, 0.2506505, -1.0631117], + [-1.0468362, -1.9572278, -0.0283442]], + [[0.9472167, -0.3567143, 1.3964531], + [0.1978549, -0.0364125, 0.5172539]], + [[0.4873776, 1.1478064, -0.8019543], + [-2.2880492, 0.1147467, -0.6116752]], + [[-0.0271772, 1.6643000, -1.1028418], + [0.7647973, 0.9458675, 0.4607362]], + ] +) + +#: The VACF of BOUNDARY_VELOCITIES as printed (8 decimals) by the +#: recompiled legacy FreqCalc binary: a single origin is spawned at +#: frame 1 (stop_frame reset 0 -> 1) and the final lag bin stays zero. +BOUNDARY_LEGACY_VACF = np.array( + [ + 1.00000000, 0.12225998, -0.23047930, + 0.22153690, 0.34621604, 0.07349218, + 0.13067321, 0.37369523, -0.58012556, + 0.33868165, -0.08647947, 0.32269875, + -0.49439806, -0.75296970, -0.05201860, + 0.02654049, -0.04797735, -0.50318541, + -0.22775122, 0.60232549, 0.00000000, + ] +) + + + +class TestVACF: + + """ + Tests for the VACF class. + """ + + def test_window_size_default(self): + """ + Without an explicit window_size the class-level default of + 1000 frames is used. + """ + traj = _make_velocity_trajectory(np.ones((1000, 1, 3))) + + vacf = VACF(traj, time_step=0.1) + + assert vacf.window_size == 1000 + assert vacf.window_size == VACF._window_size_default + + def test_progress_bar_binds_config_at_call_time(self, monkeypatch): + """ + config.with_progress_bar is set by the CLI after the module + import, so it must be read at call time, not bound by value + at import time. + """ + captured = {} + + def fake_tqdm(iterable, **kwargs): + captured.update(kwargs) + return iterable + + monkeypatch.setattr(vacf_module, "tqdm", fake_tqdm) + + rng = np.random.default_rng(42) + velocities = rng.standard_normal((6, 2, 3)) + + monkeypatch.setattr(config, "with_progress_bar", False) + VACF( + _make_velocity_trajectory(velocities), + window_size=2, + time_step=0.1, + ).run() + assert captured["disable"] is True + + captured.clear() + + monkeypatch.setattr(config, "with_progress_bar", True) + VACF( + _make_velocity_trajectory(velocities), + window_size=2, + time_step=0.1, + ).run() + assert captured["disable"] is False + + def test_c0_is_one(self): + """ + The normalized VACF starts at exactly one. + """ + rng = np.random.default_rng(42) + traj = _make_velocity_trajectory( + rng.standard_normal((50, 3, 3)) + ) + + vacf = VACF(traj, window_size=10, time_step=0.5, gap=2) + time, correlation = vacf.run() + + assert correlation[0] == 1.0 + assert np.allclose(time, np.arange(11) * 0.5, rtol=1e-14) + assert len(correlation) == 11 + + def test_matches_brute_force_reference(self): + """ + The vectorized sliding-origin estimator matches a brute-force + emulation of the legacy FreqCalc algorithm, including the + drain phase and the origin counting. + """ + rng = np.random.default_rng(4711) + velocities = rng.standard_normal((43, 4, 3)) + traj = _make_velocity_trajectory(velocities) + + vacf = VACF(traj, window_size=12, time_step=0.1, gap=3) + _, correlation = vacf.run() + + reference = _reference_vacf(velocities, window_size=12, gap=3) + + assert vacf.n_origins == (43 - 12) // 3 + assert np.allclose(correlation, reference, atol=1e-12) + + def test_matches_brute_force_reference_gap_one(self): + """ + The estimator matches the brute-force reference for gap 1. + """ + rng = np.random.default_rng(1234) + velocities = rng.standard_normal((30, 2, 3)) + traj = _make_velocity_trajectory(velocities) + + vacf = VACF(traj, window_size=8, time_step=0.1) + _, correlation = vacf.run() + + reference = _reference_vacf(velocities, window_size=8, gap=1) + + assert np.allclose(correlation, reference, atol=1e-12) + + def test_window_equals_n_frames_legacy_parity(self): + """ + The boundary case n_frames == window_size with gap == 1 spawns + a single origin at frame 1 (legacy FreqCalc stop_frame reset) + and matches the recompiled legacy binary; only the final lag + bin stays zero. + """ + traj = _make_velocity_trajectory( + BOUNDARY_VELOCITIES, + names=["O", "H"], + ) + + vacf = VACF(traj, window_size=20, time_step=0.1, gap=1) + _, correlation = vacf.run() + + assert vacf.stop_frame == 1 + assert vacf.n_origins == 1 + assert correlation[0] == 1.0 + assert correlation[-1] == 0.0 + # tolerance: the legacy binary prints with 8 decimals + assert np.allclose( + correlation, + BOUNDARY_LEGACY_VACF, + atol=5e-8, + ) + + def test_window_equals_n_frames_gap_two_rejected(self, caplog): + """ + The boundary case n_frames == window_size is only valid for + gap == 1; for larger gaps no origin can spawn (the legacy tool + would divide by zero) and a VACFError is raised. + """ + traj = _make_velocity_trajectory(np.ones((20, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The trajectory contains only 20 frame(s), but at " + "least window_size + gap = 22 frames are needed to " + "place a single time origin (or exactly window_size " + "frames for the direct method with gap == 1)." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=20, + time_step=0.1, + gap=2, + ) + + def test_window_equals_n_frames_fft_rejected(self, caplog): + """ + The fft estimator needs at least one origin for every lag and + therefore still rejects n_frames == window_size with gap == 1. + """ + traj = _make_velocity_trajectory(np.ones((20, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The trajectory contains only 20 frame(s), but at " + "least window_size + gap = 21 frames are needed to " + "place a single time origin (or exactly window_size " + "frames for the direct method with gap == 1)." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=20, + time_step=0.1, + method="fft", + ) + + @pytest.mark.parametrize("method", ["direct", "fft"]) + def test_single_cosine_analytic(self, method): + """ + For velocities v(t) = cos(2 pi nu t + phi) with evenly + distributed phases the VACF is the analytic cosine + cos(2 pi nu lag dt) up to floating point noise. + + This is an implementation-independent physical check for both + estimators. (The direct estimator with gap = 1 and the fft + estimator do not coincide on general data - they use different + origin sets and normalizations - so the analytic case is the + common ground truth.) + """ + n_atoms = 8 + n_frames = 200 + time_step = 0.002 + frequency = 25.0 # ps^-1 + + time = np.arange(n_frames) * time_step + phases = ( + 2.0 * np.pi * np.arange(3 * n_atoms) / (3 * n_atoms) + ).reshape(n_atoms, 3) + + velocities = np.cos( + 2.0 * np.pi * frequency * time[:, None, None] + phases[None] + ) + + traj = _make_velocity_trajectory(velocities) + vacf = VACF( + traj, + window_size=100, + time_step=time_step, + gap=5, + method=method, + ) + lag_time, correlation = vacf.run() + + analytic = np.cos(2.0 * np.pi * frequency * lag_time) + + assert np.allclose(correlation, analytic, atol=1e-10) + + def test_fft_matches_brute_force_reference(self): + """ + The fft method matches a brute-force emulation of the + denser-origin Wiener-Khinchin estimator. + """ + rng = np.random.default_rng(7) + velocities = rng.standard_normal((32, 3, 3)) + traj = _make_velocity_trajectory(velocities) + + vacf = VACF(traj, window_size=10, time_step=0.1, method="fft") + _, correlation = vacf.run() + + reference = _reference_fft_vacf(velocities, window_size=10) + + assert correlation[0] == 1.0 + assert vacf.n_origins == 32 + assert np.allclose(correlation, reference, atol=1e-12) + + def test_static_charges_weighting(self): + """ + The charge-flux mode with static charges is identical to the + plain VACF of the charge-scaled velocities. + """ + rng = np.random.default_rng(2024) + velocities = rng.standard_normal((25, 3, 3)) + charges = np.array([-0.8, 0.4, 0.4]) + + flux = VACF( + _make_velocity_trajectory(velocities), + window_size=6, + time_step=0.1, + gap=2, + charges=charges, + ) + _, flux_correlation = flux.run() + + scaled = VACF( + _make_velocity_trajectory(velocities * charges[None, :, None]), + window_size=6, + time_step=0.1, + gap=2, + ) + _, scaled_correlation = scaled.run() + + assert flux.flux + assert not scaled.flux + assert np.allclose(flux_correlation, scaled_correlation, atol=1e-14) + + def test_charge_trajectory_weighting(self): + """ + The charge-flux mode with a charge trajectory is identical to + the plain VACF of the frame-wise charge-scaled velocities. + """ + rng = np.random.default_rng(2025) + velocities = rng.standard_normal((25, 3, 3)) + charges = 0.5 + 0.1 * rng.standard_normal((25, 3)) + + flux = VACF( + _make_velocity_trajectory(velocities), + window_size=6, + time_step=0.1, + gap=2, + charge_traj=_make_charge_trajectory(charges), + ) + _, flux_correlation = flux.run() + + scaled = VACF( + _make_velocity_trajectory(velocities * charges[:, :, None]), + window_size=6, + time_step=0.1, + gap=2, + ) + _, scaled_correlation = scaled.run() + + assert flux.flux + assert np.allclose(flux_correlation, scaled_correlation, atol=1e-14) + + def test_target_selection(self): + """ + With a target selection only the selected atoms contribute. + """ + rng = np.random.default_rng(99) + velocities = rng.standard_normal((25, 4, 3)) + + selected = VACF( + _make_velocity_trajectory( + velocities, + names=["O", "H", "H", "O"], + ), + window_size=6, + time_step=0.1, + gap=2, + target_species="O", + ) + _, selected_correlation = selected.run() + + reference = _reference_vacf( + velocities[:, [0, 3]], + window_size=6, + gap=2, + ) + + assert np.allclose(selected_correlation, reference, atol=1e-12) + + def test_unknown_method(self, caplog): + """ + An unknown estimator method raises a VACFError. + """ + traj = _make_velocity_trajectory(np.ones((20, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "Unknown method 'foo'. Possible methods are: direct, fft." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.1, + method="foo", + ) + + def test_both_charge_sources(self, caplog): + """ + Static charges and a charge trajectory cannot be combined. + """ + traj = _make_velocity_trajectory(np.ones((20, 1, 3))) + charge_traj = _make_charge_trajectory(np.ones((20, 1))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "Only one charge source can be used for the charge-flux " + "mode: either static charges or a charge trajectory." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.1, + charges=np.ones(1), + charge_traj=charge_traj, + ) + + def test_window_size_not_multiple_of_gap(self, caplog): + """ + The window size has to be an integer multiple of the gap. + """ + traj = _make_velocity_trajectory(np.ones((30, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The window_size 10 must be an integer multiple of the " + "gap 3 for the sliding-origin machinery." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=10, + time_step=0.1, + gap=3, + ) + + def test_trajectory_too_short(self, caplog): + """ + The trajectory has to accommodate at least one time origin. + """ + traj = _make_velocity_trajectory(np.ones((10, 1, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The trajectory contains only 10 frame(s), but at least " + "window_size + gap = 12 frames are needed to place a " + "single time origin (or exactly window_size frames for " + "the direct method with gap == 1)." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=10, + time_step=0.1, + gap=2, + ) + + def test_empty_target_selection(self, caplog): + """ + A target selection that does not select any atoms raises a + VACFError instead of a misleading zero-norm error at run time. + """ + traj = _make_velocity_trajectory( + np.ones((20, 2, 3)), + names=["O", "H"], + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The target selection does not select any atoms." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.1, + target_species="C", + ) + + def test_empty_trajectory(self, caplog): + """ + An empty trajectory raises a VACFError. + """ + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test="Trajectory cannot be of length 0.", + exception=VACFError, + function=VACF, + traj=Trajectory(), + window_size=5, + time_step=0.1, + ) + + def test_wrong_number_of_static_charges(self, caplog): + """ + The number of static charges has to match the number of atoms. + """ + traj = _make_velocity_trajectory(np.ones((20, 3, 3))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The number of static charges 2 does not match the " + "number of atoms 3 of the system." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.1, + charges=np.ones(2), + ) + + def test_charge_trajectory_not_in_lockstep(self, caplog): + """ + The charge trajectory has to provide exactly one frame per + velocity frame. + """ + traj = _make_velocity_trajectory(np.ones((20, 1, 3))) + charge_traj = _make_charge_trajectory(np.ones((19, 1))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The charge trajectory contains 19 frame(s), but the " + "velocity trajectory contains 20 frame(s). Both " + "trajectories have to be in lockstep." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.1, + charge_traj=charge_traj, + ) + + def test_zero_norm_origin(self, caplog): + """ + A time origin with a vanishing aggregate squared velocity norm + raises a VACFError. + """ + traj = _make_velocity_trajectory(np.zeros((20, 1, 3))) + vacf = VACF(traj, window_size=5, time_step=0.1) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The aggregate squared velocity norm of the time origin " + "at frame 1 is zero. The normalized VACF is not defined." + ), + exception=VACFError, + function=vacf.run, + ) + + def test_missing_velocities(self, caplog): + """ + A trajectory without velocities raises a VACFError at run time. + """ + atoms = [Atom("O")] + systems = [ + AtomicSystem(atoms=atoms, pos=np.zeros((1, 3))) + for _ in range(20) + ] + vacf = VACF(Trajectory(systems), window_size=5, time_step=0.1) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "A frame of the velocity trajectory does not provide " + "velocities for all 1 atoms. Please provide a velocity " + "trajectory (e.g. .vel files)." + ), + exception=VACFError, + function=vacf.run, + ) diff --git a/tests/analysis/vacf/test_vacf_coverage.py b/tests/analysis/vacf/test_vacf_coverage.py new file mode 100644 index 00000000..591d738b --- /dev/null +++ b/tests/analysis/vacf/test_vacf_coverage.py @@ -0,0 +1,454 @@ +""" +Additional coverage tests for the VACF class and the input-file based +api that exercise the remaining rarely-taken branches: + +* the ``ModuleNotFoundError`` fallback import of the accumulation + kernels, +* the non-positive ``time_step`` guard, +* the non-raw ``TrajectoryReader`` dispatch for both the velocity and + the charge trajectory, +* the raw fast-path atom-count mismatch guard, +* the lockstep charge-stream exhaustion and shape guards, +* the fft zero-norm guard, and +* the ``window_param`` spectrum keyword forwarding of the api. +""" + +import importlib +import os +import shutil +import sys + +from pathlib import Path + +import numpy as np + +from PQAnalysis.analysis.vacf import VACF, vacf +from PQAnalysis.analysis.vacf.exceptions import VACFError +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io.traj_file.trajectory_writer import TrajectoryWriter +from PQAnalysis.traj import Trajectory, TrajectoryFormat + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + +# pylint: disable=protected-access + +#: The compiled Cython kernel of the accumulation functions. +_KERNEL = "PQAnalysis.analysis.vacf._vacf_kernel" + +#: The module object of the VACF class, used for the in-process reload +#: that exercises the ModuleNotFoundError fallback import. +_vacf_module = sys.modules[VACF.__module__] + + + +class _KernelBlocker: + + """ + A meta_path finder that hides the compiled vacf kernel so that the + ``except ModuleNotFoundError`` fallback import is taken on reload. + """ + + def find_spec(self, name, path=None, target=None): # pylint: disable=unused-argument + """Raise ModuleNotFoundError for the kernel, delegate otherwise.""" + if name == _KERNEL: + raise ModuleNotFoundError(name) + + + +def _make_velocity_systems(velocities, names=None): + """ + Builds a list of velocity AtomicSystems (with dummy positions). + """ + velocities = np.asarray(velocities, dtype=float) + n_atoms = velocities.shape[1] + + if names is None: + names = ["O"] * n_atoms + + atoms = [Atom(name) for name in names] + + return [ + AtomicSystem( + atoms=atoms, + pos=np.zeros((n_atoms, 3)), + vel=frame_velocities, + ) for frame_velocities in velocities + ] + + + +def _write_vel_file(filename, n_atoms, n_frames, value=1.0): + """ + Writes a legacy xyz-style velocity file with a constant per-frame + atom count. + """ + with open(filename, "w", encoding="utf-8") as file: + for _ in range(n_frames): + file.write(f"{n_atoms} 10.0 10.0 10.0\n") + file.write("comment\n") + for _ in range(n_atoms): + file.write(f"O {value} {value} {value}\n") + + +#: The legacy reference data directory of the VACF analysis, resolved +#: relative to this test file so that it does not depend on the cwd. +_DATA_DIR = Path(__file__).resolve().parents[2] / "data" / "vacf" + + + +class TestKernelFallbackImport: + + """ + Tests for the ModuleNotFoundError fallback import of the kernels. + """ + + def test_module_not_found_fallback_import(self): + """ + When the compiled kernel is absent, ``accumulate_frame`` and + ``weight_frame`` are imported from the pure-python + ``_vacf_kernel_py`` fallback. + + The vacf module is reloaded in-process with the compiled kernel + hidden by a meta_path blocker and restored to the compiled + version afterwards, so that the test does not affect any other + test regardless of the execution order. + """ + assert _vacf_module.accumulate_frame.__module__.endswith( + "_vacf_kernel" + ) + assert _vacf_module.weight_frame.__module__.endswith("_vacf_kernel") + + sys.modules.pop(_KERNEL, None) + blocker = _KernelBlocker() + sys.meta_path.insert(0, blocker) + + try: + importlib.reload(_vacf_module) + assert _vacf_module.accumulate_frame.__module__.endswith( + "_vacf_kernel_py" + ) + assert _vacf_module.weight_frame.__module__.endswith( + "_vacf_kernel_py" + ) + finally: + sys.meta_path.remove(blocker) + sys.modules.pop(_KERNEL, None) + importlib.reload(_vacf_module) + + assert _vacf_module.accumulate_frame.__module__.endswith( + "_vacf_kernel" + ) + assert _vacf_module.weight_frame.__module__.endswith("_vacf_kernel") + + + +class TestNonPositiveTimeStep: + + """ + Tests for the non-positive time step guard. + """ + + def test_zero_time_step(self, caplog): + """ + A time step of exactly zero raises a VACFError. ``0.0`` is a + valid ``PositiveReal`` (``>= 0.0``), so the guard is reached in + both the debug and the release type-checking modes. + """ + traj = Trajectory(_make_velocity_systems(np.ones((20, 1, 3)))) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The time_step must be a positive real number." + ), + exception=VACFError, + function=VACF, + traj=traj, + window_size=5, + time_step=0.0, + ) + + + +class TestNonRawTrajectoryReaderDispatch: + + """ + Tests for the non-raw TrajectoryReader dispatch of the velocity and + the charge trajectory (extended xyz readers bypass the raw + fast paths). + """ + + def test_velocity_trajectory_reader_non_raw(self, tmp_path): + """ + A velocity TrajectoryReader whose format is not ``VEL`` (here an + extended xyz reader that still provides velocities) is read via + ``calculate_number_of_frames_per_file`` and ``frame_generator`` + instead of the raw fast path. + """ + rng = np.random.default_rng(11) + velocities = rng.standard_normal((30, 3, 3)) + + systems = _make_velocity_systems(velocities, names=["O", "H", "H"]) + vel_file = str(tmp_path / "vel.extxyz") + TrajectoryWriter(vel_file).write( + Trajectory(systems), + traj_type=TrajectoryFormat.EXTXYZ, + ) + + reader = TrajectoryReader(vel_file) + assert reader.traj_format != TrajectoryFormat.VEL + + analysis = VACF(reader, window_size=8, time_step=0.1, gap=2) + + assert analysis._raw_reader is None + assert analysis._frame_generator is not None + assert analysis.n_frames == 30 + + time, correlation = analysis.run() + + assert correlation[0] == 1.0 + assert len(correlation) == 9 + assert np.allclose(time, np.arange(9) * 0.1, rtol=1e-14) + + def test_charge_trajectory_reader_non_raw(self, tmp_path): + """ + A charge TrajectoryReader whose format is not ``CHARGE`` (here + an extended xyz reader that provides charges) is read via + ``calculate_number_of_frames_per_file`` and ``frame_generator`` + instead of the raw charge fast path. + """ + rng = np.random.default_rng(12) + n_frames, n_atoms = 30, 3 + velocities = rng.standard_normal((n_frames, n_atoms, 3)) + charges = 0.5 + 0.1 * rng.standard_normal((n_frames, n_atoms)) + + atoms = [Atom(name) for name in ("O", "H", "H")] + charge_systems = [ + AtomicSystem( + atoms=atoms, + pos=np.zeros((n_atoms, 3)), + vel=velocities[i], + charges=charges[i], + ) for i in range(n_frames) + ] + charge_file = str(tmp_path / "chg.extxyz") + TrajectoryWriter(charge_file).write( + Trajectory(charge_systems), + traj_type=TrajectoryFormat.EXTXYZ, + ) + + charge_reader = TrajectoryReader(charge_file) + assert charge_reader.traj_format != TrajectoryFormat.CHARGE + + velocity_traj = Trajectory( + _make_velocity_systems(velocities, names=["O", "H", "H"]) + ) + + analysis = VACF( + velocity_traj, + window_size=8, + time_step=0.1, + gap=2, + charge_traj=charge_reader, + ) + + assert analysis._raw_charge_reader is None + assert analysis._charge_frame_generator is not None + assert analysis.flux is True + + _, correlation = analysis.run() + + assert correlation[0] == 1.0 + + + +class TestRawFrameAtomMismatch: + + """ + Tests for the raw fast-path atom-count mismatch guard. + """ + + def test_raw_frame_atom_count_mismatch(self, tmp_path, caplog): + """ + A raw velocity frame that provides a different number of atoms + than the first frame raises a VACFError. The two split files + keep the cheap frame counting consistent while the second file + introduces the mismatch. + """ + first_file = str(tmp_path / "first.vel") + second_file = str(tmp_path / "second.vel") + _write_vel_file(first_file, n_atoms=1, n_frames=15) + _write_vel_file(second_file, n_atoms=2, n_frames=5) + + reader = TrajectoryReader( + [first_file, second_file], + traj_format=TrajectoryFormat.VEL, + ) + + analysis = VACF(reader, window_size=10, time_step=0.1) + + assert analysis._raw_reader is not None + assert analysis.n_atoms == 1 + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "A frame of the velocity trajectory does not provide " + "velocities for all 1 atoms. Please provide a velocity " + "trajectory (e.g. .vel files)." + ), + exception=VACFError, + function=analysis.run, + ) + + + +class TestChargeStreamGuards: + + """ + Tests for the lockstep charge-stream exhaustion and shape guards. + """ + + def _make_charge_flux_analysis(self, seed): + """ + Builds a valid charge-flux VACF whose charge stream can be + overridden to exercise the guards of ``_next_charges``. + """ + rng = np.random.default_rng(seed) + n_frames, n_atoms = 20, 3 + velocities = rng.standard_normal((n_frames, n_atoms, 3)) + charges = 0.5 + 0.1 * rng.standard_normal((n_frames, n_atoms)) + + atoms = [Atom("O")] * n_atoms + velocity_traj = Trajectory( + _make_velocity_systems(velocities) + ) + charge_traj = Trajectory( + [ + AtomicSystem(atoms=atoms, charges=charges[i]) + for i in range(n_frames) + ] + ) + + return VACF( + velocity_traj, + window_size=5, + time_step=0.1, + charge_traj=charge_traj, + ) + + def test_charge_stream_exhausted(self, caplog): + """ + A charge stream that runs out before the velocity trajectory + raises a VACFError. + """ + analysis = self._make_charge_flux_analysis(seed=21) + analysis._charge_value_stream = iter([]) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The charge trajectory provides fewer frames than the " + "velocity trajectory." + ), + exception=VACFError, + function=analysis._next_charges, + ) + + def test_charge_frame_wrong_shape(self, caplog): + """ + A charge frame that does not provide one charge per atom raises + a VACFError. + """ + analysis = self._make_charge_flux_analysis(seed=22) + analysis._charge_value_stream = iter( + (np.zeros(analysis.n_atoms + 1),) + ) + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "A frame of the charge trajectory does not provide " + "charges for all 3 atoms. Please provide a charge " + "trajectory (e.g. .chrg files)." + ), + exception=VACFError, + function=analysis._next_charges, + ) + + + +class TestFFTZeroNorm: + + """ + Tests for the fft zero-norm guard. + """ + + def test_fft_zero_norm(self, caplog): + """ + An all-zero velocity trajectory has a vanishing aggregate + squared velocity norm and raises a VACFError for the fft + estimator. + """ + traj = Trajectory(_make_velocity_systems(np.zeros((20, 1, 3)))) + analysis = VACF(traj, window_size=5, time_step=0.1, method="fft") + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACF", + logging_level="ERROR", + message_to_test=( + "The aggregate squared velocity norm of the trajectory " + "is zero. The normalized VACF is not defined." + ), + exception=VACFError, + function=analysis.run, + ) + + + +class TestApiWindowParam: + + """ + Tests for the ``window_param`` spectrum keyword forwarding of the + input-file based api. + """ + + def test_window_param_forwarded_to_spectrum(self, tmp_path, monkeypatch): + """ + A ``window_param`` set in the input file is forwarded to the + spectrum calculation and a spectrum file is produced. + """ + shutil.copytree(_DATA_DIR, tmp_path, dirs_exist_ok=True) + monkeypatch.chdir(tmp_path) + + with open("vacf.in", "w", encoding="utf-8") as file: + file.write( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = vacf_out.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "spectrum_file = spectrum_out.dat\n" + "window_function = exponential\n" + "window_param = 20.0\n" + "window_start = 0.02\n" + "window_stop = 0.15\n" + ) + + vacf("vacf.in", md_format="qmcfc") + + assert os.path.exists("vacf_out.dat") + assert os.path.exists("spectrum_out.dat") diff --git a/tests/analysis/vacf/test_vacf_input_file_reader.py b/tests/analysis/vacf/test_vacf_input_file_reader.py new file mode 100644 index 00000000..34c065e3 --- /dev/null +++ b/tests/analysis/vacf/test_vacf_input_file_reader.py @@ -0,0 +1,222 @@ +""" +Tests for the VACFInputFileReader class. +""" + +import pytest + +from PQAnalysis.analysis.vacf import VACFInputFileReader +from PQAnalysis.io.input_file_reader.exceptions import InputFileError + +from .. import pytestmark # pylint: disable=unused-import +from ...conftest import assert_logging_with_exception + +# pylint: disable=protected-access + + + +def _write_input_file(filename, content): + """ + Writes an input file with the given content. + """ + with open(filename, "w", encoding="utf-8") as file: + file.write(content) + + + +MINIMAL_INPUT = ( + "traj_files = traj.vel\n" + "target_selection = O\n" + "out_file = vacf.dat\n" + "time_step = 0.002\n" +) + + + +class TestVACFInputFileReader: + + """ + Tests for the VACFInputFileReader class. + """ + + def test_minimal_input(self, tmpdir): # pylint: disable=unused-argument + """ + A minimal input file provides the required keys and None for + all optional keys. + """ + _write_input_file("vacf.in", MINIMAL_INPUT) + + reader = VACFInputFileReader("vacf.in") + reader.read() + + assert reader.traj_files == ["traj.vel"] + assert reader.target_selection == "O" + assert reader.out_file == "vacf.dat" + assert reader.time_step == 0.002 + + assert reader.window is None + assert reader.gap is None + assert reader.method is None + assert reader.charge_file is None + assert reader.charge_files is None + assert reader.spectrum_file is None + assert reader.ftsize is None + assert reader.window_function is None + assert reader.window_param is None + assert reader.window_start is None + assert reader.window_stop is None + assert reader.windowed_out_file is None + assert reader.log_file is None + + def test_full_input(self, tmpdir): # pylint: disable=unused-argument + """ + All optional keys are parsed. + """ + _write_input_file( + "vacf.in", + ( + "traj_files = [traj_1.vel, traj_2.vel]\n" + "target_selection = all\n" + "out_file = vacf.dat\n" + "time_step = 0.002\n" + "window = 100\n" + "gap = 5\n" + "method = fft\n" + "charge_file = charges.dat\n" + "spectrum_file = spectrum.dat\n" + "ftsize = 256\n" + "window_function = blackman\n" + "window_param = 20.0\n" + "window_start = 0.02\n" + "window_stop = 0.15\n" + "windowed_out_file = windowed.dat\n" + "log_file = vacf.log\n" + "use_full_atom_info = True\n" + ), + ) + + reader = VACFInputFileReader("vacf.in") + reader.read() + + assert reader.traj_files == ["traj_1.vel", "traj_2.vel"] + assert reader.target_selection == "all" + assert reader.out_file == "vacf.dat" + assert reader.time_step == 0.002 + assert reader.window == 100 + assert reader.gap == 5 + assert reader.method == "fft" + assert reader.charge_file == "charges.dat" + assert reader.spectrum_file == "spectrum.dat" + assert reader.ftsize == 256 + assert reader.window_function == "blackman" + assert reader.window_param == 20.0 + assert reader.window_start == 0.02 + assert reader.window_stop == 0.15 + assert reader.windowed_out_file == "windowed.dat" + assert reader.log_file == "vacf.log" + assert reader.use_full_atom_info is True + + def test_charge_files_input(self, tmpdir): # pylint: disable=unused-argument + """ + Charge trajectory files are parsed as a file list. + """ + _write_input_file( + "vacf.in", + MINIMAL_INPUT + "charge_files = [traj_1.chrg, traj_2.chrg]\n", + ) + + reader = VACFInputFileReader("vacf.in") + reader.read() + + assert reader.charge_files == ["traj_1.chrg", "traj_2.chrg"] + + def test_missing_required_key(self, tmpdir): # pylint: disable=unused-argument + """ + A missing required key raises an InputFileError. + """ + _write_input_file( + "vacf.in", + ( + "traj_files = traj.vel\n" + "target_selection = O\n" + "out_file = vacf.dat\n" + ), + ) + + reader = VACFInputFileReader("vacf.in") + + with pytest.raises(InputFileError): + reader.read() + + def test_both_charge_sources(self, tmpdir, caplog): # pylint: disable=unused-argument + """ + A static charge file and charge trajectory files cannot be + combined. + """ + _write_input_file( + "vacf.in", + ( + MINIMAL_INPUT + "charge_file = charges.dat\n" + "charge_files = [traj_1.chrg]\n" + ), + ) + + reader = VACFInputFileReader("vacf.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACFInputFileReader", + logging_level="ERROR", + message_to_test=( + "The keys 'charge_file' and 'charge_files' cannot be " + "used at the same time. Please provide only one charge " + "source for the charge-flux mode." + ), + exception=InputFileError, + function=reader.read, + ) + + def test_windowed_out_file_without_spectrum_file(self, tmpdir, caplog): # pylint: disable=unused-argument + """ + A windowed output file requires a spectrum file. + """ + _write_input_file( + "vacf.in", + MINIMAL_INPUT + "windowed_out_file = windowed.dat\n", + ) + + reader = VACFInputFileReader("vacf.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACFInputFileReader", + logging_level="ERROR", + message_to_test=( + "The key 'windowed_out_file' can only be used together " + "with the key 'spectrum_file'." + ), + exception=InputFileError, + function=reader.read, + ) + + def test_unknown_window_function(self, tmpdir, caplog): # pylint: disable=unused-argument + """ + An unknown window function raises an InputFileError. + """ + _write_input_file( + "vacf.in", + MINIMAL_INPUT + "window_function = hamming\n", + ) + + reader = VACFInputFileReader("vacf.in") + + assert_logging_with_exception( + caplog=caplog, + logging_name="VACFInputFileReader", + logging_level="ERROR", + message_to_test=( + "Unknown window function 'hamming'. Possible window " + "functions are: none, exponential, hann, blackman." + ), + exception=InputFileError, + function=reader.read, + ) diff --git a/tests/analysis/vacf/test_vacf_kernel.py b/tests/analysis/vacf/test_vacf_kernel.py new file mode 100644 index 00000000..1431a90d --- /dev/null +++ b/tests/analysis/vacf/test_vacf_kernel.py @@ -0,0 +1,541 @@ +""" +Equivalence tests of the Cython VACF kernels against the pure +Python/numpy fallback kernels. + +Both kernel implementations expose the identical signatures +(``accumulate_frame``, ``weight_frame`` and ``parse_charge_lines``) +and are driven over synthetic velocity/charge data. The per-origin +dot products of ``accumulate_frame`` are accumulated with different +(but both deterministic) float64 summation orders, so the resulting +correlation accumulators must agree to within tight floating point +tolerances; ``weight_frame`` and ``parse_charge_lines`` must be +bitwise identical. The fast path of the VACF class itself is +additionally run against both kernel implementations via +monkeypatching and compared to the in-memory Trajectory path. +""" + +import sys + +import numpy as np +import pytest + +from PQAnalysis.analysis.vacf import VACF +from PQAnalysis.analysis.vacf import _vacf_kernel_py +from PQAnalysis.analysis.vacf import _raw_charge_reader +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.traj import TrajectoryFormat + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + +try: + from PQAnalysis.analysis.vacf import _vacf_kernel +except ModuleNotFoundError: # pragma: no cover - build-dependent + _vacf_kernel = None + +#: The module defining the VACF class (the package attribute ``vacf`` +#: is shadowed by the api function of the same name). +vacf_module = sys.modules[VACF.__module__] + +KERNEL_MODULES = [ + pytest.param(_vacf_kernel_py, id="python-fallback"), + pytest.param( + _vacf_kernel, + id="cython", + marks=pytest.mark.skipif( + _vacf_kernel is None, + reason="Cython _vacf_kernel extension not built", + ), + ), +] + + + +def _require_cython(): + """ + Skips the calling test when the Cython extension is not built. + """ + if _vacf_kernel is None: # pragma: no cover - build-dependent + pytest.skip("Cython _vacf_kernel extension not built") + + + +def _float32_velocities(n_frames, n_atoms, seed): + """ + Builds float64 per-frame velocities that went through the float32 + parse of the trajectory readers. + """ + rng = np.random.default_rng(seed) + + values = rng.standard_normal((n_frames, n_atoms, 3)) + values = np.asarray(values, dtype=np.float32) + + return [ + np.ascontiguousarray(frame, dtype=np.float64) for frame in values + ] + + + +def _drive_accumulate(accumulate, velocities, window, gap): + """ + Drives an ``accumulate_frame`` implementation frame by frame with + the exact spawn/shift/drain scheduling of ``VACF._run_direct`` and + returns the full final state. + """ + n_frames = len(velocities) + n_target = velocities[0].shape[0] + + stop_frame = (n_frames - window) // gap * gap + + if stop_frame == 0: + stop_frame = 1 + + n_slots = window // gap + 1 + + corr = np.zeros(window + 1, dtype=np.float64) + origin_vel = np.zeros((n_slots, n_target, 3), dtype=np.float64) + origin_norm = np.zeros(n_slots, dtype=np.float64) + origin_frame = np.zeros(n_slots, dtype=np.longlong) + n_active = 0 + n_origins = 0 + + for frame_number, vel in enumerate(velocities, 1): + spawn = frame_number % gap == 0 and frame_number <= stop_frame + + n_active = accumulate( + corr, + origin_vel, + origin_norm, + origin_frame, + n_active, + vel, + frame_number, + spawn, + window, + ) + + assert n_active >= 0 + + if spawn: + n_origins += 1 + + return { + "corr": corr / n_origins, + "origin_vel": origin_vel, + "origin_norm": origin_norm, + "origin_frame": origin_frame, + "n_active": n_active, + "n_origins": n_origins, + } + + + +def _assert_accumulate_equivalence(n_frames, n_atoms, window, gap, seed=42): + """ + Runs both ``accumulate_frame`` implementations over the same + velocity stream and asserts that the complete final state agrees. + """ + _require_cython() + + velocities = _float32_velocities(n_frames, n_atoms, seed) + + results = [ + _drive_accumulate(module.accumulate_frame, velocities, window, gap) + for module in (_vacf_kernel, _vacf_kernel_py) + ] + + for key in ("corr", "origin_norm"): + assert np.allclose( + results[0][key], + results[1][key], + rtol=1e-14, + atol=1e-14, + ), f"kernel/fallback mismatch in {key}" + + # the origin bookkeeping is bitwise identical (plain copies/shifts) + assert np.array_equal(results[0]["origin_vel"], results[1]["origin_vel"]) + assert np.array_equal( + results[0]["origin_frame"], + results[1]["origin_frame"], + ) + assert results[0]["n_active"] == results[1]["n_active"] + assert results[0]["n_origins"] == results[1]["n_origins"] + + # both kernels must have accumulated a non-trivial correlation + assert results[0]["corr"][0] == 1.0 + assert np.any(results[0]["corr"][1:] != 0.0) + + + +class TestAccumulateFrameEquivalence: + + """ + Equivalence tests of the Cython ``accumulate_frame`` kernel vs the + numpy fallback. + """ + + def test_gap_one(self): + _assert_accumulate_equivalence(60, 5, window=12, gap=1) + + def test_gap_larger_one(self): + _assert_accumulate_equivalence(83, 7, window=20, gap=5) + + def test_single_atom(self): + _assert_accumulate_equivalence(50, 1, window=10, gap=2) + + def test_window_equals_n_frames_boundary(self): + # legacy stop_frame reset 0 -> 1: a single origin at frame 1 + # and the final lag bin stays zero + _assert_accumulate_equivalence(20, 3, window=20, gap=1) + + def test_drain_phase(self): + # trailing frames past the last origin only drain old origins + _assert_accumulate_equivalence(47, 4, window=8, gap=4) + + @pytest.mark.parametrize("kernel_module", KERNEL_MODULES) + def test_zero_norm_spawn_leaves_state_unchanged(self, kernel_module): + # a zero-norm origin returns -1 and must not modify any state + corr = np.zeros(6, dtype=np.float64) + origin_vel = np.zeros((6, 2, 3), dtype=np.float64) + origin_norm = np.zeros(6, dtype=np.float64) + origin_frame = np.zeros(6, dtype=np.longlong) + + result = kernel_module.accumulate_frame( + corr, + origin_vel, + origin_norm, + origin_frame, + 0, + np.zeros((2, 3), dtype=np.float64), + 1, + True, + 5, + ) + + assert result == -1 + assert not np.any(corr) + assert not np.any(origin_vel) + assert not np.any(origin_norm) + assert not np.any(origin_frame) + + + +class TestWeightFrameEquivalence: + + """ + Bitwise equivalence tests of the Cython ``weight_frame`` kernel vs + the numpy fallback. + """ + + @staticmethod + def _raw_values(n_atoms=9, seed=7): + rng = np.random.default_rng(seed) + + return np.asarray( + rng.standard_normal((n_atoms, 3)), + dtype=np.float32, + ) + + def test_without_charges(self): + _require_cython() + + values = self._raw_values() + indices = np.array([0, 2, 3, 8], dtype=np.intp) + + result = _vacf_kernel.weight_frame(values, indices, None) + reference = _vacf_kernel_py.weight_frame(values, indices, None) + + assert result.dtype == np.float64 + assert np.array_equal(result, reference) + # the float32 -> float64 cast is exact + assert np.array_equal( + result, + np.asarray(values, dtype=np.float64)[indices], + ) + + def test_with_charges(self): + _require_cython() + + values = self._raw_values(seed=11) + indices = np.array([1, 4, 5, 6, 7], dtype=np.intp) + charges = np.array([-0.8, 0.4, 0.4, -1.2, 2.0], dtype=np.float64) + + result = _vacf_kernel.weight_frame(values, indices, charges) + reference = _vacf_kernel_py.weight_frame(values, indices, charges) + + assert result.dtype == np.float64 + assert np.array_equal(result, reference) + + def test_qmcfc_stripped_view(self): + # the QMCFC fast path passes the values without the leading + # dummy atom row (a row-sliced view of the parsed array) + _require_cython() + + values = self._raw_values(n_atoms=5, seed=13)[1:] + indices = np.arange(4, dtype=np.intp) + charges = np.array([0.1, -0.2, 0.3, -0.4], dtype=np.float64) + + assert np.array_equal( + _vacf_kernel.weight_frame(values, indices, charges), + _vacf_kernel_py.weight_frame(values, indices, charges), + ) + + + +class TestParseChargeLinesEquivalence: + + """ + Equivalence tests of the Cython ``parse_charge_lines`` kernel vs + the numpy fallback. + """ + + VALID_LINES = [ + "O -0.89076318\n", + "H 0.44538159\n", + " Na1 1.0 \n", + "Cl\t-1.25e-03\n", + "X 0.0\n", + "O2 .5\n", + "H +4.75\n", + "C -17\n", + ] + + INVALID_LINES = [ + "O\n", + "O 1.0 2.0\n", + "O abc\n", + "O 1.0x\n", + "O 1,5\n", + "\n", + ] + + def test_valid_lines_bitwise_identical(self): + _require_cython() + + n_atoms = len(self.VALID_LINES) + + result = _vacf_kernel.parse_charge_lines(self.VALID_LINES, n_atoms) + reference = _vacf_kernel_py.parse_charge_lines( + self.VALID_LINES, + n_atoms, + ) + + assert result.dtype == np.float64 + assert np.array_equal(result, reference) + assert np.array_equal( + result, + np.array( + [float(line.split()[1]) for line in self.VALID_LINES] + ), + ) + + @pytest.mark.parametrize("kernel_module", KERNEL_MODULES) + @pytest.mark.parametrize( + "bad_line", + INVALID_LINES, + ids=repr, + ) + def test_invalid_lines_raise(self, kernel_module, bad_line): + with pytest.raises(ValueError): + kernel_module.parse_charge_lines(["O 1.0\n", bad_line], 2) + + + +class TestVACFFastPathKernels: + + """ + Tests of the VACF fast path with both kernel implementations. + """ + + N_FRAMES = 60 + N_ATOMS = 6 + + @classmethod + def _write_trajectories(cls, tmp_path, seed=2026): + """ + Writes a velocity and a lockstep charge trajectory file and + returns their paths. + """ + rng = np.random.default_rng(seed) + + velocities = rng.standard_normal((cls.N_FRAMES, cls.N_ATOMS, 3)) + charges = 0.5 + 0.1 * rng.standard_normal( + (cls.N_FRAMES, cls.N_ATOMS) + ) + + names = [ + "O" if i % 2 == 0 else "H" for i in range(cls.N_ATOMS) + ] + + vel_file = str(tmp_path / "traj.vel") + charge_file = str(tmp_path / "traj.chrg") + + with open(vel_file, "w", encoding="utf-8") as file: + for frame in velocities: + file.write(f"{cls.N_ATOMS} 10.0 11.0 12.0\n\n") + for name, (x, y, z) in zip(names, frame): + file.write(f"{name} {x:.7f} {y:.7f} {z:.7f}\n") + + with open(charge_file, "w", encoding="utf-8") as file: + for frame in charges: + file.write(f"{cls.N_ATOMS} 10.0 11.0 12.0\n\n") + for name, charge in zip(names, frame): + file.write(f"{name} {charge:.7f}\n") + + return vel_file, charge_file + + def _patch_kernels(self, monkeypatch, kernel_module): + monkeypatch.setattr( + vacf_module, + "accumulate_frame", + kernel_module.accumulate_frame, + ) + monkeypatch.setattr( + vacf_module, + "weight_frame", + kernel_module.weight_frame, + ) + monkeypatch.setattr( + _raw_charge_reader, + "parse_charge_lines", + kernel_module.parse_charge_lines, + ) + + @staticmethod + def _charge_kwargs(charge_source, vel_file, charge_file): + if charge_source == "static": + return {"charges": np.array([-0.8, 0.4] * 3)} + + if charge_source == "trajectory": + return { + "charge_traj": TrajectoryReader( + charge_file, + traj_format=TrajectoryFormat.CHARGE, + ) + } + + return {} + + @pytest.mark.parametrize( + "charge_source", + ["none", "static", "trajectory"], + ) + @pytest.mark.parametrize("kernel_module", KERNEL_MODULES) + def test_fast_path_matches_in_memory_path( + self, + kernel_module, + charge_source, + tmp_path, + monkeypatch, + ): + # the fast path (with either kernel implementation) must + # reproduce the results of the in-memory Trajectory hot loop + # for all charge modes + vel_file, charge_file = self._write_trajectories(tmp_path) + + self._patch_kernels(monkeypatch, kernel_module) + + fast = VACF( + TrajectoryReader(vel_file), + window_size=20, + time_step=0.1, + gap=5, + **self._charge_kwargs(charge_source, vel_file, charge_file), + ) + + assert fast._raw_reader is not None + + if charge_source == "trajectory": + assert fast._raw_charge_reader is not None + + _, fast_correlation = fast.run() + + charge_kwargs = self._charge_kwargs( + charge_source, + vel_file, + charge_file, + ) + + if charge_source == "trajectory": + charge_kwargs = { + "charge_traj": + TrajectoryReader( + charge_file, + traj_format=TrajectoryFormat.CHARGE, + ).read() + } + + reference = VACF( + TrajectoryReader(vel_file).read(), + window_size=20, + time_step=0.1, + gap=5, + **charge_kwargs, + ) + + assert reference._raw_reader is None + + _, reference_correlation = reference.run() + + assert fast.n_origins == reference.n_origins + assert np.allclose( + fast_correlation, + reference_correlation, + rtol=0.0, + atol=1e-14, + ) + + @pytest.mark.parametrize("kernel_module", KERNEL_MODULES) + def test_fast_path_matches_in_memory_path_fft( + self, + kernel_module, + tmp_path, + monkeypatch, + ): + # the fft estimator consumes the same velocity stream + vel_file, _ = self._write_trajectories(tmp_path) + + self._patch_kernels(monkeypatch, kernel_module) + + fast = VACF( + TrajectoryReader(vel_file), + window_size=20, + time_step=0.1, + method="fft", + ) + + assert fast._raw_reader is not None + + _, fast_correlation = fast.run() + + reference = VACF( + TrajectoryReader(vel_file).read(), + window_size=20, + time_step=0.1, + method="fft", + ) + + _, reference_correlation = reference.run() + + assert np.allclose( + fast_correlation, + reference_correlation, + rtol=0.0, + atol=1e-14, + ) + + def test_active_kernels_are_a_known_implementation(self): + # the vacf modules must have wired up either the Cython kernel + # or the numpy fallback via the try-import + known_modules = ( + "PQAnalysis.analysis.vacf._vacf_kernel", + "PQAnalysis.analysis.vacf._vacf_kernel_py", + ) + + assert vacf_module.accumulate_frame.__module__ in known_modules + assert vacf_module.weight_frame.__module__ in known_modules + assert ( + _raw_charge_reader.parse_charge_lines.__module__ + in known_modules + ) diff --git a/tests/analysis/vacf/test_vacf_output_file_writer.py b/tests/analysis/vacf/test_vacf_output_file_writer.py new file mode 100644 index 00000000..2080a3ce --- /dev/null +++ b/tests/analysis/vacf/test_vacf_output_file_writer.py @@ -0,0 +1,176 @@ +""" +Tests for the VACF output file writers. +""" + +import numpy as np + +from PQAnalysis.analysis.vacf import ( + VACF, + VACFDataWriter, + VACFLogWriter, + VACFSpectrumDataWriter, + VACFWindowedDataWriter, +) +from PQAnalysis.atomic_system import AtomicSystem +from PQAnalysis.core import Atom +from PQAnalysis.traj import Trajectory + +from .. import pytestmark # pylint: disable=unused-import + +# pylint: disable=protected-access + + + +def _read_lines(filename): + """ + Reads all lines of a file without trailing newlines. + """ + with open(filename, "r", encoding="utf-8") as file: + return [line.rstrip("\n") for line in file] + + + +def _make_vacf(): + """ + Builds a small VACF analysis object. + """ + rng = np.random.default_rng(42) + atoms = [Atom("O")] + + systems = [ + AtomicSystem(atoms=atoms, vel=rng.standard_normal((1, 3))) + for _ in range(20) + ] + + return VACF(Trajectory(systems), window_size=5, time_step=0.1) + + + +class TestVACFDataWriter: + + """ + Tests for the VACFDataWriter class. + """ + + def test_write_legacy_format(self, tmpdir): # pylint: disable=unused-argument + """ + The data writer replicates the legacy FreqCalc output format. + """ + writer = VACFDataWriter("vacf.dat") + writer.write( + (np.array([0.0, 0.002]), np.array([1.0, 0.81100607])) + ) + + assert _read_lines("vacf.dat") == [ + " 0.000000 1.00000000", + " 0.002000 0.81100607", + ] + + + +class TestVACFSpectrumDataWriter: + + """ + Tests for the VACFSpectrumDataWriter class. + """ + + def test_write_legacy_format(self, tmpdir): # pylint: disable=unused-argument + """ + The spectrum writer replicates the legacy ft.f output format. + """ + writer = VACFSpectrumDataWriter("spectrum.dat") + writer.write( + ( + np.array([32.7023623, 65.4047245]), + np.array([0.0904911818, 0.4871028398]), + ) + ) + + assert _read_lines("spectrum.dat") == [ + " 32.7023623 0.0904911818", + " 65.4047245 0.4871028398", + ] + + + +class TestVACFWindowedDataWriter: + + """ + Tests for the VACFWindowedDataWriter class. + """ + + def test_write_legacy_format(self, tmpdir): # pylint: disable=unused-argument + """ + The windowed writer replicates the legacy ft.f windowfile + format. + """ + writer = VACFWindowedDataWriter("windowed.dat") + writer.write( + (np.array([0.0, 0.002]), np.array([1.0, 0.81100607])) + ) + + assert _read_lines("windowed.dat") == [ + " 0.0000 1.0000000000", + " 0.0020 0.8110060700", + ] + + + +class TestVACFLogWriter: + + """ + Tests for the VACFLogWriter class. + """ + + def test_write_before_and_after_run(self, tmpdir): # pylint: disable=unused-argument + """ + The log writer writes the setup parameters before the run and + the number of origins and elapsed time after the run. + """ + vacf = _make_vacf() + + writer = VACFLogWriter("vacf.log") + writer.write_before_run(vacf) + + vacf.run() + + writer.write_after_run(vacf) + + log_content = "\n".join(_read_lines("vacf.log")) + + assert "VACF calculation:" in log_content + assert "Window size (frames): 5" in log_content + assert "Origin gap (frames): 1" in log_content + assert "Time step: 0.1 ps" in log_content + assert "Method: direct" in log_content + assert "Number of frames: 20" in log_content + assert "Number of atoms: 1" in log_content + assert f"Number of origins: {vacf.n_origins}" in log_content + assert f"Elapsed time: {vacf.elapsed_time} s" in log_content + + def test_flux_header(self, tmpdir): # pylint: disable=unused-argument + """ + In the charge-flux mode the log header names the charge-flux + auto-correlation. + """ + rng = np.random.default_rng(43) + atoms = [Atom("O")] + + systems = [ + AtomicSystem(atoms=atoms, vel=rng.standard_normal((1, 3))) + for _ in range(20) + ] + + vacf = VACF( + Trajectory(systems), + window_size=5, + time_step=0.1, + charges=np.array([-0.8]), + ) + + writer = VACFLogWriter("flux.log") + writer.write_before_run(vacf) + + log_content = "\n".join(_read_lines("flux.log")) + + assert "Charge-flux auto-correlation calculation:" in log_content diff --git a/tests/analysis/vibrational/__init__.py b/tests/analysis/vibrational/__init__.py new file mode 100644 index 00000000..d01083ae --- /dev/null +++ b/tests/analysis/vibrational/__init__.py @@ -0,0 +1,3 @@ +""" +Tests for vibrational analysis. +""" diff --git a/tests/analysis/vibrational/test_api.py b/tests/analysis/vibrational/test_api.py new file mode 100644 index 00000000..10561e6e --- /dev/null +++ b/tests/analysis/vibrational/test_api.py @@ -0,0 +1,205 @@ +""" +Tests for the vibrational analysis API. +""" + +from pathlib import Path +from types import SimpleNamespace + +import numpy as np +import pytest + +from PQAnalysis.analysis.vibrational import vibrations +from PQAnalysis.analysis.vibrational import api as vibrational_api +from PQAnalysis.analysis.vibrational.api import ( + _read_atom_charges, + _read_structure_file, +) +from PQAnalysis.analysis.vibrational.exceptions import VibrationalAnalysisError + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestVibrationalAnalysisAPI: + + """ + Tests for the vibrational analysis API. + """ + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_vibrations(self, test_with_data_dir): + vibrations("input.in") + + output = Path("wavenumbers.dat") + normal_modes = Path("normal_modes.dat") + + assert output.is_file() + assert normal_modes.is_file() + assert output.read_text( + encoding="utf-8" + ).startswith("# Wavenumbers (cm-1) Intensities (km mol-1)") + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_vibrations_with_mode_output(self, test_with_data_dir): + vibrations("mode_output.in") + + output = Path("wavenumbers.dat") + normal_modes = Path("normal_modes.dat") + modes_file = Path("modes.xyz") + mode_6 = Path("mode-6.xyz") + + assert output.is_file() + assert normal_modes.is_file() + assert modes_file.is_file() + assert mode_6.is_file() + assert Path("mode-1.xyz").exists() is False + assert modes_file.read_text(encoding="utf-8").splitlines( + )[1].startswith("Properties=species:S:1:pos:R:3:mode:R:3 mode=6") + assert "frame=1/8" in mode_6.read_text(encoding="utf-8") + + def test_read_single_frame_xyz(self, tmpdir): # pylint: disable=unused-argument + Path("structure.xyz").write_text( + "1\ncomment\nH 0.0 0.0 0.0\n", + encoding="utf-8", + ) + + system = _read_structure_file("structure.xyz") + + assert system.n_atoms == 1 + assert _read_atom_charges(system, None) is None + + def test_rejects_multi_frame_xyz(self, tmpdir): # pylint: disable=unused-argument + Path("structure.xyz").write_text( + "1\nfirst\nH 0.0 0.0 0.0\n" + "1\nsecond\nH 0.0 0.0 0.0\n", + encoding="utf-8", + ) + + with pytest.raises(VibrationalAnalysisError) as exception: + _read_structure_file("structure.xyz") + + assert str( + exception.value + ) == "XYZ structure input must contain exactly one frame." + + def test_read_atom_charges_for_xyz(self, tmpdir): # pylint: disable=unused-argument + Path("structure.xyz").write_text( + "1\ncomment\nH 0.0 0.0 0.0\n", + encoding="utf-8", + ) + Path("moldescriptor.dat").write_text( + "# Molecule 1\nH 1 0.2\nH 1 0.2\n", + encoding="utf-8", + ) + + system = _read_structure_file("structure.xyz") + + assert _read_atom_charges(system, + "moldescriptor.dat").tolist() == [0.2] + + def test_rejects_xyz_with_multiple_molecule_types(self, tmpdir): + Path("structure.xyz").write_text( + "1\ncomment\nH 0.0 0.0 0.0\n", + encoding="utf-8", + ) + Path("moldescriptor.dat").write_text( + "# Molecule 1\nH 1 0.2\nH 1 0.2\n" + "# Molecule 2\nO 1 -0.4\nO 1 -0.4\n", + encoding="utf-8", + ) + + system = _read_structure_file("structure.xyz") + + with pytest.raises(VibrationalAnalysisError) as exception: + _read_atom_charges(system, "moldescriptor.dat") + + assert str( + exception.value + ) == "XYZ input requires a moldescriptor file with exactly one molecule type." + + def test_rejects_xyz_moldescriptor_size_mismatch(self, tmpdir): + Path("structure.xyz").write_text( + "2\ncomment\nH 0.0 0.0 0.0\nH 1.0 0.0 0.0\n", + encoding="utf-8", + ) + Path("moldescriptor.dat").write_text( + "# Molecule 1\nH 1 0.2\nH 1 0.2\n", + encoding="utf-8", + ) + + system = _read_structure_file("structure.xyz") + + with pytest.raises(VibrationalAnalysisError) as exception: + _read_atom_charges(system, "moldescriptor.dat") + + assert str( + exception.value + ) == "The moldescriptor molecule size must match the XYZ structure." + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_rejects_missing_restart_residue_charge( + self, test_with_data_dir, monkeypatch + ): + Path("moldescriptor.dat").write_text( + "# Molecule 2\nH 1 0.2\nH 1 0.2\n", + encoding="utf-8", + ) + + class FakeMoldescriptorReader: + + def __init__(self, filename): + self.filename = filename + + def read(self): + return [ + SimpleNamespace( + id=2, n_atoms=1, partial_charges=np.array([0.2]) + ) + ] + + monkeypatch.setattr( + vibrational_api, "MoldescriptorReader", FakeMoldescriptorReader + ) + + system = SimpleNamespace( + n_atoms=1, + topology=SimpleNamespace( + residue_ids=np.array([1]), + residues=[ + SimpleNamespace( + n_atoms=1, partial_charges=np.array([0.2]) + ) + ], + residue_atom_indices=[np.array([0])], + ), + ) + + with pytest.raises(VibrationalAnalysisError) as exception: + _read_atom_charges(system, "moldescriptor.dat") + + assert str( + exception.value + ) == "Residue id 1 has no moldescriptor entry." + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_rejects_restart_residue_size_mismatch(self, test_with_data_dir): + Path("moldescriptor.dat").write_text( + "# Molecule 1\nH 1 0.2\nH 1 0.2\n", + encoding="utf-8", + ) + residue = SimpleNamespace(n_atoms=3, partial_charges=np.array([0.2])) + system = SimpleNamespace( + n_atoms=1, + topology=SimpleNamespace( + residue_ids=np.array([1]), + residues=[residue], + residue_atom_indices=[np.array([0])], + ), + ) + + with pytest.raises(VibrationalAnalysisError) as exception: + _read_atom_charges(system, "moldescriptor.dat") + + assert str( + exception.value + ) == "The moldescriptor residue size does not match the structure." diff --git a/tests/analysis/vibrational/test_vibrational_analysis.py b/tests/analysis/vibrational/test_vibrational_analysis.py new file mode 100644 index 00000000..524c5f75 --- /dev/null +++ b/tests/analysis/vibrational/test_vibrational_analysis.py @@ -0,0 +1,476 @@ +""" +Tests for vibrational analysis numerical routines. +""" + +import numpy as np +import pytest + +from PQAnalysis.analysis.vibrational.vibrational_analysis import ( + calculate, + hessian_sign_factor, + mode_displacement, + mass_weighted_hessian, + read_hessian_file, + select_mode_indices, + symmetrize_addition, + wavenumber, + write_calculate_output, + write_extxyz_modes, + write_normal_modes, + write_xyz_modes, + _mode_frame_count, + _mode_wavenumbers, + _scale_mode_to_amplitude, + _xyz_atom_symbol, +) +from PQAnalysis.analysis.vibrational.exceptions import VibrationalAnalysisError +from PQAnalysis.io import RestartFileReader + +from .. import pytestmark # pylint: disable=unused-import + +KCAL_MOL_TO_EV = 0.0433641153087705 + + + +def _ase_signed_wavenumbers(atom_names, atom_masses, atom_coords, hessian): + """ + Calculate ASE frequencies and map imaginary modes to signed wavenumbers. + """ + from ase import Atoms + from ase.vibrations.data import VibrationsData + + atoms = Atoms(atom_names, positions=atom_coords) + atoms.set_masses(atom_masses) + + frequencies = VibrationsData.from_2d(atoms, hessian).get_frequencies() + + return np.where( + np.abs(frequencies.imag) > 1.0e-12, + -np.abs(frequencies.imag), + frequencies.real, + ) + + + +class TestVibrationalAnalysis: + + """ + Tests for the vibrational analysis routines. + """ + + def test_mass_weighted_hessian_preserves_sign(self): + hessian = np.diag([-4.0, 2.0, 8.0]) + + assert np.allclose( + np.linalg.eigvalsh( + mass_weighted_hessian(hessian, np.array([1.0])) + ), + np.array([-4.0, 2.0, 8.0]), + ) + assert np.allclose( + np.linalg.eigvalsh( + mass_weighted_hessian(hessian, np.array([1.0]), sign=-1.0) + ), + np.array([-8.0, -2.0, 4.0]), + ) + + def test_read_hessian_file_errors(self, tmpdir): # pylint: disable=unused-argument + with pytest.raises(VibrationalAnalysisError) as exception: + read_hessian_file("missing.dat") + + assert str(exception.value) == "Hessian file 'missing.dat' not found." + + with open("bad.dat", "w", encoding="utf-8") as file: + file.write("1.0 nope\n") + + with pytest.raises(VibrationalAnalysisError) as exception: + read_hessian_file("bad.dat") + + assert str( + exception.value + ) == "Hessian file 'bad.dat' contains non-numeric data." + + with open("rectangular.dat", "w", encoding="utf-8") as file: + file.write("1.0 2.0 3.0\n4.0 5.0 6.0\n") + + with pytest.raises(VibrationalAnalysisError) as exception: + read_hessian_file("rectangular.dat") + + assert "Hessian matrix must be square" in str(exception.value) + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_calculate_h2o(self, test_with_data_dir): + system = RestartFileReader("h2o.rst").read() + hessian = read_hessian_file("hessian.dat") + + result = calculate(system.atomic_masses, system.pos, hessian) + + assert result.wavenumbers.shape == (9, ) + assert result.force_constants.shape == (9, ) + assert result.reduced_masses.shape == (9, ) + assert result.normal_modes.shape == (9, 9) + assert result.intensities is None + assert np.all(np.isfinite(result.wavenumbers)) + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_calculate_h2o_matches_ase_reference(self, test_with_data_dir): + system = RestartFileReader("h2o.rst").read() + hessian = read_hessian_file("hessian.dat") + sign_factor = hessian_sign_factor( + system.pos, + system.atomic_masses, + hessian, + "auto", + ) + + result = calculate(system.atomic_masses, system.pos, hessian) + ase_hessian = ( + sign_factor * symmetrize_addition(hessian) * KCAL_MOL_TO_EV + ) + ase_wavenumbers = _ase_signed_wavenumbers( + [atom.symbol.capitalize() for atom in system.atoms], + system.atomic_masses, + system.pos, + ase_hessian, + ) + + np.testing.assert_allclose( + result.wavenumbers, + ase_wavenumbers, + rtol=0.0, + atol=1.0e-3, + ) + + def test_calculate_electronvolt_hessian_matches_ase_reference(self): + atom_masses = np.array([1.00794, 1.00794]) + atom_coords = np.array([[0.0, 0.0, 0.0], [0.74, 0.0, 0.0]]) + hessian = np.zeros((6, 6)) + hessian[0, 0] = 1.5 + hessian[0, 3] = -1.5 + hessian[3, 0] = -1.5 + hessian[3, 3] = 1.5 + + result = calculate( + atom_masses, + atom_coords, + hessian, + unit="ev", + hessian_sign="positive", + ) + ase_wavenumbers = _ase_signed_wavenumbers( + ["H", "H"], + atom_masses, + atom_coords, + hessian, + ) + + np.testing.assert_allclose( + result.wavenumbers, + ase_wavenumbers, + rtol=0.0, + atol=1.0e-3, + ) + + def test_calculate_validates_shapes(self): + hessian = np.eye(6) + + with pytest.raises(VibrationalAnalysisError) as exception: + calculate(np.ones((2, 1)), np.zeros((2, 3)), hessian) + + assert str( + exception.value + ) == "Atom masses must be a one-dimensional array." + + with pytest.raises(VibrationalAnalysisError) as exception: + calculate(np.ones(2), np.zeros((2, 2)), hessian) + + assert str( + exception.value + ) == "Atom coordinates must have shape (n_atoms, 3)." + + with pytest.raises(VibrationalAnalysisError) as exception: + calculate(np.ones(2), np.zeros((2, 3)), np.eye(3)) + + assert "Hessian shape must be" in str(exception.value) + + with pytest.raises(VibrationalAnalysisError) as exception: + calculate( + np.ones(2), + np.zeros((2, 3)), + hessian, + atom_charges=np.ones(3), + ) + + assert str( + exception.value + ) == "The number of atom charges must match the number of atoms." + + def test_hessian_sign_factor_options(self): + coords = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0]]) + masses = np.ones(2) + hessian = np.eye(6) + + assert hessian_sign_factor(coords, masses, hessian, 1.0) == 1.0 + assert hessian_sign_factor(coords, masses, hessian, -1.0) == -1.0 + assert hessian_sign_factor(coords, masses, hessian, "positive") == 1.0 + assert hessian_sign_factor(coords, masses, hessian, "negative") == -1.0 + assert hessian_sign_factor(coords, masses, hessian, "auto") == 1.0 + assert hessian_sign_factor(coords, masses, -hessian, "auto") == -1.0 + + one_atom_coords = np.zeros((1, 3)) + assert hessian_sign_factor( + one_atom_coords, + np.ones(1), + np.eye(3), + "auto", + ) == 1.0 + nonlinear_coords = np.array( + [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0]] + ) + assert hessian_sign_factor( + nonlinear_coords, + np.ones(3), + np.zeros((9, 9)), + "auto", + ) == 1.0 + + with pytest.raises(VibrationalAnalysisError) as exception: + hessian_sign_factor(coords, masses, hessian, "sideways") + + assert str( + exception.value + ) == "hessian_sign must be auto, positive, negative, 1, or -1." + + def test_wavenumber_units(self): + eigenvalues = np.array([1.0, -1.0]) + + for unit in ("kcal", "hartree", "ev"): + values, omega = wavenumber(eigenvalues, unit=unit) + assert values[0] > 0.0 + assert omega[1] < 0.0 + + with pytest.raises(VibrationalAnalysisError) as exception: + wavenumber(eigenvalues, unit="kj") + + assert str( + exception.value + ) == "Invalid unit. Options are kcal, hartree and ev." + + def test_select_mode_indices(self): + wavenumbers = np.array([-2.0, 0.0, 0.1, 10.0]) + + assert select_mode_indices(wavenumbers) == [0, 1, 2, 3] + assert select_mode_indices(wavenumbers, "nonzero") == [0, 2, 3] + assert select_mode_indices(wavenumbers, "positive", + threshold=1.0) == [3] + assert select_mode_indices(wavenumbers, [1, 4, 4]) == [0, 3] + + with pytest.raises(VibrationalAnalysisError) as exception: + select_mode_indices(wavenumbers, "invalid") + + assert str( + exception.value + ) == "modes must be all, nonzero, positive or one-based mode numbers." + + with pytest.raises(VibrationalAnalysisError) as exception: + select_mode_indices(wavenumbers, [5]) + + assert str( + exception.value + ) == "Mode 5 is outside the available range 1..4." + + def test_write_calculate_output_without_intensities(self, capsys): + result = calculate(np.ones(1), np.zeros((1, 3)), np.eye(3)) + + write_calculate_output(result) + + assert capsys.readouterr( + ).out.startswith("# Wavenumbers (cm-1) Force constants") + + def test_write_normal_modes_stdout(self, capsys): + write_normal_modes(np.eye(2)) + + assert capsys.readouterr().out.splitlines()[0] == "1.0 0.0" + + def test_write_xyz_modes(self, tmpdir): # pylint: disable=unused-argument + normal_modes = np.eye(6) + atom_coords = np.zeros((2, 3)) + atom_names = ["o", "h"] + wavenumbers = np.array([0.0, 50.0, 100.0, 150.0, 200.0, 250.0]) + + write_xyz_modes( + normal_modes, + atom_coords, + atom_names, + filename="mode", + wavenumbers=wavenumbers, + modes=[2], + n_frames=4, + amplitude=0.5, + ) + + mode_file = "mode-2.xyz" + with open(mode_file, "r", encoding="utf-8") as file: + lines = file.readlines() + + assert len(lines) == 16 + assert lines[1].startswith( + "mode=2 frequency_cm-1=5.00000000e+01 frame=1/4" + ) + assert lines[5].startswith( + "mode=2 frequency_cm-1=5.00000000e+01 frame=2/4" + ) + assert lines[6].split()[0] == "O" + assert lines[7].split()[0] == "H" + assert lines[6].split()[2] == "0.5" + + write_xyz_modes( + normal_modes, + atom_coords, + atom_names, + "legacy", + 0.5, + 0.5, + wavenumbers=wavenumbers, + modes=[2], + ) + + with open("legacy-2.xyz", "r", encoding="utf-8") as file: + lines = file.readlines() + + assert len(lines) == 12 + + write_xyz_modes(normal_modes, atom_coords, atom_names, filename="zero") + + assert "frequency_cm-1=0.00000000e+00" in open( + "zero-1.xyz", + "r", + encoding="utf-8", + ).read() + + def test_mode_writer_validation(self, tmpdir): # pylint: disable=unused-argument + normal_modes = np.eye(3) + atom_coords = np.zeros((1, 3)) + atom_names = ["x"] + + with pytest.raises(VibrationalAnalysisError) as exception: + write_xyz_modes(normal_modes, atom_coords, atom_names, n_frames=0) + + assert str( + exception.value + ) == "Number of mode frames must be positive." + + with pytest.raises(VibrationalAnalysisError) as exception: + write_xyz_modes( + normal_modes, atom_coords, atom_names, amplitude=-1.0 + ) + + assert str(exception.value) == "Mode amplitude must not be negative." + + with pytest.raises(VibrationalAnalysisError) as exception: + write_xyz_modes( + normal_modes, + atom_coords, + atom_names, + temperature=0.0, + ) + + assert str(exception.value) == "Mode temperature must be positive." + + with pytest.raises(VibrationalAnalysisError) as exception: + write_xyz_modes( + normal_modes, atom_coords, atom_names, threshold=-1.0 + ) + + assert str(exception.value) == "Mode threshold must not be negative." + + with pytest.raises(VibrationalAnalysisError) as exception: + _mode_frame_count(None, 0.25, 0.0) + + assert str(exception.value) == "Mode step must be positive." + + with pytest.raises(VibrationalAnalysisError) as exception: + _mode_wavenumbers(np.ones(2), normal_modes) + + assert str( + exception.value + ) == "The number of wavenumbers must match the number of normal modes." + + def test_mode_scaling(self): + mode = np.array([[3.0, 4.0, 0.0], [0.0, 0.0, 0.0]]) + + assert np.allclose(_scale_mode_to_amplitude(mode, 0.0), 0.0) + assert np.allclose( + _scale_mode_to_amplitude(np.zeros((1, 3)), 0.3), 0.0 + ) + assert np.isclose( + np.linalg.norm(_scale_mode_to_amplitude(mode, 0.5)[0]), 0.5 + ) + with pytest.raises(VibrationalAnalysisError) as exception: + _scale_mode_to_amplitude(mode, -1.0) + + assert str(exception.value) == "Mode amplitude must not be negative." + + scaled = mode_displacement(mode, 100.0, temperature=300.0) + assert scaled[0, 0] > 3.0 + + with pytest.raises(VibrationalAnalysisError) as exception: + mode_displacement(mode, 100.0, temperature=0.0) + + assert str(exception.value) == "Mode temperature must be positive." + + def test_write_extxyz_modes(self, tmpdir): # pylint: disable=unused-argument + normal_modes = np.eye(6) + atom_coords = np.zeros((2, 3)) + atom_names = ["o", "h"] + wavenumbers = np.array([0.0, 50.0, 100.0, 150.0, 200.0, 250.0]) + intensities = np.arange(6, dtype=float) + + write_extxyz_modes( + normal_modes, + atom_coords, + atom_names, + filename="modes.xyz", + wavenumbers=wavenumbers, + intensities=intensities, + modes=[6], + ) + + with open("modes.xyz", "r", encoding="utf-8") as file: + lines = file.readlines() + + assert len(lines) == 4 + assert lines[1].startswith( + "Properties=species:S:1:pos:R:3:mode:R:3 " + "mode=6 frequency_cm-1=2.50000000e+02" + ) + assert "IR_intensity=5.00000000e+00" in lines[1] + assert lines[2].split()[0] == "O" + assert lines[3].split()[0] == "H" + assert len(lines[2].split()) == 7 + + write_extxyz_modes( + normal_modes, + atom_coords, + atom_names, + filename="modes_no_intensity.xyz", + modes=[1], + ) + + with open("modes_no_intensity.xyz", "r", encoding="utf-8") as file: + assert "IR_intensity" not in file.readlines()[1] + + with pytest.raises(VibrationalAnalysisError) as exception: + write_extxyz_modes( + normal_modes, + atom_coords, + atom_names, + threshold=-1.0, + ) + + assert str(exception.value) == "Mode threshold must not be negative." + + def test_xyz_atom_symbol(self): + assert _xyz_atom_symbol(None) == "X" + assert _xyz_atom_symbol("") == "X" + assert _xyz_atom_symbol("cl") == "Cl" diff --git a/tests/analysis/vibrational/test_vibrational_input_file_reader.py b/tests/analysis/vibrational/test_vibrational_input_file_reader.py new file mode 100644 index 00000000..9cd49366 --- /dev/null +++ b/tests/analysis/vibrational/test_vibrational_input_file_reader.py @@ -0,0 +1,168 @@ +""" +Tests for the vibrational analysis input-file reader. +""" + +import pytest + +from PQAnalysis.analysis.vibrational import VibrationalAnalysisInputFileReader +from PQAnalysis.analysis.vibrational.vibrational_input_file_reader import _parse_modes +from PQAnalysis.exceptions import PQKeyError +from PQAnalysis.io.input_file_reader.exceptions import InputFileError + +from .. import pytestmark # pylint: disable=unused-import + + + +class TestVibrationalAnalysisInputFileReader: + + """ + Tests for VibrationalAnalysisInputFileReader. + """ + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_read(self, test_with_data_dir): + reader = VibrationalAnalysisInputFileReader("input.in") + reader.read() + + assert reader.structure_file == "h2o.rst" + assert reader.hessian_file == "hessian.dat" + assert reader.moldescriptor_file == "moldescriptor.dat" + assert reader.out_file == "wavenumbers.dat" + assert reader.unit == "kcal" + assert reader.hessian_sign == "auto" + assert reader.normal_modes_file == "normal_modes.dat" + assert reader.modes_prefix is None + assert reader.modes_file is None + assert reader.modes == "all" + assert reader.modes_frames == 30 + assert reader.modes_amplitude == 0.25 + assert reader.modes_temperature is None + assert reader.modes_threshold == 1.0e-8 + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_read_mode_output(self, test_with_data_dir): + reader = VibrationalAnalysisInputFileReader("mode_output.in") + reader.read() + + assert reader.modes_prefix == "mode" + assert reader.modes_file == "modes.xyz" + assert reader.modes == [6, 7, 9] + assert reader.modes_frames == 8 + assert reader.modes_amplitude == 0.3 + assert reader.modes_temperature == 300.0 + assert reader.modes_threshold == 0.5 + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_invalid_unit(self, test_with_data_dir): + reader = VibrationalAnalysisInputFileReader("invalid_unit.in") + + with pytest.raises(InputFileError) as exception: + reader.read() + + assert str( + exception.value + ) == "The unit key must be one of: kcal, hartree, ev." + + @pytest.mark.parametrize( + ("contents", "message"), + [ + ( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "hessian_sign = sideways\n", + "The hessian_sign key must be one of: auto, positive, negative, 1, -1.", + ), + ( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "modes = invalid\n", + ( + "The modes key must be one of: all, nonzero, positive, " + "an integer, a list of integers or a range." + ), + ), + ( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "modes = [0]\n", + "Mode numbers must be positive and one-based.", + ), + ( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "modes_temperature = 0.0\n", + "The modes_temperature key must be positive.", + ), + ], + ) + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_invalid_mode_options(self, test_with_data_dir, contents, message): + with open("invalid.in", "w", encoding="utf-8") as file: + file.write(contents) + + reader = VibrationalAnalysisInputFileReader("invalid.in") + + with pytest.raises(InputFileError) as exception: + reader.read() + + assert str(exception.value) == message + + @pytest.mark.parametrize("example_dir", ["vibrational"], indirect=False) + def test_parse_mode_variants(self, test_with_data_dir): + with open("integer.in", "w", encoding="utf-8") as file: + file.write( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "modes = 3\n" + ) + + reader = VibrationalAnalysisInputFileReader("integer.in") + reader.read() + assert reader.modes == [3] + + with open("range.in", "w", encoding="utf-8") as file: + file.write( + "structure_file = h2o.rst\n" + "hessian_file = hessian.dat\n" + "out_file = wavenumbers.dat\n" + "modes = 2-4\n" + ) + + reader = VibrationalAnalysisInputFileReader("range.in") + reader.read() + assert reader.modes == [2, 3] + + def test_parse_modes_helper_variants(self, monkeypatch): + + class MissingKeyDict: + + def __getitem__(self, key): + raise PQKeyError(key) + + assert _parse_modes(MissingKeyDict(), "modes") is None + assert _parse_modes({"modes": (None, "None", None)}, "modes") is None + assert _parse_modes({"modes": (4, "int", None)}, "modes") == [4] + assert _parse_modes({"modes": ([4, 5], "list(int)", None)}, + "modes") == [4, 5] + assert _parse_modes({"modes": (range(2, 5), "range", None)}, + "modes") == [2, 3, 4] + + with pytest.raises(InputFileError) as exception: + _parse_modes({"modes": (1.0, "float", None)}, "modes") + + assert str(exception.value) == ( + "The modes key must be one of: all, nonzero, positive, " + "an integer, a list of integers or a range." + ) + + monkeypatch.setattr( + VibrationalAnalysisInputFileReader.logger, + "error", + lambda *args, **kwargs: None, + ) + assert _parse_modes({"modes": (1.0, "float", None)}, "modes") is None diff --git a/tests/cli/test_build_spectrum.py b/tests/cli/test_build_spectrum.py new file mode 100644 index 00000000..25e58474 --- /dev/null +++ b/tests/cli/test_build_spectrum.py @@ -0,0 +1,106 @@ +""" +Tests for the build_spectrum CLI. +""" + +import sys + +from PQAnalysis.cli import build_spectrum as build_spectrum_cli +from PQAnalysis.cli.build_spectrum import BuildSpectrumCLI +from PQAnalysis.io.formats import FileWritingMode + + + +class TestBuildSpectrumCLI: + + """ + Tests for BuildSpectrumCLI. + """ + + def test_program_name(self): + """ + The program name is build_spectrum. + """ + assert BuildSpectrumCLI.program_name() == "build_spectrum" + + def test_main_dispatches_defaults(self, monkeypatch): + """ + main() dispatches the positional input file and the default + settings to the build_spectrum API function. + """ + called = [] + + monkeypatch.setattr( + build_spectrum_cli, + "build_spectrum", + lambda **kwargs: called.append(kwargs), + ) + monkeypatch.setattr( + sys, + "argv", + ["build_spectrum", "lines.dat", "--log-file", "off"], + ) + + build_spectrum_cli.main() + + assert called == [ + { + "input_file": "lines.dat", + "output": None, + "alpha": None, + "fwhm": None, + "wavenumber_min": 10.0, + "wavenumber_max": 4000.0, + "wavenumber_step": 0.25, + "kernel": "gaussian", + "mode": FileWritingMode("w"), + } + ] + + def test_main_dispatches_options(self, monkeypatch): + """ + main() dispatches output, width, grid and kernel options. + """ + called = [] + + monkeypatch.setattr( + build_spectrum_cli, + "build_spectrum", + lambda **kwargs: called.append(kwargs), + ) + monkeypatch.setattr( + sys, + "argv", + [ + "build_spectrum", + "lines.dat", + "-o", + "spectrum.dat", + "--fwhm", + "20.0", + "--min", + "0.0", + "--max", + "1000.0", + "--step", + "1.0", + "--lorentzian", + "--log-file", + "off", + ], + ) + + build_spectrum_cli.main() + + assert called == [ + { + "input_file": "lines.dat", + "output": "spectrum.dat", + "alpha": None, + "fwhm": 20.0, + "wavenumber_min": 0.0, + "wavenumber_max": 1000.0, + "wavenumber_step": 1.0, + "kernel": "lorentzian", + "mode": FileWritingMode("w"), + } + ] diff --git a/tests/cli/test_check_momentum.py b/tests/cli/test_check_momentum.py new file mode 100644 index 00000000..09a0de54 --- /dev/null +++ b/tests/cli/test_check_momentum.py @@ -0,0 +1,103 @@ +""" +Tests for the check_momentum CLI. +""" + +import sys + +from PQAnalysis.cli import check_momentum as check_momentum_cli +from PQAnalysis.cli.check_momentum import CheckMomentumCLI +from PQAnalysis.io.formats import FileWritingMode +from PQAnalysis.traj import MDEngineFormat + + + +class TestCheckMomentumCLI: + + """ + Tests for CheckMomentumCLI. + """ + + def test_program_name(self): + """ + The program name is check_momentum. + """ + assert CheckMomentumCLI.program_name() == "check_momentum" + + def test_main_dispatches_defaults(self, monkeypatch): + """ + main() dispatches the positional trajectory files and the + default settings to the check_momentum API function. + """ + called = [] + + monkeypatch.setattr( + check_momentum_cli, + "check_momentum", + lambda **kwargs: called.append(kwargs), + ) + monkeypatch.setattr( + sys, + "argv", + ["check_momentum", "run-01.vel", "--log-file", "off"], + ) + + check_momentum_cli.main() + + assert called == [ + { + "trajectory_files": ["run-01.vel"], + "output": None, + "selection": None, + "use_full_atom_info": False, + "scale": 1e-15, + "md_format": MDEngineFormat("PQ"), + "mode": FileWritingMode("w"), + } + ] + + def test_main_dispatches_options(self, monkeypatch): + """ + main() dispatches multiple trajectory files, output, selection, + scale and engine options. + """ + called = [] + + monkeypatch.setattr( + check_momentum_cli, + "check_momentum", + lambda **kwargs: called.append(kwargs), + ) + monkeypatch.setattr( + sys, + "argv", + [ + "check_momentum", + "run-01.vel", + "run-02.vel", + "-o", + "momentum.dat", + "--selection", + "O", + "--use-full-atom-info", + "--scale", + "1.0", + "--engine", + "qmcfc", + "--log-file", + "off", + ], + ) + + check_momentum_cli.main() + + assert called == [ + { + "trajectory_files": ["run-01.vel", "run-02.vel"], + "output": "momentum.dat", + "selection": "O", + "use_full_atom_info": True, + "scale": 1.0, + "md_format": MDEngineFormat("QMCFC"), + "mode": FileWritingMode("w"), + } + ] diff --git a/tests/cli/test_continue_input.py b/tests/cli/test_continue_input.py index a0c59dd2..2d75e976 100644 --- a/tests/cli/test_continue_input.py +++ b/tests/cli/test_continue_input.py @@ -63,3 +63,28 @@ def test_continue_input(test_with_data_dir, capsys): assert filecmp("run-09.rpmd.in", "run-09.rpmd.in.ref") assert filecmp("run-10.rpmd.in", "run-10.rpmd.in.ref") assert os.path.exists("run-11.rpmd.in") + + +@pytest.mark.parametrize( + "example_dir", + ["continue_input"], + indirect=False +) +def test_continue_input_examples(test_integration_folder): + with patch('argparse._sys.argv', + ['continue_input.py', + 'pq/run-08.in', + '--input-format', + 'pq']): + main() + + assert filecmp("pq/run-09.in", "pq/run-09.in.ref") + + with patch('argparse._sys.argv', + ['continue_input.py', + 'qmcfc/run-01.in', + '--input-format', + 'qmcfc']): + main() + + assert filecmp("qmcfc/run-02.in", "qmcfc/run-02.in.ref") diff --git a/tests/cli/test_msd.py b/tests/cli/test_msd.py new file mode 100644 index 00000000..9b1d6ac3 --- /dev/null +++ b/tests/cli/test_msd.py @@ -0,0 +1,56 @@ +""" +Tests for the msd CLI. +""" + +import sys + +from PQAnalysis.cli import msd as msd_cli +from PQAnalysis.cli.msd import MSDCLI +from PQAnalysis.traj import MDEngineFormat + + + +class TestMSDCLI: + + """ + Tests for MSDCLI. + """ + + def test_program_name(self): + assert MSDCLI.program_name() == "msd" + + def test_main_dispatches_input_file(self, monkeypatch): + called = [] + + monkeypatch.setattr( + msd_cli, + "msd", + lambda input_file, engine: called.append((input_file, engine)), + ) + monkeypatch.setattr( + sys, + "argv", + ["msd", "input.in", "--log-file", "off"], + ) + + msd_cli.main() + + assert called == [("input.in", MDEngineFormat.PQ)] + + def test_main_dispatches_engine(self, monkeypatch): + called = [] + + monkeypatch.setattr( + msd_cli, + "msd", + lambda input_file, engine: called.append((input_file, engine)), + ) + monkeypatch.setattr( + sys, + "argv", + ["msd", "input.in", "--engine", "qmcfc", "--log-file", "off"], + ) + + msd_cli.main() + + assert called == [("input.in", MDEngineFormat.QMCFC)] diff --git a/tests/cli/test_vacf.py b/tests/cli/test_vacf.py new file mode 100644 index 00000000..304b62de --- /dev/null +++ b/tests/cli/test_vacf.py @@ -0,0 +1,62 @@ +""" +Tests for the vacf CLI. +""" + +import sys + +from PQAnalysis.cli import vacf as vacf_cli +from PQAnalysis.cli.vacf import VACFCLI +from PQAnalysis.traj import MDEngineFormat + + + +class TestVACFCLI: + + """ + Tests for VACFCLI. + """ + + def test_program_name(self): + """ + The program name is vacf. + """ + assert VACFCLI.program_name() == "vacf" + + def test_main_dispatches_defaults(self, monkeypatch): + """ + main() dispatches the positional input file and the default + engine to the vacf API function. + """ + called = [] + + monkeypatch.setattr( + vacf_cli, + "vacf", + lambda *args: called.append(args), + ) + monkeypatch.setattr(sys, "argv", ["vacf", "vacf.in"]) + + vacf_cli.main() + + assert called == [("vacf.in", MDEngineFormat.PQ)] + + def test_main_dispatches_engine(self, monkeypatch): + """ + main() dispatches the selected engine to the vacf API function. + """ + called = [] + + monkeypatch.setattr( + vacf_cli, + "vacf", + lambda *args: called.append(args), + ) + monkeypatch.setattr( + sys, + "argv", + ["vacf", "vacf.in", "--engine", "qmcfc"], + ) + + vacf_cli.main() + + assert called == [("vacf.in", MDEngineFormat.QMCFC)] diff --git a/tests/cli/test_vibrations.py b/tests/cli/test_vibrations.py new file mode 100644 index 00000000..f7baafda --- /dev/null +++ b/tests/cli/test_vibrations.py @@ -0,0 +1,37 @@ +""" +Tests for the vibrations CLI. +""" + +import sys + +from PQAnalysis.cli import vibrations as vibrations_cli +from PQAnalysis.cli.vibrations import VibrationsCLI + + + +class TestVibrationsCLI: + + """ + Tests for VibrationsCLI. + """ + + def test_program_name(self): + assert VibrationsCLI.program_name() == "vibrations" + + def test_main_dispatches_input_file(self, monkeypatch): + called = [] + + monkeypatch.setattr( + vibrations_cli, + "vibrations", + lambda input_file: called.append(input_file), + ) + monkeypatch.setattr( + sys, + "argv", + ["vibrations", "input.in", "--log-file", "off"], + ) + + vibrations_cli.main() + + assert called == ["input.in"] diff --git a/tests/data/momentum/gas3.vel b/tests/data/momentum/gas3.vel new file mode 100644 index 00000000..c5a8039d --- /dev/null +++ b/tests/data/momentum/gas3.vel @@ -0,0 +1,459 @@ +151 100.95969513 100.95969513 100.95969513 90.00000000 90.00000000 90.00000000 + +X 0.0 0.0 0.0 +c -7359204155468.2539 68541144997.4977 -3169613046325.9409 +o -9369747446448.7656 1589871065794.5703 -4637551523258.5293 +o 1209384165520.3875 8423651935251.6602 -128200237533.9516 +c -863424643223.1023 -1497015980980.9771 -5468392586123.0078 +o 8139617943320.1465 -899118415587.9293 5131548566029.1113 +o 2401475614444.5762 -4853390760086.8525 -6914803948875.1406 +c 4430550361277.9268 5813796325334.4668 1892464811351.4810 +o 507103302404.5256 7707076426220.9199 -3424300617159.1128 +o -864393339754.6256 -8076287584056.6631 4103869000898.3135 +c 159284614788.5316 2955452087604.4268 1083738906816.8142 +o -6035272140991.1533 6043621646970.0000 -2434552909188.8633 +o 2591449423240.6333 2691802514040.3149 -4232970024791.2871 +c -2998933446965.4521 -1133927036444.2854 -1644610145116.5115 +o -777833588590.4871 -9944730861214.7695 -5091930153683.7500 +o -594466412749.7330 566494272474.3932 4058285316386.8979 +c -337490484636.0740 -3832742661581.9282 2046429650895.4014 +o -4727461075955.7500 -5786322939979.5615 7563538613100.3643 +o 4412967081266.6787 568019407999.6757 -5458359022353.1826 +c 729131491040.2061 -3767203546180.3667 4751868135605.2412 +o 1661673320779.2332 -5972543449572.6514 5393484730907.6982 +o 1662110296187.5103 -2472026501379.9238 -821531165777.5675 +c -5859934433774.3496 -1347975390983.8206 -607926810264.6373 +o 4851154754043.6055 -2596521913324.6948 -3015788190039.2983 +o -3134168879233.6528 4497685069512.3418 -4709378060927.9756 +c 5099713281541.5322 -5998134028011.6982 -1260129179125.6050 +o 368118924856.9216 -4301394059810.6733 1486698912698.5769 +o 63492520478.7094 1051199996803.0190 -3480709915268.1206 +c -2895449578359.8442 -493129426826.1655 1512670977749.8728 +o -4176822773719.5474 -1615642396283.2612 2299581072908.1494 +o -3444759267330.2959 -223144537900.7296 -3762288475114.3862 +c 1126746231283.0415 -4365462147154.1084 -288400073283.8458 +o -4614213377359.7109 -1882729197996.5132 -5982873169724.8799 +o 8895028679583.5352 3014749275525.8149 9495154519471.0605 +c 1384185229868.9426 -2237545885500.7964 -2103249652121.5217 +o -681807441511.4813 7390896009193.3809 401066514102.6563 +o -997909466022.3232 -7171817624724.0801 -5561588649796.7461 +c 3046317219562.9663 -1193861120446.9583 -2212389905418.8843 +o 3149725902334.8525 1256232619261.0159 -1717165292787.0562 +o -1849962007540.7969 2204086851928.8130 153085958289.5429 +c -5215656674118.6924 2557868943334.7495 -2276260921603.7168 +o -4832790309862.9365 547616572753.7320 -1312042403497.9707 +o -61658939324.5376 -2685277542671.7959 -1297400155446.0500 +c -232864466734.5857 913587931480.1809 1336551485193.9158 +o -698939985997.8049 6472372186980.5000 7426035773153.7461 +o -730768068621.1980 -1790605071196.5947 -2948308945481.0283 +c -5309966081386.7881 1993441445717.1357 -5730187472244.8535 +o -3780381436203.9473 -241998345040.6928 -4433268121884.6680 +o 92115713447.1095 221715524357.2865 3599078963587.1860 +c 1278287770099.0234 -408563744557.6119 -425945146532.3171 +o -181338642121.4144 6183261117721.8125 -2192807013047.3445 +o 2278675188128.6680 -8154324210536.9805 2266416716942.5425 +c -4840414844909.5254 1329386106870.9106 5727258890793.0205 +o -7620242614671.2314 2133026018096.6409 -2109596966854.8384 +o -6413583046143.1904 -7065096856624.8809 11990929784095.4727 +c -690682233074.8040 -4152901238930.7822 -196344409667.1185 +o 2608425322854.9604 108557629816.8501 7184621743921.6982 +o 1835878426075.3770 -5067690360417.3818 2332513009724.9292 +c 268363191333.3557 1989508192078.7996 2957246500598.6289 +o -2802653745052.2222 8189898430008.7666 4295210510823.6313 +o 6877534346799.7344 -6888185310722.3691 3810788028213.1528 +c 1288715355425.0076 3776018508775.5024 -3385807698589.4976 +o -3894793346851.3809 3063762785038.5278 -7527200303952.0283 +o -1713353754991.6084 3254602987291.1006 -2985772912160.2065 +c 4026658989177.6221 -1243322102730.6169 4847377376229.8955 +o -4264490555189.5332 -3895973262536.7861 2973728438381.6577 +o 6294079677750.2100 6234455223141.6738 6586943804502.9023 +c 1630675545448.4937 -356344712477.3820 2367104144757.1167 +o 912195877107.6111 6357367474097.8037 5089271738950.7656 +o 1254876426822.1536 -8401502044942.6338 -1356705026649.7625 +c -2942154945114.8447 -819372861602.5905 -951573223593.0415 +o -1620139465844.4490 -2777751745971.7310 8151148227886.6113 +o -6531497395627.8867 2622162870456.8267 -8830624415525.0215 +c 114124677224.8425 -1633689833703.8379 38824147748.4254 +o 1891706409432.3538 2110933415329.9070 -10572377119973.3105 +o -4720224014005.5967 1468852940823.6643 5988049648906.7666 +c -13993245339.4298 -497757875806.6714 -5758097881785.0293 +o -17564514427.7346 876578799638.1738 -516351304888.3240 +o 1912661588548.2642 -1757853300127.3696 -5037079337206.1621 +c 5404999858384.1963 -4147955137277.1055 -4245445496935.8320 +o 4743667540872.4814 -9213436475926.1309 -6425339137967.3779 +o 924255287191.6110 -2500716103722.4019 -710678171139.3184 +c -173505876048.0052 415188356466.4378 -934336907605.1771 +o -929712775616.4271 1369002173523.5439 -4952476177886.9395 +o 2874843654609.0884 -6261898519830.7783 -200121198441.2933 +c 3898855915759.5396 -1268639300356.3533 -4770023514674.8799 +o 4448736794093.7607 -2959247999691.0986 1245447149033.7388 +o -394232869113.0312 2258213681110.9536 -2257305902249.9941 +c -309224199403.7102 4830296588281.6953 -157464837363.7059 +o -4563254845802.0830 4000419025728.2075 6677152755336.0000 +o 2005651167286.8367 -4457710562643.1299 -3177858906748.7363 +c 4026939383779.9834 -728896303154.8972 -3623898441131.9326 +o 3155094653937.4087 4432069590095.5986 -4498781102827.0645 +o 3953970281820.9966 -6754341835493.8174 2562802687594.8145 +c 5632086145990.4736 -3098874944139.2534 -1780169937140.4548 +o 7018237097234.6611 -10247941906516.8750 5098457680719.2285 +o 1314957276521.0588 7091022637352.4688 -4850919110488.3779 +c 1250618435891.2896 4945789062621.6855 -4128617996313.9912 +o 3581210303664.7632 3579213610606.8823 2424524421132.3296 +o -4275846636135.1133 -4894951120749.8008 -4889835222715.7773 +c 177345217535.7344 -1009038157381.0752 1830032509567.3655 +o 4189761539528.6279 -2937944417423.0879 -1552196667876.2764 +o -2878154239182.1655 4091817410824.7109 -1753272072713.0642 +c 2969185886086.5518 5409820380779.3945 -1238816069490.3198 +o -2793808435420.2397 3082892771123.3120 966067725147.5007 +o 4276809405670.5083 2964210842538.4580 -6300782487115.0146 +c 760526522879.0912 -2378687450411.4219 2776121756467.3589 +o -1101897456585.4319 -2407095743288.3994 -2996598170458.2930 +o 2798785289530.3691 333304210306.3504 139570923188.8932 +c -2529766877458.8213 -1380007003273.0159 -2269521035223.8062 +o -5817446812495.1318 2589113818255.7510 4737732872701.7119 +o 5030338922899.6943 -2466631523967.8921 -5235141804692.8916 +c 144105864494.9804 1028164746611.4395 3081750350518.9819 +o -6738255751005.5811 1026606495796.9307 8493827327734.5322 +o -175005621061.6309 3480711311738.3018 2454787010687.3047 +c -1103939011138.6033 237211954034.3299 769416195454.4666 +o -311437922555.3734 -694695116969.4845 -13444155996872.6816 +o 8975852528745.9492 -5680525937804.0244 7982180504685.0049 +c -3489197648657.6416 -4859601740800.4629 2905090343109.3662 +o 852616725774.5983 -4039428634284.6895 1249399991770.8887 +o -5468478996661.0537 -6817766465901.2588 1250839124352.8364 +c 1032316283015.3816 2287463382113.5586 1086763796834.9075 +o 2167764434390.1838 3215490922544.5557 275414803120.8027 +o 5446613027357.8506 6888143548912.6230 4260702026703.3896 +c 275454019293.0178 7408661028.8487 -284405758327.1956 +o -468085405327.3887 4216936048964.3594 3824488534853.3813 +o 4537787002255.4482 -2691784532318.1768 717364870321.0105 +c -3800370325077.5498 9673432618038.9551 261498535140.8681 +o -4396579481239.5718 5378201438710.2920 1456912298680.5737 +o 3201593701064.1138 -1418477884891.6284 4971011466553.5029 +c -2845543459283.6421 2616662615514.1436 -1570139475011.7573 +o -5137680284204.7891 2465058347319.0947 -5935532076016.9307 +o 4839238523453.1807 3473280039530.7837 2234400190762.2720 +c -4324795066908.1704 -1775634148051.5740 6366567243649.4785 +o -5273392891245.0303 -4975529916360.4121 1993723548100.7107 +o 2407212466732.7178 8992315293544.1445 3522968123613.6885 +c 2400446654318.9424 -974603554861.0736 4008028773450.1836 +o 1642291488199.2051 242115821078.3786 2763180474885.0396 +o -1170028302886.6355 -813471081570.6118 2062112830270.6526 +c 240711321436.6337 801779792194.5403 -2212406069717.1846 +o 2665650060469.1548 -639934447274.0302 -3757140529651.5171 +o 760759521976.7845 5878740125226.0166 1863092910888.5281 +c -140611259732.3582 -581287596469.5048 -3165822909955.7563 +o 1427593557764.2090 1122592443233.5320 7266708188167.6934 +o 993678386545.6985 -6129254539324.0381 -3252872577163.3086 +c 754731264824.7163 2971434644784.9336 283139008347.4620 +o 138745963892.1247 -3897430133081.3677 -1992977710650.5693 +o 1272995742540.9629 3236140459079.9150 5084547680876.6562 +c -3612236467448.6333 5872141243316.6104 3362030377713.0493 +o -5727658987470.9346 2996769510169.3911 -1259410895676.7710 +o -2484445507261.2593 8179343604481.0957 509835465442.8241 +151 + +X 0.0 0.0 0.0 +c -4264084469081.8643 7921895179243.0117 -3505711119148.9331 +o -1821365639944.2163 1082863165753.4263 2974262068036.8623 +o -7724912168823.7793 2342478367076.1152 -6998021011714.9287 +c 9519295883351.1113 -2784428792431.5298 2160936461818.9915 +o -947122656647.5078 -4786808530306.7852 -9535083776283.2461 +o 3015637723522.3511 471563864136.3259 2427534962780.7090 +c -3524757287949.8354 -1916542412070.2686 -1518588849409.3396 +o 2147845214488.0588 5007804165638.5156 8725907138997.4961 +o 3263410521458.2290 152308796390.9377 -5629548428748.5859 +c -2180363006163.6482 6578406374891.9170 -6572685389808.4199 +o -782306083305.8898 -1514930611066.9480 -3593471872381.9692 +o -677345513739.0365 6779776424351.3682 3074820077633.4883 +c -1043870378681.7916 -5147400810176.4521 3394789899768.7451 +o -2590061116064.5195 -4225687497698.3916 3342880689884.0107 +o -1685854486.5927 -1437840256031.0291 -8004900129785.4883 +c 999595261260.8962 -2482503546976.1880 2005145092034.1428 +o -1158386773081.0669 -2081180054616.4180 -6274647243996.8184 +o -120956358102.3070 -3595892940623.5498 8161196744185.1650 +c 5772314848225.9355 -1802562622450.7021 1533273778137.1611 +o -1387136493067.9248 -6433526750050.1729 5974774065228.4678 +o 55485481530.0873 -2673010695455.0601 278601716813.4749 +c 4093003867888.0518 354839390188.5184 -5862719633465.9160 +o -5373111817633.5420 -2920052306040.7192 -5026017576497.5068 +o -197714834588.8141 3481968295862.9595 1806373157161.5413 +c -2648431296754.8657 1980301425294.9155 -759280305500.4271 +o 5864664984266.9863 -6462283359780.5908 -4193713554714.1753 +o 91467881605.9989 -2245930386402.0879 2025211053980.6094 +c -5350370474253.4951 284259611791.9962 2978154661931.2651 +o -1069489767217.4238 -3140683474558.7437 -4682724885565.1660 +o -4037970010424.4058 869792684849.2587 2141969822228.1729 +c 2978713288623.9639 1633358083956.9875 2409337041047.2451 +o -1310664566237.2073 7659108181312.8965 1376956541317.3862 +o 3850085288648.6230 -10882849472564.8145 -115167071937.0303 +c -2447348772192.1753 1591095607653.5203 -4038564644010.1641 +o 3962073930861.3472 4004977086403.3008 2716990719086.9395 +o -2721511465678.1821 -6560211052603.0420 -5962410734118.9912 +c -1336367933005.6467 1257865044597.8152 954284559812.9525 +o 4780248734085.0469 788685412788.4382 1209361834472.0493 +o -436202931233.3441 655376278807.5466 -4929660035053.4961 +c -5474000888502.9277 2211481328883.5010 -3802880937585.3335 +o -1264190085056.0098 -2797514983539.4517 2232330508382.0503 +o -2831033150414.9058 935487783115.9286 -3400097833770.2822 +c -973882988627.5955 3047489831911.9766 1593883684712.3020 +o -3047221130384.8027 7477538891796.7832 2600927198097.6597 +o 2283941345644.2827 -4765416160324.8184 1307763840403.5693 +c 104672030450.9710 -1522223468737.1060 6496810761973.4414 +o -3544871064728.4297 416185533524.3905 -126807737596.8489 +o -3682132945861.7734 2101547819382.3281 -9534151952384.9375 +c 2656414319837.7412 -4179579716762.5518 -5879364051059.0645 +o -378272353741.7572 6319318277922.2773 -2821829989442.6831 +o 1231553461600.1616 -5303340999769.5186 7006220405458.1553 +c -6144455303826.8457 -2423980454488.0977 10793028857717.7070 +o -4398925213586.1729 5074641799582.0010 6908451601221.3887 +o -7445023477292.6562 -6919436183552.0576 -1802000034913.8350 +c 3809286461732.8076 -2131264695037.3462 5981026692096.6865 +o 865703469133.0782 -372120393124.5545 -1428887128725.5161 +o -68602992640.8317 -5551103211794.5059 5666469503968.0635 +c -240064112999.4902 1319769536173.3501 5260144624125.5244 +o 473582460888.2273 7927307938462.4131 -2048997130964.4902 +o 3689896822921.6436 -6314433901706.6357 7718784535403.9287 +c -7246413181262.2744 3907745952588.3062 -10163006115451.6953 +o 1914190298394.5449 1369995909366.2432 441005506207.5826 +o -796960985955.0320 4222120986576.0781 -4971525927112.3721 +c 49078596387.4406 2278865221903.5615 4954106861617.2881 +o 962983232729.5538 3512831362996.1484 -1562763898889.6306 +o 3706264087740.8037 -3914732145556.9492 10138628174421.5781 +c 2116295297770.5278 -1215522435782.8806 3015383438205.0669 +o -12385183349.5281 4571447103306.4248 -4300270597329.0723 +o 1582467922159.7468 -5812142579956.0391 7168572254811.5098 +c -5737112728069.6416 945601334158.0170 -1324280458513.2505 +o -7950324034653.2920 -1832199912352.7148 -5477543222605.3262 +o 2606462297422.9526 404269830071.4670 5173599517391.6807 +c -529761663876.6219 3098490153397.6899 -2681299855780.3916 +o -8364429769141.8418 -2248973548783.2988 -3343767338233.4927 +o 6207655318633.3213 2117872136137.8479 1113680555305.5117 +c -1433628431428.4033 -1196512163073.0073 -7706846001155.8262 +o -1154576804269.4863 990548084247.9750 -3418473821943.9590 +o 3985769549674.4805 -1260996929604.7092 4794552554.4227 +c 1920896848097.8928 -10689613194713.5625 -3124131729404.6724 +o 4262538884662.8491 886138761693.0522 -7384257249865.0898 +o 3354326792016.3291 -6673096685464.2012 113993131381.2825 +c 886499931140.3259 -2388934251112.2368 -3848604637992.4136 +o -3877563636312.9199 -3129707430601.5376 1453933972630.3098 +o 5507467728326.4111 615725718630.5117 -3840890377581.4390 +c 2598266264988.8545 617678083387.0020 -3064386431261.9990 +o 5861504449055.9307 -3714465258430.3042 -1786464372003.4697 +o -1309156748964.3491 1710697757776.4717 -191023928279.8422 +c -1045272792333.2198 -1300714737529.6746 3189401752152.5703 +o 1319508966220.1211 1400353170823.1038 -4548272371161.7979 +o -3133416405126.3438 2527693056218.3394 5303326992973.2539 +c 2301118728159.5547 -5034539875610.3730 2179975780739.0947 +o 4467215263885.2158 -3917562273106.5356 501623920514.1054 +o 3243058166180.7236 5023798920608.6797 -6474970990266.7822 +c 3178015760394.3774 1483748391762.2500 6392115208426.9971 +o 4489991492445.5684 -12190075821190.1152 -7741633041858.3330 +o 4824612142402.7607 5968800084559.0645 1929000123060.4048 +c -1457210887143.5454 -3208337094103.6377 -1264670678774.7314 +o 1553107677158.6577 -3090989987775.3433 2085873243534.4060 +o -231711956778.9382 7732226231723.9561 -6319750169114.8115 +c 2153836040212.2393 -696027553322.3723 -3269413668826.5190 +o 27394015734.5456 3863421843770.1265 -3456772399297.9541 +o -298557844208.6594 -2971681427414.5630 4111867840622.5649 +c 2268634970251.9766 2440305438459.0737 -2543779088800.6602 +o 1850341888581.9507 7349246380117.3311 2158189335927.0549 +o -96486078655.9234 234184195430.9653 -6083876050327.4043 +c 995513213615.5012 -967516141656.5142 -3960057577778.9341 +o -1164052823556.8999 -2681798409617.6143 -685129417001.2546 +o 2529026132690.9004 -186815388645.4462 2938063339319.2842 +c 737775318397.6060 2511345395810.6831 927964693467.9779 +o 3451642754626.3862 -3529990960367.2793 -5208875926785.4609 +o -6507609254462.6621 793851757420.9181 2462015072855.3340 +c -4204729305203.0723 1795273919850.6287 5387329415887.8711 +o -5096479145219.3916 1134315861740.0898 6952443080939.7812 +o 1914357602038.9304 2435302677901.5479 1356414474277.0610 +c 5266677922155.5957 -5262968310234.7061 -2611429009869.3066 +o -5421490109219.3887 -70571614661.4825 5358209376868.7529 +o 8767336996084.1631 -1751539843474.1936 -7947800557344.7998 +c -2236528876376.4907 -6531446050154.3867 935041657523.0873 +o -2683869095702.9707 -6212879327819.3467 -1483482582157.2695 +o -2376471551570.1133 -2395077710131.7148 5141788052255.0088 +c 5406445619757.8867 5171593015397.4873 5764697998073.1016 +o 369009964263.5590 1725330156926.3650 293618566817.5977 +o 3387222746877.2734 5403163662669.5996 363794171135.1129 +c 2531810483125.4116 87583371037.2084 6636226585096.7324 +o -1246591883890.5396 3553414185468.8652 -3998196138080.4360 +o 3328527996130.4863 -2193125704008.1108 3048436248352.2656 +c 64158084366.0634 729275387299.4366 6481104663699.1377 +o -1939636235776.5134 2557780744449.9775 -4154350957274.0991 +o -1878980848779.5398 7347143532901.3281 5459214884731.7344 +c 1319140801413.5823 2488088159284.0269 -4792044400066.8164 +o -5813551826478.2998 2539273280367.7412 3792369116321.5220 +o 2555561851712.0786 2953928434408.1338 -4740364922064.4443 +c -214140298968.5481 2416909230040.7754 -2987877070431.9082 +o -6373856218721.6426 -5712238342989.0146 9679754340023.4121 +o 839328469815.1257 6396941034694.5879 2153978606678.4558 +c 2684294947384.9268 -307675182689.4861 2573061000119.8477 +o 1600117884108.6191 -8447958575.0797 3092814308694.0723 +o -1496822522652.3391 -974244176177.0027 2272728471404.7773 +c 1211652567450.4399 5405978191133.2080 -1022689324901.3551 +o 977079158599.0997 1433784985942.1287 3920399805592.3408 +o 1473232895559.2603 -51661450396.7491 -6463903699329.1035 +c 1956413831644.3511 -3005707228793.8379 4789561695612.8086 +o 427354544736.9632 -3303515001491.7598 -6243781875377.1465 +o 261183207923.6927 489849731363.1367 4173515957177.6675 +c -61160738096.1895 -2454071086957.6895 -445265925884.1904 +o 1348259362844.5798 4839680584742.3096 5503128729382.1533 +o 540379010771.5770 -1535575566156.5027 -2091198836069.7847 +c -5111947582864.1416 6349069713564.9453 -12399885831629.7637 +o -4560076444811.1689 2485065209924.9805 8221182478198.5615 +o -1777499802047.5759 7264873253361.8662 2739992061110.0264 +151 + +X 0.0 0.0 0.0 +c -2545044280520.2251 10963383346173.8574 -3203690068455.4863 +o -9466866864061.9746 -2212930475245.5728 -2983416185353.1812 +o -1967333399148.1086 3791505711281.1592 -1579060237895.1826 +c 10744709355755.3105 -5468332729553.8066 -543532538650.6931 +o 3311206443033.6333 340970106036.2046 2495966614887.5649 +o -1730943779057.5461 -2942033140845.5830 -7830797932923.6689 +c -6031161479759.6611 -5458701926978.3193 -1947921423411.6055 +o 4084091086509.6592 11055492638411.6641 803621659888.7178 +o 3338298050078.1128 -3061905895902.5444 2706765643627.5366 +c -3090620762769.3687 7234678222185.3457 -9168889626109.6348 +o -5581758383811.9180 5122183990320.5996 2052560143312.3501 +o 4660303383058.5342 128049111960.5650 -877779083938.9368 +c 696889126281.0385 -8946767475979.7793 38185797275.3635 +o -2512405179545.6992 -6130278308412.7314 -2953257884159.4565 +o -1544512705977.1233 2873028335988.9272 711182544700.0818 +c 1357340632942.0676 -1747889147882.3997 826780652081.7455 +o -4611265812422.5059 -5585314527586.9043 4339262679646.2134 +o 3038558774108.7812 -996581914160.5317 -1409211755788.1074 +c 2523765417236.3770 -5378691831262.9521 -899351316751.7815 +o 3246327867207.4199 -2153661248957.0371 7637023302319.3008 +o -2568160604891.6162 -4719594091304.9150 636194108705.0640 +c 6187458110333.7520 1658013456211.3474 -9225594069709.3633 +o 538836042650.3669 -3962543042135.8638 430255711616.7021 +o -7799023854800.9092 3584982124917.5361 -1482493966720.1904 +c -4674446848812.8682 4297287001960.0703 -1841665443934.6250 +o 2784844674840.1055 -8530784339873.1494 4475159779158.2422 +o 4878138516918.0215 -2255184992196.3047 -5959455499111.4512 +c -4863870489866.3516 -832466938063.2787 -2528495172974.4609 +o -3727725854275.2026 -1222352973411.3000 5299580673490.7031 +o -2172585104050.2046 -306568480012.3596 -3721090008699.6777 +c 3230008596897.3882 2109325236384.2559 2432433016277.5947 +o -4997098592633.3232 -901664124846.2058 -5344263081191.2178 +o 7571762053934.0859 -2772517016603.2373 6733085136023.6035 +c -923450199662.2500 1884752442166.6570 -2973142877866.6367 +o -15209699741.9343 6086616778965.3057 765293776994.1105 +o 83904333281.0245 -8926197241407.5840 -5104291419628.7305 +c -2834323630119.0620 2896413232876.1274 -41403286003.1288 +o 5144725624106.5850 -843894442870.9093 -6748438233681.4824 +o 480434410593.1254 1169803665643.6650 3634780827983.8975 +c -874325942658.9336 -3347829704442.0615 -698469996162.5105 +o -6826509513346.4697 3250346669543.8784 -2233277158180.8164 +o -1104722610589.2307 -947614383570.5895 -1453835931851.0879 +c -858202025527.8628 3701855938410.1929 2997695258687.7969 +o -199495427295.8696 5320903911751.1055 7323683669117.2197 +o -720512326017.9690 -2865388403572.6670 -4229785124471.6299 +c 98108093914.9851 -2114153260022.6184 290996687711.7623 +o -5720242929982.0625 1207052487735.5586 -6475529970059.6650 +o -1836780532675.3667 1819467247704.4639 1249085991005.2390 +c 1612965404367.1184 -1877150356283.6372 1121953895271.3333 +o -744798110687.7638 7976151965400.3867 -124402113637.0212 +o 2514837475949.1909 -8787988056815.3350 -957775437235.6566 +c -9086124444126.1406 -5412776325527.3105 2868193894975.4438 +o -5204067906223.4355 5609494953851.4902 1499132420728.0725 +o -5202705412586.1270 -5382329461297.9502 10175337965846.2500 +c 5724873525658.5273 -1038372630378.2628 6822655346457.9209 +o 41303451849.5209 -907314560097.0050 6428914155899.4150 +o -510892734602.0159 -6188880333110.7393 -2414216111500.2598 +c 2356773758164.8770 394545631093.8134 3846388590546.3750 +o -3592602708846.8516 9021527298030.4395 3461978482975.0688 +o 5993313990173.3574 -6592343317353.1816 3720214753159.4639 +c -6653250902532.5107 1575340129346.7661 -4302742174905.7124 +o -1388297139832.1602 4107608758804.2612 -8257918316992.8467 +o 1857700287500.8726 3634952443608.9971 -1241597553118.9395 +c -1788269490426.4314 3141370636797.5938 5424345790258.9453 +o -1704003789860.6926 -3992658925567.2954 1528595782383.3035 +o 7973043694734.8652 3004624261571.3433 7270391275306.5498 +c 1755649450430.9265 -2034291002479.4294 1459496422264.3013 +o 688909734249.1580 7114224247569.9824 3844035722627.9443 +o 1299918188617.6545 -7841155086172.3555 432755777054.8887 +c -5199815742119.7598 1037085875739.0249 1294794121038.6643 +o -3071582958992.9951 -3263886324472.4502 3527404759080.1372 +o -3128442830903.4766 1733354844581.0312 -5858164647735.1875 +c -2862008076255.0957 4683563346302.3223 -3228974782785.9014 +o -39037197081.8924 -1064042314793.1643 -8172858669241.0439 +o -486489047075.4633 -151416319974.7084 6155223464174.9727 +c 1316956231231.7505 -949618484853.1382 -691295406498.0547 +o -155513869220.2010 1137590231938.5596 -1282175326414.9016 +o 1003562035600.7601 -1647940984414.3560 -7829313328393.0605 +c -638423363194.2964 -6291070850266.2480 -3665046009153.3491 +o 7154435978017.9150 -9111730608221.0547 -6585590500907.0146 +o 2808162951107.5811 -624317135404.9647 -729201247637.4861 +c 1322711618647.1475 -5029862868549.2998 -3929520332892.9551 +o -1645272951469.4502 4183271858593.0435 -4331027713523.4438 +o 3625565861212.4316 -4955065752165.1484 1910604281626.8367 +c 842515717820.7129 1119357823511.1772 1397037140917.4072 +o 3842695207492.8677 -3682458639674.0991 2495113869628.5615 +o 2332398232472.9771 1229913930457.2756 -8022230022633.1338 +c -1179590832758.7458 -4594097818236.2559 3561604372195.0137 +o -2291486377237.6587 5961532567222.9746 1732542483564.0483 +o 456596976458.0675 577131284512.5200 -1109354510562.1052 +c 1628896677357.8303 51205113290.2786 -151170034709.1362 +o 4177366460688.6870 1924405945493.5505 -4149253358012.5444 +o 4479921655625.4580 -4761693025885.3096 -276889096283.1331 +c 395458156158.1849 1880336287542.5271 329071172704.6482 +o 8580461197007.2500 -12811768349038.4531 3202895820231.8784 +o 3371415733262.2100 6053460617423.8545 -4511486274969.5518 +c -1371069774250.6367 -2556110423388.6313 -224415810953.7107 +o 4514281190541.4805 5534453154722.5576 1427377793235.0427 +o -3246891169879.1885 -1278234548289.4062 -6685049101002.2061 +c 2120368150446.8457 784885084163.1168 -5561325682935.9531 +o 3448060927149.0630 -3348486018901.2114 940442178532.0486 +o -3631046015160.2983 3145814889610.2002 1350907439896.8940 +c 367341352510.9019 799792329637.2648 -3418044544194.0391 +o -3032723156355.7080 3905738486303.0654 1893271857089.4583 +o 6375180460806.1992 5350211266122.9004 -5436073245967.0732 +c 837072341791.5881 -721141197888.2107 -3386624754108.2026 +o -1657997986604.4053 -3945205369533.0557 4003250092081.6279 +o 3240755836763.3989 723221717060.4169 -2214390865688.9404 +c 2474633737444.9600 2916444282394.0625 1332847508471.4590 +o -5380530213802.3330 -27946945022.2314 1528636483319.5862 +o 903418880376.7808 -3052166421139.9312 -4675462921361.2861 +c -6432635584831.5303 2062944287024.6213 7443366079563.2842 +o -2717923612028.5083 -1641123037809.9329 7138692872609.8848 +o 911321695830.3284 5240228384478.8164 205570223703.4513 +c 7809726332182.4580 -7019753004758.3369 -4475918398898.4844 +o -5491976281722.6338 1764358995227.6995 -5488970371258.0439 +o 7271766386886.9326 -2538712124883.4209 4085708723859.6387 +c -883295359427.7451 -6428461061170.8926 690691261138.9541 +o 298910166583.6567 -3003687157853.5225 2238725865746.1133 +o -6690909043115.3877 -6314684273333.1006 1807317748872.3093 +c 7428906813800.0293 7546926148667.9941 2511154301144.1387 +o 98775180279.3968 1076499665936.1364 4962307029162.8486 +o 2506050340263.1738 4785043016657.0801 -1628969686291.7659 +c 3874385052531.5601 179107694113.0739 3088397591245.0029 +o -2052089443983.1521 4418287165307.9414 4238677865040.0562 +o 3311906416556.3550 -3059657909271.0923 -2335966826290.0195 +c 1873837366520.0493 -3396962248387.3384 8719638436832.9189 +o -6876893917277.8184 10576135007098.7012 -1583146893246.2383 +o 1523084214838.3242 2916099285532.9976 1496678605044.1094 +c 3317334795179.2134 2952034341415.9775 -1539884748250.8884 +o -7519632749859.6982 2284177242741.8198 -4049022924355.6577 +o 2655344007822.9956 3205654143554.4507 446651988618.0549 +c 1915745424040.1716 6141700848960.7109 1334343920548.3679 +o -7672753704855.7373 -8237944923568.4326 3457250482313.0942 +o 271067478049.5915 6242585460172.5674 5581660202456.1875 +c -500975748643.0938 385065898231.2751 965821147297.3483 +o -2765239825534.0557 405129903733.2458 1859399958698.7979 +o 5358963362584.0176 -1964716782311.3914 5054596997461.4111 +c 2288446265408.9800 5786795055741.5986 -1737290109208.4248 +o 2011303012527.6951 -3079053171576.7720 -4634065055433.8506 +o -211895519469.3512 4430219626756.3018 2471860066354.6152 +c 2721932461503.2949 -5682800471153.1914 4785514272951.5312 +o 308225746188.6467 2061701283437.0957 2098071920893.9189 +o -93036114932.7451 -3103325378323.5103 -4093662333933.0747 +c 291902697358.3995 -1866855039742.8450 3005642895599.0479 +o 382700096373.8336 -1406069163772.1797 -2274877269644.6514 +o 1327244673573.2195 4337900379257.5308 3240456536158.3730 +c -5283889308714.7236 7140622006805.0625 -503037086478.7647 +o -5078997970176.9355 2125878775052.9143 -2465979320102.6221 +o -1606302970205.8083 7710019085870.0410 4573620254756.0518 diff --git a/tests/data/momentum/two_frames.vel b/tests/data/momentum/two_frames.vel new file mode 100644 index 00000000..9a2ad59f --- /dev/null +++ b/tests/data/momentum/two_frames.vel @@ -0,0 +1,12 @@ +4 15.0 15.0 15.0 + +X 0.0 0.0 0.0 +O 0.5 -0.25 1.0 +H 2.0 1.5 -0.5 +H -1.0 0.25 0.75 +4 15.0 15.0 15.0 + +X 0.0 0.0 0.0 +O 1.0 0.0 0.0 +H 0.0 2.0 0.0 +H 0.0 0.0 4.0 diff --git a/tests/data/msd/diffcalc_O.in b/tests/data/msd/diffcalc_O.in new file mode 100644 index 00000000..6b2122d5 --- /dev/null +++ b/tests/data/msd/diffcalc_O.in @@ -0,0 +1,7 @@ +window = 100; +gap = 10; +out_file = msd_ref_O.dat; +target_atoms = O; +FILES +traj.xyz +END diff --git a/tests/data/msd/diffcalc_O_start.in b/tests/data/msd/diffcalc_O_start.in new file mode 100644 index 00000000..0f819593 --- /dev/null +++ b/tests/data/msd/diffcalc_O_start.in @@ -0,0 +1,8 @@ +window = 100; +gap = 10; +start = 155; +out_file = msd_ref_O_start.dat; +target_atoms = O; +FILES +traj.xyz +END diff --git a/tests/data/msd/diffcalc_atom3.in b/tests/data/msd/diffcalc_atom3.in new file mode 100644 index 00000000..b73a6f88 --- /dev/null +++ b/tests/data/msd/diffcalc_atom3.in @@ -0,0 +1,7 @@ +window = 100; +gap = 10; +out_file = msd_ref_atom3.dat; +target_atoms = 3; +FILES +traj.xyz +END diff --git a/tests/data/msd/input.in b/tests/data/msd/input.in new file mode 100644 index 00000000..a752d644 --- /dev/null +++ b/tests/data/msd/input.in @@ -0,0 +1,7 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat +log_file = msd.log +window = 100 +gap = 10 +time_step = 0.5 diff --git a/tests/data/msd/input_alias_conflict.in b/tests/data/msd/input_alias_conflict.in new file mode 100644 index 00000000..983b8551 --- /dev/null +++ b/tests/data/msd/input_alias_conflict.in @@ -0,0 +1,5 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat +first_frame = 3 +start = 7 diff --git a/tests/data/msd/input_defaults.in b/tests/data/msd/input_defaults.in new file mode 100644 index 00000000..0984ea84 --- /dev/null +++ b/tests/data/msd/input_defaults.in @@ -0,0 +1,3 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat diff --git a/tests/data/msd/input_full.in b/tests/data/msd/input_full.in new file mode 100644 index 00000000..649023ae --- /dev/null +++ b/tests/data/msd/input_full.in @@ -0,0 +1,10 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat +log_file = msd.log +window = 50 +gap = 5 +first_frame = 7 +time_step = 0.25 +fit_window = 12 +use_full_atom_info = True diff --git a/tests/data/msd/input_missing_required.in b/tests/data/msd/input_missing_required.in new file mode 100644 index 00000000..514b1a74 --- /dev/null +++ b/tests/data/msd/input_missing_required.in @@ -0,0 +1,2 @@ +traj_files = traj.xyz +target_selection = O diff --git a/tests/data/msd/input_negative_start.in b/tests/data/msd/input_negative_start.in new file mode 100644 index 00000000..070fe0cb --- /dev/null +++ b/tests/data/msd/input_negative_start.in @@ -0,0 +1,4 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat +start = -5 diff --git a/tests/data/msd/input_start_alias.in b/tests/data/msd/input_start_alias.in new file mode 100644 index 00000000..7bdc02ff --- /dev/null +++ b/tests/data/msd/input_start_alias.in @@ -0,0 +1,4 @@ +traj_files = traj.xyz +target_selection = O +out_file = msd.dat +start = 7 diff --git a/tests/data/msd/msd_ref_O.dat b/tests/data/msd/msd_ref_O.dat new file mode 100644 index 00000000..692a4629 --- /dev/null +++ b/tests/data/msd/msd_ref_O.dat @@ -0,0 +1,101 @@ + 0 0.00000000 0.00000000 0.00000000 + 1 0.08081983 0.09092513 0.09018468 + 2 0.16657429 0.17226981 0.17348923 + 3 0.26815366 0.26198538 0.26838983 + 4 0.37037656 0.35978269 0.37339924 + 5 0.44679323 0.46556646 0.48183264 + 6 0.52395578 0.53545099 0.59569339 + 7 0.60522743 0.62970320 0.72450257 + 8 0.72208344 0.73178324 0.83101303 + 9 0.80963318 0.84680287 0.92431812 + 10 0.92858890 0.95092524 1.01531148 + 11 0.98939086 1.02181936 1.10322013 + 12 1.08884082 1.10669751 1.14984353 + 13 1.20203494 1.21296507 1.24058348 + 14 1.28392232 1.28239562 1.34415497 + 15 1.35583471 1.37079226 1.47330416 + 16 1.44074743 1.41488127 1.59042056 + 17 1.49646665 1.49999086 1.70497180 + 18 1.61317165 1.60965475 1.84599443 + 19 1.71728216 1.74787352 1.97432103 + 20 1.83845019 1.81905068 2.05495176 + 21 1.90952344 1.88184686 2.09358850 + 22 2.01462911 1.98947754 2.13418921 + 23 2.12856840 2.10792210 2.22562016 + 24 2.24229271 2.17706494 2.36072163 + 25 2.32567370 2.26913669 2.47734150 + 26 2.39745282 2.31106584 2.62693582 + 27 2.46191527 2.40025672 2.72530711 + 28 2.53039898 2.53667567 2.87708263 + 29 2.63056311 2.68781025 2.98333409 + 30 2.71856120 2.75299905 3.06941715 + 31 2.78146734 2.78352543 3.06747300 + 32 2.85822751 2.87469540 3.10936706 + 33 2.99348434 2.98337049 3.21880606 + 34 3.10471450 3.07033670 3.35882739 + 35 3.20863170 3.17204845 3.51342312 + 36 3.28874537 3.22304664 3.63540758 + 37 3.35178456 3.31033001 3.73599423 + 38 3.41623417 3.44012597 3.86054370 + 39 3.52355123 3.61888170 3.98338977 + 40 3.61458846 3.63078847 4.03971222 + 41 3.66920797 3.66173621 4.03769144 + 42 3.75071858 3.76747700 4.09603223 + 43 3.90011012 3.84182240 4.20583543 + 44 4.00124641 3.93164693 4.35143419 + 45 4.12621658 4.04461495 4.49546843 + 46 4.21890668 4.08453909 4.62866561 + 47 4.26052351 4.16905878 4.73688460 + 48 4.32420019 4.30680528 4.87962452 + 49 4.46559595 4.50339961 4.97300944 + 50 4.59070097 4.47393223 5.02102922 + 51 4.60102058 4.51094058 5.04219620 + 52 4.70534219 4.59469441 5.05631898 + 53 4.83828930 4.65077515 5.16888664 + 54 4.93320026 4.77048596 5.28437479 + 55 5.04134128 4.86050326 5.41918559 + 56 5.13842823 4.90650860 5.55201995 + 57 5.18424735 4.98059294 5.67645519 + 58 5.23837783 5.14730268 5.82280756 + 59 5.32145449 5.38853488 5.91267434 + 60 5.45685717 5.39535550 5.93078139 + 61 5.51528692 5.46184298 5.92881309 + 62 5.63558464 5.52777102 5.91244646 + 63 5.75765867 5.56539726 6.05235508 + 64 5.84622755 5.66236948 6.18088038 + 65 5.93932268 5.76484494 6.33982441 + 66 6.01267075 5.84479115 6.47338306 + 67 6.06754652 5.91646290 6.64682731 + 68 6.14947420 6.12746094 6.77326646 + 69 6.26239309 6.36905363 6.83929304 + 70 6.43494324 6.38712637 6.81546936 + 71 6.48185022 6.43689750 6.82117527 + 72 6.60584267 6.49420059 6.83495117 + 73 6.75694652 6.51955300 6.97901118 + 74 6.84882724 6.58529526 7.13042144 + 75 6.94939349 6.67816867 7.28674598 + 76 7.06910474 6.79110039 7.40952466 + 77 7.14213211 6.84758463 7.58173117 + 78 7.22102744 7.08961867 7.72149310 + 79 7.35807800 7.33052267 7.77168934 + 80 7.50310882 7.36439681 7.81043020 + 81 7.57689521 7.40295372 7.82102573 + 82 7.64486910 7.48792714 7.85842012 + 83 7.78869863 7.52581587 7.96779681 + 84 7.88932112 7.60827619 8.09453705 + 85 7.97242455 7.71846022 8.24382659 + 86 8.10059814 7.82492860 8.37293546 + 87 8.14601539 7.85767384 8.54474601 + 88 8.24966429 8.03752729 8.69198840 + 89 8.39707417 8.30136793 8.72818157 + 90 8.53059166 8.33340385 8.75116534 + 91 8.62575896 8.37860081 8.72741758 + 92 8.70781171 8.48843921 8.76627036 + 93 8.85701439 8.56292320 8.86245452 + 94 8.99155821 8.62758792 8.98790821 + 95 9.08650765 8.71881754 9.09355930 + 96 9.20598429 8.82526354 9.20740879 + 97 9.28322892 8.86817670 9.38292466 + 98 9.36673929 9.06064746 9.51092693 + 99 9.51746471 9.30820903 9.55676616 + 100 9.65217987 9.32789724 9.55993280 diff --git a/tests/data/msd/msd_ref_O_start.dat b/tests/data/msd/msd_ref_O_start.dat new file mode 100644 index 00000000..662b03bc --- /dev/null +++ b/tests/data/msd/msd_ref_O_start.dat @@ -0,0 +1,101 @@ + 0 0.00000000 0.00000000 0.00000000 + 1 0.05015925 0.05749083 0.05676763 + 2 0.10026874 0.10863854 0.11219601 + 3 0.16744998 0.16998140 0.15829637 + 4 0.23121883 0.24788224 0.22700916 + 5 0.28216362 0.30725853 0.29892722 + 6 0.32323158 0.34547281 0.37458767 + 7 0.37167665 0.40665443 0.45173645 + 8 0.44847654 0.47702677 0.51646578 + 9 0.50081385 0.55502197 0.56388620 + 10 0.56518261 0.61862922 0.62641480 + 11 0.62066694 0.67047331 0.69023627 + 12 0.68615092 0.73654546 0.70798714 + 13 0.77469582 0.80311903 0.72922624 + 14 0.84486198 0.86084863 0.77115855 + 15 0.88782935 0.92006628 0.86938374 + 16 0.92166825 0.94985684 0.94172944 + 17 0.97046151 1.00978321 1.01284877 + 18 1.03334992 1.09975893 1.08705988 + 19 1.10927386 1.20554318 1.14516635 + 20 1.18830929 1.24571596 1.19590735 + 21 1.24738206 1.29022822 1.21824719 + 22 1.29704962 1.37866335 1.24505907 + 23 1.37470468 1.46786145 1.27779807 + 24 1.46646406 1.52549715 1.33095430 + 25 1.51383541 1.59665298 1.41769274 + 26 1.53433816 1.61968430 1.52047206 + 27 1.58641519 1.68116451 1.58135713 + 28 1.60193062 1.77488473 1.66458812 + 29 1.67819682 1.90598431 1.70867308 + 30 1.74135256 1.93135628 1.75581849 + 31 1.80659529 1.94085936 1.75261893 + 32 1.83045149 2.01306413 1.78781726 + 33 1.93557035 2.08406214 1.84033568 + 34 2.01035613 2.15094319 1.87295457 + 35 2.09518669 2.23446097 1.97953522 + 36 2.12216700 2.27857391 2.05499681 + 37 2.17795177 2.34472971 2.12958923 + 38 2.18753746 2.42933291 2.20304048 + 39 2.26779749 2.56850607 2.25414337 + 40 2.33758372 2.55581577 2.27793259 + 41 2.41890691 2.55689920 2.27773854 + 42 2.44908191 2.65620018 2.32232138 + 43 2.55395484 2.71489876 2.39299542 + 44 2.64059596 2.77165683 2.46205549 + 45 2.74302697 2.85704343 2.56341253 + 46 2.76567446 2.88695409 2.63898436 + 47 2.81726742 2.94177346 2.73739315 + 48 2.84283446 3.03010792 2.83558594 + 49 2.93964802 3.16440632 2.88855412 + 50 3.02571334 3.13549700 2.89811943 + 51 3.09616729 3.14277633 2.89967786 + 52 3.14438729 3.23506319 2.90067482 + 53 3.22619314 3.25821688 2.96820544 + 54 3.29484609 3.33874452 3.05338858 + 55 3.37977079 3.39356553 3.14684966 + 56 3.41991127 3.42996742 3.23045818 + 57 3.47282727 3.48326532 3.32506133 + 58 3.51191468 3.58215806 3.45019810 + 59 3.57757301 3.76566078 3.50955378 + 60 3.66437786 3.75478439 3.51389010 + 61 3.76135440 3.77711361 3.50173554 + 62 3.80857885 3.85813837 3.46075316 + 63 3.87247369 3.85390269 3.53415228 + 64 3.92023265 3.90579053 3.61962840 + 65 3.98476956 3.97283776 3.74716179 + 66 4.03349985 4.02647380 3.86139952 + 67 4.08763457 4.06990878 3.99813883 + 68 4.13103306 4.20262220 4.13156261 + 69 4.21025460 4.37905635 4.17294152 + 70 4.30786577 4.42628017 4.16922419 + 71 4.39461210 4.41585351 4.17473750 + 72 4.41725864 4.46886144 4.16178499 + 73 4.54444344 4.46389219 4.24265113 + 74 4.59844740 4.48909863 4.31750700 + 75 4.64695165 4.55651746 4.42370127 + 76 4.73474050 4.62160300 4.51848932 + 77 4.79464223 4.63858142 4.64836154 + 78 4.81258089 4.78220765 4.78377724 + 79 4.88318776 4.93050394 4.81665411 + 80 4.96723877 4.98202927 4.86147254 + 81 5.05271446 4.97266308 4.87678026 + 82 5.05330298 5.05021277 4.87107270 + 83 5.17308229 5.04376732 4.92643586 + 84 5.25299266 5.09998236 4.97781816 + 85 5.30462602 5.15700341 5.10459738 + 86 5.39095766 5.23111194 5.20406094 + 87 5.44477701 5.22600642 5.33567693 + 88 5.49007816 5.34051472 5.47919978 + 89 5.58519193 5.53925320 5.50476742 + 90 5.67260479 5.59754754 5.56511205 + 91 5.80403605 5.60685554 5.55943356 + 92 5.82496612 5.70040090 5.56517725 + 93 5.92667971 5.68942987 5.59982806 + 94 6.02496628 5.73047763 5.68775216 + 95 6.10573041 5.74837306 5.78089415 + 96 6.18889048 5.80428271 5.88537778 + 97 6.25240027 5.82021931 6.01665731 + 98 6.29243201 5.91807021 6.14596520 + 99 6.40342332 6.11350043 6.19130623 + 100 6.49296090 6.15209775 6.24303114 diff --git a/tests/data/msd/msd_ref_atom3.dat b/tests/data/msd/msd_ref_atom3.dat new file mode 100644 index 00000000..55b7ef22 --- /dev/null +++ b/tests/data/msd/msd_ref_atom3.dat @@ -0,0 +1,101 @@ + 0 0.00000000 0.00000000 0.00000000 + 1 0.07255144 0.07262980 0.06514077 + 2 0.16707639 0.17508465 0.15891179 + 3 0.28045875 0.31480234 0.22063006 + 4 0.35126367 0.41383709 0.26670850 + 5 0.50436519 0.46688531 0.34808054 + 6 0.64891804 0.44676901 0.38887729 + 7 0.65211867 0.52133592 0.47865548 + 8 0.78702353 0.66975659 0.54460672 + 9 0.83878065 0.84357427 0.70777523 + 10 1.02522601 1.00936276 0.81759426 + 11 1.08630695 0.96481253 0.79132928 + 12 1.17183808 0.94634514 0.83523235 + 13 1.28600199 1.05399950 0.80175038 + 14 1.28801586 1.08462241 0.77879577 + 15 1.46384516 1.10624075 0.98434814 + 16 1.63947945 1.00942816 1.07216933 + 17 1.65067762 1.15758229 1.16078319 + 18 1.83446101 1.39529955 1.37904594 + 19 2.00233107 1.59122068 1.40871066 + 20 2.34674272 1.82813628 1.40429613 + 21 2.47758222 1.81723490 1.36837449 + 22 2.69277119 1.70281026 1.34588153 + 23 2.65209175 1.93868147 1.38528654 + 24 2.55397363 2.11699404 1.33621514 + 25 2.72137044 2.05910641 1.66359406 + 26 2.93176651 2.03345289 1.71458396 + 27 2.86646980 2.24843033 1.76817326 + 28 3.12488544 2.51316330 1.93164435 + 29 3.43683987 2.65788036 1.95522788 + 30 3.77389491 2.80106816 2.02965081 + 31 3.89562371 2.79092574 1.96826948 + 32 4.18606137 2.82355153 2.03775405 + 33 4.29851085 3.00718495 1.97556317 + 34 4.12374162 3.24152557 1.98736569 + 35 4.47318017 3.10682938 2.32452367 + 36 4.72733832 2.96505610 2.30390166 + 37 4.68901391 3.14409444 2.45190512 + 38 5.15781004 3.27158990 2.44349538 + 39 5.58359907 3.37482098 2.40439110 + 40 5.86254914 3.43395458 2.52049401 + 41 6.10310938 3.44001378 2.33838780 + 42 6.29767737 3.58173412 2.62020985 + 43 6.24120848 3.78007376 2.64345771 + 44 6.15072789 4.04620406 2.67331369 + 45 6.47285749 3.91502465 2.97146484 + 46 6.72037717 3.86999773 2.88855297 + 47 6.50064686 3.89035157 3.15284636 + 48 6.85116836 4.07332246 3.16626575 + 49 7.26504414 4.25751553 3.14854105 + 50 7.55316772 4.17606453 3.37984143 + 51 7.87442202 4.19116478 3.14530180 + 52 8.15847517 4.20722780 3.53339654 + 53 8.04580008 4.48019021 3.48095682 + 54 7.90205277 4.72859314 3.45389522 + 55 8.14070521 4.61762603 3.72035403 + 56 8.40563927 4.69715972 3.55448152 + 57 8.25050243 4.75000400 3.73895947 + 58 8.56322027 4.74556031 3.86605668 + 59 9.04387175 4.80623111 3.90998680 + 60 9.57468981 4.71206027 4.09351351 + 61 9.92850046 4.60808130 3.82811304 + 62 10.21004765 4.73238409 3.98613402 + 63 10.14598161 4.95055859 3.99504854 + 64 9.95397591 5.05073536 4.02283171 + 65 10.21218929 4.92061667 4.20979018 + 66 10.47798189 4.99087195 4.25120568 + 67 10.38000200 5.19006518 4.34295358 + 68 10.85729028 5.23960741 4.64402556 + 69 11.24253580 5.25767893 4.56254443 + 70 11.89806686 5.19651674 4.67615562 + 71 12.22243922 5.10985899 4.55412271 + 72 12.45907875 5.12372348 4.57413373 + 73 12.19149653 5.28783562 4.41146318 + 74 11.92911392 5.35668578 4.35156890 + 75 12.03430335 4.98820343 4.83280367 + 76 12.33977999 4.96933795 4.90698144 + 77 12.31923443 5.12604766 5.12513917 + 78 12.76896012 5.18125920 5.49613842 + 79 13.13941787 5.27246988 5.50196557 + 80 13.68462068 5.43850375 5.50742406 + 81 13.81189660 5.45279074 5.38608890 + 82 14.07035896 5.54536814 5.40867253 + 83 13.84609730 5.72983452 5.29905547 + 84 13.56341479 5.95374457 5.19957275 + 85 13.80258603 5.57538889 5.85457917 + 86 14.14773301 5.58177642 5.87453471 + 87 14.12497382 5.74027752 5.98458652 + 88 14.56083219 5.89736611 6.26059279 + 89 14.97262848 6.04990224 6.26407845 + 90 15.50714521 6.20832427 6.33486527 + 91 15.70300303 6.25033915 6.39219192 + 92 16.14429857 6.37833632 6.42007016 + 93 16.03630807 6.55615614 6.24661069 + 94 15.78247578 6.95095448 6.25352933 + 95 16.27525940 6.58913484 6.86945527 + 96 16.65713356 6.46405197 6.85857862 + 97 16.53535345 6.57731305 6.91192665 + 98 17.11139157 6.83752739 7.03683135 + 99 17.53412566 7.09817770 7.00569267 + 100 18.00548779 7.33586339 7.18720048 diff --git a/tests/data/msd/traj.xyz b/tests/data/msd/traj.xyz new file mode 100644 index 00000000..9d44c793 --- /dev/null +++ b/tests/data/msd/traj.xyz @@ -0,0 +1,21000 @@ +40 20.0 20.0 20.0 +frame 1 +O 3.1015 0.5463 11.1497 +H 7.7096 12.4746 2.9648 +O 12.5089 6.8664 18.0504 +H 11.8385 19.8293 2.1496 +O 3.2392 9.8739 7.2422 +H 14.3805 9.3224 1.7236 +O 17.8433 15.7623 17.4276 +H 11.6473 4.5002 16.7554 +O 3.5413 1.3773 15.2945 +H 13.1293 7.2686 5.8292 +O 8.5830 7.8866 3.3333 +H 10.4917 14.2620 16.6578 +O 19.4187 1.8963 17.6951 +H 12.3684 12.9251 4.4233 +O 5.5847 17.3023 3.5937 +H 8.0225 15.2925 6.9769 +O 0.9410 1.2455 19.9971 +H 11.1569 13.2027 5.9578 +O 12.9887 5.5654 8.7570 +H 7.0136 4.4938 15.2505 +O 5.0549 0.9339 4.7767 +H 12.1857 8.1819 13.2164 +O 3.9667 6.5990 11.3189 +H 16.7835 11.6891 11.9396 +O 11.7161 14.4348 14.6600 +H 3.4223 9.9474 9.0083 +O 9.9764 18.9554 5.5225 +H 4.9974 2.9550 4.5785 +O 6.5327 10.6123 11.6636 +H 11.9596 7.4455 4.4403 +O 4.7197 17.2733 9.8042 +H 2.0249 14.7202 19.2882 +O 5.5099 1.6982 16.4287 +H 9.4787 5.3494 3.8132 +O 19.8229 10.2616 2.0850 +H 2.8537 4.5567 2.4624 +O 13.3488 12.4835 0.8925 +H 17.3369 17.7363 12.1474 +O 2.7965 16.1535 8.1234 +H 8.9190 9.8206 3.3978 +40 20.0 20.0 20.0 +frame 2 +O 3.3504 0.7089 10.7078 +H 7.9981 12.5600 3.1393 +O 12.7238 6.7851 18.1159 +H 11.7922 19.8313 1.9145 +O 3.3601 9.5677 7.3534 +H 14.3078 9.6112 1.7856 +O 16.9350 15.9254 17.5559 +H 11.3744 5.0220 16.9471 +O 3.7546 1.1983 15.4368 +H 13.1605 7.2374 5.6611 +O 8.6956 7.3875 3.3956 +H 10.8118 14.3521 16.6294 +O 18.9102 1.5052 18.1234 +H 12.3619 13.5152 4.9262 +O 5.3899 17.2027 3.7068 +H 8.5760 15.6337 7.1729 +O 0.9508 0.7273 19.7195 +H 10.8238 13.2220 6.4505 +O 12.9493 5.6443 8.7409 +H 6.9016 4.3161 15.4081 +O 5.1612 0.5986 4.4196 +H 12.5733 7.8670 13.1095 +O 4.2012 6.6781 11.3454 +H 17.1352 11.6107 12.2016 +O 11.9632 14.5376 14.3761 +H 3.5458 10.1843 8.8483 +O 10.2246 18.6869 5.0936 +H 4.9887 2.7352 4.0447 +O 5.7480 10.5109 11.5687 +H 11.7676 7.5047 4.3468 +O 4.5340 17.8127 9.7304 +H 2.0097 14.9891 19.1917 +O 5.3769 1.6966 16.1857 +H 9.4516 5.6890 3.8731 +O 19.8428 9.9493 1.7160 +H 2.8455 4.4445 2.4558 +O 13.2161 12.8159 0.8431 +H 17.5163 16.9294 12.0296 +O 2.9982 16.4374 8.3461 +H 9.5934 9.6060 3.2989 +40 20.0 20.0 20.0 +frame 3 +O 3.4786 0.8189 10.5991 +H 8.4009 12.8116 3.5531 +O 12.1187 6.6875 18.2747 +H 11.5627 0.1471 1.9599 +O 3.1162 9.6212 7.4040 +H 14.9148 9.4137 1.6834 +O 17.1946 16.2697 16.8410 +H 11.3710 5.0012 16.4052 +O 3.7501 1.1480 15.2915 +H 12.9034 7.6065 5.7007 +O 8.6124 7.3706 3.2397 +H 10.7497 13.9297 16.6990 +O 18.7542 1.4199 18.2103 +H 12.3764 14.2781 4.5716 +O 5.9392 17.3482 3.4611 +H 8.8025 15.7245 7.1808 +O 1.1346 0.6450 19.7051 +H 11.0708 13.5185 6.4593 +O 13.0771 5.6594 8.8568 +H 7.0258 4.6000 15.3797 +O 4.9058 0.4487 4.4900 +H 12.8020 7.8082 12.5927 +O 4.9062 6.6282 11.5525 +H 17.1142 12.0438 12.4021 +O 11.7663 14.3172 14.3517 +H 3.9408 10.3402 9.2986 +O 10.2438 18.8390 5.4351 +H 5.0976 1.7995 4.1834 +O 5.6029 10.5250 11.8503 +H 12.0130 7.8025 3.7853 +O 4.5975 18.2921 10.1762 +H 2.3058 14.0843 18.9176 +O 5.3114 1.7798 15.7824 +H 8.9857 6.0981 3.6189 +O 0.3838 9.2008 1.5645 +H 2.8744 4.5109 2.5235 +O 12.5919 13.3637 1.3575 +H 17.9884 17.0865 12.2771 +O 2.1288 16.2970 8.2274 +H 9.4818 9.6192 3.1555 +40 20.0 20.0 20.0 +frame 4 +O 3.6632 0.6024 10.3347 +H 8.7544 12.9611 3.4403 +O 12.1417 6.8855 18.7849 +H 11.9918 19.9344 2.0811 +O 3.4116 9.4996 7.6351 +H 15.3580 9.5934 1.7636 +O 17.1238 16.6226 16.9865 +H 11.6646 4.9639 16.2732 +O 3.5643 0.9642 15.5779 +H 13.0849 7.3811 5.4449 +O 9.1156 7.0958 2.7181 +H 11.0942 14.4747 17.1924 +O 18.7869 1.1771 17.7116 +H 12.6254 14.2881 4.5713 +O 5.7692 17.3335 3.9951 +H 8.8188 15.3160 6.7317 +O 0.9655 0.8622 19.9654 +H 11.3618 13.6581 6.2550 +O 13.3650 5.3329 8.0249 +H 7.0782 4.7100 14.4736 +O 5.0494 0.1025 5.2047 +H 12.5053 7.8989 12.1732 +O 4.8003 6.8259 11.8127 +H 16.8882 12.3871 12.1992 +O 12.0614 14.8447 14.8548 +H 3.9273 10.2704 9.1323 +O 10.1743 19.2491 5.6907 +H 5.1807 1.4017 4.0276 +O 5.9898 10.6159 11.1242 +H 12.6223 8.0813 3.9098 +O 4.4636 18.6488 9.7564 +H 2.3898 13.7432 19.0856 +O 5.2668 1.6905 15.6833 +H 9.5977 6.0930 3.1731 +O 19.9844 9.6307 1.4605 +H 3.1437 4.1626 2.3292 +O 12.7184 13.7923 1.3828 +H 17.6272 16.7690 11.9430 +O 2.4109 16.3470 8.4426 +H 9.6648 9.4303 3.1363 +40 20.0 20.0 20.0 +frame 5 +O 3.5427 1.1255 10.4035 +H 9.2469 13.3402 2.9173 +O 12.0286 6.4550 19.0901 +H 12.3546 0.4525 1.9398 +O 3.4451 8.9296 7.6878 +H 15.5549 9.5878 2.2182 +O 17.2557 16.6090 16.6392 +H 11.7681 4.7193 15.9790 +O 3.4870 1.3263 15.5429 +H 12.6224 7.0426 5.5453 +O 9.1392 6.9540 2.7941 +H 11.4116 14.6560 17.5419 +O 18.3381 0.8218 17.7986 +H 12.2991 13.9615 3.8029 +O 5.6889 17.1275 4.0667 +H 8.7441 15.7113 6.4019 +O 0.7600 0.3533 19.2197 +H 11.2680 13.2855 5.6857 +O 13.7863 5.2156 8.6258 +H 7.4669 4.4410 14.3618 +O 5.3614 19.9665 5.2609 +H 13.1389 8.2362 11.8590 +O 4.8156 6.5191 12.0291 +H 17.0826 12.7209 11.9700 +O 12.1151 14.4490 14.3290 +H 3.8956 10.1097 8.7362 +O 9.9430 19.1194 5.9809 +H 5.8181 1.7995 3.7819 +O 5.3160 10.8572 11.0406 +H 12.8376 7.9400 3.6964 +O 4.7776 18.6282 9.8521 +H 2.2542 13.8347 19.6920 +O 5.9316 1.3460 15.6058 +H 9.7103 5.9713 2.9522 +O 0.3634 9.2615 1.4066 +H 3.7387 3.7566 2.4093 +O 12.5600 14.1940 1.8254 +H 17.6630 16.9248 11.5411 +O 1.9656 16.7635 8.1092 +H 9.4779 9.2750 2.8878 +40 20.0 20.0 20.0 +frame 6 +O 3.6250 1.3009 10.2503 +H 9.7124 13.4727 2.9961 +O 11.6134 6.1320 18.6935 +H 12.4008 0.2252 1.8860 +O 3.5612 9.2414 7.6550 +H 15.6134 10.0957 2.3567 +O 17.0551 16.6010 16.6240 +H 11.5260 4.6255 16.2651 +O 3.6421 1.3743 15.6757 +H 12.6776 7.0424 5.6579 +O 9.2959 6.4494 2.5522 +H 11.4738 14.9643 17.6731 +O 18.6506 1.5204 17.6645 +H 11.9662 13.9504 3.3424 +O 5.8795 16.8623 3.7935 +H 8.4860 16.2087 6.2725 +O 1.2497 19.7731 19.3446 +H 11.4419 13.2201 5.8920 +O 14.3950 5.0899 7.8284 +H 7.4908 4.1856 14.6461 +O 5.1324 0.2836 5.4476 +H 13.0967 8.2163 12.0070 +O 4.7372 5.9985 12.0123 +H 17.0262 12.1171 12.6598 +O 11.8832 13.8952 14.0222 +H 3.9267 9.9609 8.5832 +O 9.8606 18.9188 5.7610 +H 5.7542 1.3048 3.6242 +O 5.3560 10.7465 11.0730 +H 12.2039 8.0832 4.0878 +O 4.6147 18.3994 9.6520 +H 1.9200 13.5826 19.8471 +O 5.7442 1.0823 15.6282 +H 9.8385 5.5243 3.0410 +O 0.7522 9.6526 1.4276 +H 3.6894 4.0403 2.3420 +O 12.5709 14.4380 1.8351 +H 17.6284 16.7494 11.4282 +O 2.2650 16.7479 7.7773 +H 9.8117 9.5940 3.3443 +40 20.0 20.0 20.0 +frame 7 +O 3.5405 1.4370 10.4594 +H 10.2367 13.8941 3.1389 +O 11.9736 5.3157 19.1119 +H 12.1939 0.2949 1.6817 +O 3.6415 8.7256 7.7353 +H 15.5667 10.2086 2.3089 +O 17.2559 16.5338 16.6926 +H 11.9335 4.5519 16.6662 +O 3.6417 1.2068 15.5501 +H 13.1429 7.0423 6.0711 +O 9.3968 6.4904 2.6107 +H 11.1851 15.2759 17.3218 +O 19.1961 1.7534 17.6724 +H 12.0027 14.2363 3.1533 +O 6.0149 16.5355 3.8319 +H 8.4723 16.4146 5.9980 +O 0.9449 19.8092 18.9023 +H 11.3946 13.0164 5.9184 +O 14.5419 5.6908 7.6645 +H 7.6245 4.2367 14.8773 +O 5.2840 0.9287 5.1912 +H 13.4229 7.6680 12.2550 +O 4.9561 5.7927 11.6515 +H 16.6572 11.9568 12.4375 +O 11.8850 13.4949 14.4358 +H 3.8863 9.7820 8.8940 +O 9.3600 19.2190 5.5298 +H 5.6745 0.9918 3.5653 +O 4.9344 10.8433 11.5674 +H 12.4197 8.3589 3.7571 +O 4.0934 18.1576 9.4492 +H 1.8397 13.2147 19.8205 +O 5.3875 0.9691 15.6247 +H 9.9012 5.3197 3.9172 +O 0.8551 8.8777 1.8259 +H 3.3852 4.3487 2.9320 +O 12.5957 14.9289 1.6963 +H 17.7151 16.8057 11.4162 +O 1.6161 16.6303 7.7723 +H 10.2483 9.5930 3.0668 +40 20.0 20.0 20.0 +frame 8 +O 3.4277 1.2493 10.3691 +H 9.7710 13.7140 3.3470 +O 12.4112 4.4680 19.3767 +H 12.2386 0.0701 1.9352 +O 3.2586 8.9019 7.9872 +H 16.1850 9.9359 2.6687 +O 17.3473 16.1962 16.7806 +H 12.0020 4.5752 16.7847 +O 3.9213 0.8847 15.0040 +H 12.8688 6.8561 5.8559 +O 8.9863 6.3463 2.5533 +H 11.1762 15.3504 17.1842 +O 19.2733 1.7917 17.1358 +H 12.0348 14.1888 3.3265 +O 5.4553 16.8911 3.5366 +H 7.9091 16.4020 6.1406 +O 0.4735 19.8492 18.5925 +H 11.6159 13.2498 5.8114 +O 14.4780 5.3507 7.5247 +H 7.6530 4.3275 14.8220 +O 5.3933 1.1678 5.3120 +H 13.9854 6.9946 12.6939 +O 5.1338 5.5701 11.4327 +H 17.1890 12.0397 12.5067 +O 12.1170 13.2674 14.7230 +H 3.6681 10.2089 8.9124 +O 9.3695 19.5578 5.0913 +H 5.6818 1.1393 4.0319 +O 4.6793 10.6789 11.4643 +H 12.4242 8.1532 3.3700 +O 5.1313 18.5170 9.5397 +H 1.7102 12.6856 0.1288 +O 5.7319 0.7674 15.5165 +H 9.5831 4.8599 4.0584 +O 0.8955 9.0360 1.7775 +H 4.0372 4.4458 2.7070 +O 13.0467 14.7363 1.9402 +H 17.9882 16.2701 11.5471 +O 1.8720 16.5076 7.7670 +H 10.6056 9.7731 2.6978 +40 20.0 20.0 20.0 +frame 9 +O 3.5636 0.8402 10.0936 +H 9.6118 14.2042 2.7665 +O 12.9057 4.7190 19.4273 +H 12.2468 19.0725 1.9637 +O 2.9059 8.8394 7.4864 +H 16.5244 9.7132 2.0528 +O 17.4535 16.7027 16.6492 +H 12.2971 4.5457 16.7483 +O 3.9303 0.7935 15.0088 +H 12.6091 7.0238 5.7724 +O 9.1985 5.7965 2.3393 +H 10.7320 15.0352 17.0573 +O 19.4209 1.7070 16.9095 +H 11.9926 14.1545 3.4435 +O 5.3058 16.8322 3.1719 +H 8.2474 16.1692 5.9182 +O 0.6909 19.6552 18.7184 +H 11.4066 13.0502 5.8170 +O 14.7004 5.1265 7.3995 +H 7.8725 4.1750 14.6881 +O 5.5528 0.8640 5.4067 +H 14.0566 6.9584 12.6602 +O 5.1187 5.3167 11.6454 +H 17.3402 12.2259 12.6677 +O 12.3096 13.7988 14.8587 +H 3.9155 10.2732 8.4236 +O 9.0265 19.8620 4.8484 +H 5.8469 1.9760 4.2261 +O 4.3849 10.5599 11.5492 +H 11.4703 8.1314 4.0617 +O 5.2873 18.3685 9.7879 +H 1.7809 12.9059 19.9046 +O 5.2815 0.9074 15.8395 +H 9.6401 5.3742 4.3707 +O 1.0357 9.1727 1.8777 +H 3.8078 4.5117 3.2597 +O 13.3092 14.5547 1.7924 +H 17.8113 16.1010 11.3798 +O 1.8270 16.5900 7.2896 +H 10.6825 9.3265 2.9951 +40 20.0 20.0 20.0 +frame 10 +O 4.2285 0.5387 10.0099 +H 9.1856 14.1400 3.0295 +O 13.0481 4.2889 19.6818 +H 12.0456 19.1722 1.6712 +O 3.1899 8.8138 7.4749 +H 16.5727 9.8344 2.3759 +O 17.5690 16.6992 16.6433 +H 12.3232 4.2914 17.0088 +O 4.3332 1.3008 14.8540 +H 12.9733 7.1769 5.8417 +O 9.2206 5.6023 2.6294 +H 10.8074 14.7347 16.5968 +O 19.8535 1.6661 17.1626 +H 12.0374 14.1006 3.7896 +O 5.3545 16.5023 2.9189 +H 8.4695 16.5175 5.8444 +O 0.7178 19.3990 18.9672 +H 11.1641 13.2403 6.4946 +O 14.9889 4.8408 7.1551 +H 7.8680 4.1976 15.0595 +O 5.2749 0.7723 4.9370 +H 14.2499 6.9652 13.2800 +O 5.6871 5.1812 11.2874 +H 17.3027 12.5847 12.8474 +O 12.1623 14.0562 15.0429 +H 3.9168 10.5126 8.4635 +O 9.1623 19.9284 4.6850 +H 6.5494 1.9002 4.5908 +O 4.6536 10.7222 11.3559 +H 11.7842 8.0418 4.1055 +O 4.9241 18.7109 9.3798 +H 1.7387 13.0303 19.7102 +O 5.2084 0.9583 15.8377 +H 9.7320 5.0440 4.5718 +O 1.7046 8.8503 2.1132 +H 3.9806 4.7574 3.7975 +O 12.6735 14.1477 2.1391 +H 17.3845 16.3307 11.3622 +O 1.7623 15.8030 7.1052 +H 10.9680 8.9638 2.6905 +40 20.0 20.0 20.0 +frame 11 +O 4.6117 0.4562 10.2726 +H 9.1721 14.7597 3.0423 +O 12.9609 4.6829 19.3227 +H 12.1139 19.1821 1.7767 +O 3.4908 8.7518 6.9061 +H 16.8093 10.1843 2.4370 +O 17.3925 16.8235 16.7222 +H 12.2625 4.1534 17.0532 +O 3.9094 1.2998 14.3724 +H 12.8949 7.3063 6.1262 +O 8.9204 5.4426 2.6885 +H 11.2782 14.6531 15.9965 +O 19.9298 1.0480 16.9926 +H 11.6848 13.9464 3.5528 +O 5.8677 16.2709 3.2993 +H 8.8792 16.7318 5.5524 +O 0.9073 19.7053 18.5799 +H 11.3969 13.2705 6.2915 +O 15.5979 4.6349 7.4226 +H 7.4901 4.1904 14.8396 +O 4.9965 0.8247 4.7660 +H 14.6266 6.7300 13.5976 +O 5.4457 5.0885 11.2464 +H 17.4095 12.7720 13.0591 +O 11.8396 14.2362 15.4959 +H 4.3687 10.1233 7.9453 +O 8.6556 19.9333 4.3442 +H 6.5306 1.6635 5.1937 +O 4.2718 11.3568 11.2893 +H 12.3869 7.8270 4.2303 +O 4.8880 18.3197 9.3625 +H 1.8376 12.4616 0.1518 +O 5.1744 0.8255 16.1159 +H 9.4531 4.5500 4.6097 +O 1.8072 8.7154 2.4446 +H 4.0886 4.7256 3.8210 +O 12.6494 13.9123 1.9917 +H 17.3871 16.1493 11.8660 +O 1.9003 15.4525 7.0761 +H 10.9999 9.4156 2.7442 +40 20.0 20.0 20.0 +frame 12 +O 4.8155 0.8365 10.1114 +H 9.1957 14.4694 2.9688 +O 12.9467 4.2072 19.5111 +H 12.4015 19.0675 1.9581 +O 3.4603 8.8128 7.2059 +H 16.8998 10.1898 2.0731 +O 17.0613 16.5273 16.3980 +H 12.0065 4.4865 16.9294 +O 4.1046 1.3566 14.5099 +H 12.9575 7.4848 6.0841 +O 9.0467 5.3367 2.2830 +H 11.4420 14.3183 16.7982 +O 0.1083 1.1919 16.7686 +H 11.6039 13.9805 3.4900 +O 6.2568 15.8402 3.3749 +H 8.9480 16.6771 5.5109 +O 0.8348 19.3946 18.2515 +H 11.6186 13.2444 6.3920 +O 15.3536 4.9376 7.4746 +H 7.4629 4.0722 14.5952 +O 5.4159 1.4905 4.5602 +H 14.6988 6.4938 13.8326 +O 5.8715 5.4020 11.6057 +H 17.7789 12.6151 12.7372 +O 11.4115 13.9205 15.7393 +H 4.8405 9.8820 8.2057 +O 8.5006 19.6390 4.6339 +H 6.4075 1.8738 5.9166 +O 4.2534 11.4918 11.2192 +H 12.3396 8.1366 4.2826 +O 5.3065 18.8100 9.1683 +H 1.9264 11.8939 0.1029 +O 5.0312 1.3502 15.9909 +H 9.2840 4.6445 4.8458 +O 1.5825 8.4897 2.2940 +H 4.0452 4.3757 3.8691 +O 12.7648 13.5356 2.2504 +H 17.5345 16.2449 11.6495 +O 1.6885 15.3845 7.5160 +H 10.8173 9.3549 2.4458 +40 20.0 20.0 20.0 +frame 13 +O 4.8566 1.3804 9.8020 +H 9.4282 13.8612 2.8139 +O 12.9568 4.2994 0.0018 +H 12.3934 19.2821 1.7870 +O 3.9357 8.8055 7.3567 +H 17.3015 9.8745 1.7306 +O 17.2588 16.1988 16.7753 +H 11.7117 4.0092 16.6450 +O 3.9116 1.4349 14.3292 +H 12.7162 7.5462 6.6144 +O 9.0337 5.4179 2.4318 +H 11.2596 14.2470 16.7961 +O 0.2497 0.3460 16.8861 +H 11.4852 13.6632 3.4182 +O 6.7628 15.5416 3.6401 +H 8.4990 16.4895 5.6828 +O 1.1660 19.6425 18.2127 +H 11.9465 13.0812 6.9639 +O 15.1248 5.0742 7.3168 +H 7.1768 4.1552 14.2243 +O 5.1883 1.3964 4.0598 +H 14.7643 6.5001 13.6943 +O 5.7873 5.8533 11.8341 +H 17.9333 12.8364 12.6390 +O 11.2183 14.0234 15.2294 +H 4.8813 10.2706 8.2744 +O 7.9291 19.3236 4.7155 +H 6.7707 1.1077 5.7323 +O 4.3944 11.4653 10.8840 +H 12.4953 7.7261 4.0444 +O 4.8952 19.1689 9.4240 +H 2.0574 11.5937 0.0698 +O 4.9070 1.6337 16.0277 +H 8.6584 4.6787 4.9984 +O 1.8462 8.5338 2.2591 +H 4.3446 3.8876 3.9142 +O 12.8282 13.7735 2.6399 +H 17.6063 15.8421 11.4218 +O 2.0442 15.3608 7.7681 +H 10.6325 9.3802 2.4503 +40 20.0 20.0 20.0 +frame 14 +O 4.7784 1.3700 9.5886 +H 9.6207 13.8638 2.6723 +O 13.1893 3.8990 0.0557 +H 12.7468 19.3584 2.2656 +O 4.0272 9.3383 7.6438 +H 17.3933 9.6212 1.9013 +O 17.0939 16.1845 17.3776 +H 11.7233 4.3027 16.6026 +O 3.5054 1.4701 14.4798 +H 12.9110 6.7726 6.8583 +O 9.3156 5.9305 2.2087 +H 10.9471 13.7015 17.1474 +O 0.3359 0.3229 16.4519 +H 11.4709 13.7086 3.3194 +O 7.0916 15.3292 3.1944 +H 8.1973 16.5118 5.3325 +O 0.9427 19.8357 18.0957 +H 11.4691 13.3208 6.6468 +O 14.5147 4.3195 6.8610 +H 7.1711 3.9573 14.0557 +O 5.1236 1.6885 4.4453 +H 14.6001 6.9371 13.8725 +O 5.5703 6.0278 11.9327 +H 18.1846 12.9682 12.6031 +O 11.1517 14.1728 15.1866 +H 4.5766 10.3463 8.2315 +O 7.7525 19.4200 4.4797 +H 7.0020 1.1561 5.4035 +O 5.1610 11.4610 11.0843 +H 12.4878 7.8181 3.8162 +O 5.2896 19.5522 9.5436 +H 1.8932 11.3066 0.3943 +O 4.9354 1.0528 16.2048 +H 8.4699 5.5740 4.3574 +O 1.7725 8.0872 2.4601 +H 4.5358 3.6248 4.0574 +O 12.7947 13.9576 2.2865 +H 17.8346 15.7663 11.2680 +O 2.0343 15.1919 8.2643 +H 11.1920 9.3871 1.9001 +40 20.0 20.0 20.0 +frame 15 +O 4.5791 1.0694 10.1938 +H 10.1037 14.0721 2.3904 +O 12.9350 3.9695 0.6259 +H 12.8836 19.2963 2.4906 +O 4.2320 9.0392 7.8246 +H 17.9176 9.5342 2.5769 +O 17.0496 16.1697 17.6043 +H 11.7618 4.1154 16.3809 +O 3.4806 1.2242 14.6602 +H 12.7937 6.6285 7.0214 +O 9.4277 6.2996 1.8201 +H 10.8598 13.2672 17.3599 +O 0.5587 0.2967 16.0448 +H 11.4780 13.9467 3.2862 +O 6.5157 14.8555 3.3081 +H 7.9089 15.8609 4.7875 +O 0.7118 19.5965 18.1575 +H 11.6725 14.1295 6.8959 +O 14.7339 4.5981 6.9158 +H 7.3662 4.1443 13.9102 +O 5.2244 2.3794 4.1947 +H 14.4083 6.3526 13.9544 +O 5.6205 5.5937 11.6870 +H 17.7430 12.9080 13.1951 +O 11.4707 13.8307 15.3662 +H 4.9516 10.2960 7.8969 +O 7.5969 19.8247 3.9520 +H 7.0506 1.7254 6.2027 +O 5.4956 11.1280 11.2291 +H 12.0915 7.8621 3.9431 +O 5.0511 0.0500 9.6496 +H 2.4027 10.8365 0.5950 +O 4.4534 0.8496 15.4661 +H 8.5105 5.1651 4.2245 +O 1.8876 8.2791 2.6976 +H 4.9885 3.5010 4.2548 +O 12.5833 13.9285 2.6221 +H 17.4654 16.2591 11.5022 +O 1.6121 15.1745 8.2931 +H 10.8739 9.5549 1.9484 +40 20.0 20.0 20.0 +frame 16 +O 4.4118 1.5731 9.9779 +H 10.5791 14.0053 2.5854 +O 13.1174 3.7275 0.7773 +H 13.6807 18.8060 2.6861 +O 4.7724 9.1771 7.4919 +H 18.0669 9.7075 2.6970 +O 17.1828 16.4972 17.0628 +H 11.6722 4.2389 16.4854 +O 3.5850 1.1497 14.0857 +H 12.6292 6.5479 7.0957 +O 9.0214 5.9182 1.5722 +H 10.5117 12.9903 17.7293 +O 0.2838 19.6853 15.5906 +H 11.8129 13.8150 3.7379 +O 6.8132 14.4482 3.5572 +H 8.0561 16.0982 4.4529 +O 0.5768 19.6746 18.1873 +H 11.4619 14.2029 6.7868 +O 15.0264 4.7263 7.0377 +H 7.6920 4.3192 14.2079 +O 4.4844 2.5128 3.8942 +H 14.7477 6.2612 13.5011 +O 6.0171 5.6863 11.5978 +H 17.2890 12.8699 13.1349 +O 11.3543 13.9698 15.7171 +H 4.9558 10.4071 7.6717 +O 7.8097 19.3964 4.2108 +H 7.2523 2.3536 6.3618 +O 5.7119 10.8597 11.4873 +H 12.1854 7.8301 4.3333 +O 5.0154 0.0492 9.1138 +H 1.7303 11.1050 0.0528 +O 4.5532 0.9961 16.0402 +H 8.2461 4.6616 4.5879 +O 2.1332 8.6290 2.4581 +H 4.9008 3.6026 4.3285 +O 12.6094 13.9967 3.3482 +H 17.8435 15.9662 11.5020 +O 1.7100 15.6236 7.8473 +H 11.2395 9.8504 2.2168 +40 20.0 20.0 20.0 +frame 17 +O 4.7492 1.9044 9.8138 +H 10.8015 13.6985 2.9775 +O 13.4242 3.9986 0.9512 +H 14.0392 18.8220 2.9371 +O 4.8037 9.4963 7.6828 +H 17.8281 9.3456 2.6962 +O 17.8007 16.8387 16.4116 +H 11.4287 4.1384 16.0808 +O 3.4724 1.3554 13.5764 +H 13.4492 6.3641 7.2396 +O 9.3189 5.6862 1.1007 +H 10.7643 13.4340 17.3221 +O 0.0815 19.5155 15.4209 +H 11.9940 13.6082 3.7168 +O 6.8101 14.7340 2.8949 +H 7.8487 16.4408 4.4603 +O 0.5256 19.5551 18.1079 +H 11.7574 13.9045 6.3225 +O 15.1525 4.7533 7.0412 +H 7.6585 4.2303 14.5922 +O 3.7722 2.6829 3.5368 +H 15.0830 6.4072 13.8022 +O 5.7251 5.3318 11.2922 +H 17.3649 12.5813 12.9648 +O 11.1353 13.8879 16.5840 +H 4.6891 10.6485 7.9039 +O 7.3178 19.1217 4.5149 +H 7.3501 2.6137 6.7340 +O 5.6709 10.5916 11.4950 +H 12.5794 7.6344 4.2370 +O 4.3538 0.1367 9.2265 +H 1.4992 10.9834 0.5461 +O 4.1561 0.7659 16.3865 +H 8.0639 4.7071 4.7169 +O 2.8270 8.3238 2.8083 +H 4.5135 3.4538 4.3667 +O 12.7150 13.6307 3.6971 +H 17.8315 15.8391 11.3208 +O 1.6439 15.9203 7.2935 +H 11.4178 9.5294 2.6178 +40 20.0 20.0 20.0 +frame 18 +O 5.1517 2.2017 10.2019 +H 10.6162 13.8963 2.9468 +O 12.8033 4.2231 0.9396 +H 13.9925 19.0389 3.5249 +O 4.5500 9.3722 7.1913 +H 18.1105 9.7619 2.9207 +O 17.5907 16.8044 16.3455 +H 11.7727 3.8361 15.7598 +O 3.9359 1.5395 13.6762 +H 13.5865 6.2719 7.6454 +O 9.7996 5.6727 0.9152 +H 10.3748 13.2174 17.2287 +O 0.0606 19.8116 15.4005 +H 12.1897 13.1887 3.8665 +O 6.9545 14.9091 2.8237 +H 7.9366 16.5047 3.8808 +O 0.2993 19.4029 18.2195 +H 10.9154 13.8917 6.3537 +O 15.0754 4.1114 7.3894 +H 7.8880 4.3838 15.0434 +O 4.1656 1.8874 3.5670 +H 15.7955 6.8291 13.9762 +O 5.9507 5.6832 11.6667 +H 17.2653 12.7408 12.9303 +O 11.0722 14.1562 16.4281 +H 4.1138 10.7670 7.9147 +O 7.0275 19.2385 4.7075 +H 7.4648 2.5432 6.9028 +O 5.6771 10.1713 11.5363 +H 13.0662 7.7232 4.5293 +O 4.2956 0.1651 9.2262 +H 1.5391 11.5147 0.7636 +O 3.8325 1.0705 16.8453 +H 8.2655 4.9849 4.7268 +O 3.0421 8.6545 2.7859 +H 4.7252 3.0102 4.3070 +O 13.1115 13.7714 3.2007 +H 18.1410 16.1180 11.9337 +O 1.7641 15.8060 7.4612 +H 11.4839 9.4834 2.7227 +40 20.0 20.0 20.0 +frame 19 +O 4.4642 2.2938 10.0968 +H 10.7489 13.9036 2.9278 +O 12.9000 4.5414 0.9220 +H 13.6274 19.4616 3.4800 +O 4.7852 8.9889 6.8787 +H 18.5606 9.8026 2.7677 +O 17.3659 16.9892 16.4962 +H 12.0258 3.7143 15.5968 +O 3.8783 1.4554 13.3858 +H 14.3996 5.9594 7.5075 +O 10.0275 5.1324 1.2215 +H 10.8516 13.6223 17.4456 +O 19.8338 19.6995 15.6358 +H 11.4932 13.1090 3.9487 +O 7.4692 14.6581 2.5749 +H 7.6143 16.5121 4.4399 +O 19.9259 19.1412 18.0774 +H 10.6478 13.7294 6.1792 +O 15.6016 4.7165 7.8604 +H 7.6326 3.8303 14.7026 +O 4.2042 2.3084 3.5078 +H 16.3411 7.1137 13.6958 +O 6.0910 6.1478 12.0062 +H 17.7070 12.6764 12.5212 +O 11.1279 14.7400 16.2645 +H 3.5694 10.9856 7.4995 +O 6.7610 19.1379 4.5819 +H 7.4525 3.0465 7.3703 +O 5.5973 10.3787 11.6490 +H 12.4886 7.4793 4.6396 +O 4.5104 0.7005 9.5948 +H 1.7003 11.3527 0.9346 +O 3.8437 0.7746 16.5352 +H 8.5313 5.3317 4.4510 +O 3.2080 8.7569 2.7030 +H 5.2261 3.1466 4.8288 +O 13.3234 13.0309 3.2380 +H 18.1026 15.5058 11.7556 +O 2.0743 16.0781 7.3591 +H 11.5293 9.6404 2.8986 +40 20.0 20.0 20.0 +frame 20 +O 5.0252 2.1410 10.1756 +H 10.3036 14.1248 2.9456 +O 13.0500 4.1401 0.7585 +H 13.6778 19.5479 3.2037 +O 4.6888 9.1556 7.2177 +H 18.5254 10.3006 2.3588 +O 17.4179 17.0806 16.6116 +H 11.8548 3.3881 15.5226 +O 4.3224 1.2762 13.1716 +H 14.8477 6.2243 7.0960 +O 10.3030 5.0278 1.5156 +H 11.3686 14.0581 17.6159 +O 19.8235 19.6251 15.4789 +H 11.4747 12.7626 4.0645 +O 7.4944 14.7663 2.4384 +H 7.1982 16.6220 4.6325 +O 19.6166 19.2737 18.3051 +H 10.9602 13.9273 6.0842 +O 15.8344 4.9928 8.2349 +H 7.2589 3.1597 14.6717 +O 4.1459 2.1095 3.5522 +H 16.6137 6.6591 13.1807 +O 6.3610 6.0716 12.0566 +H 17.9263 12.8096 12.5018 +O 11.1873 15.0694 16.0447 +H 3.3948 11.6592 7.8925 +O 7.4369 18.7338 4.6802 +H 7.4511 3.6710 7.4636 +O 5.6018 10.7425 10.9572 +H 12.7656 7.6549 4.4429 +O 4.8887 1.4565 9.5538 +H 1.2689 11.2069 0.9290 +O 3.4301 1.0098 16.0125 +H 8.9574 4.7886 4.7772 +O 2.7421 9.1586 3.0384 +H 5.4893 3.2056 4.7048 +O 13.3260 13.1663 3.3346 +H 17.8741 15.8606 11.7114 +O 1.9140 16.0407 7.5342 +H 11.5474 9.8667 3.1480 +40 20.0 20.0 20.0 +frame 21 +O 4.6596 2.1157 9.4070 +H 10.3801 13.9869 3.3018 +O 13.1767 4.1397 0.7194 +H 13.1064 0.0583 3.5287 +O 5.3723 8.8855 7.5213 +H 18.6863 9.8660 2.3907 +O 17.3881 16.4710 16.9731 +H 11.9038 3.2417 15.8244 +O 4.2447 1.8988 13.6995 +H 14.3478 6.0796 7.2172 +O 9.9391 5.1837 1.8682 +H 11.5250 14.0733 18.0430 +O 19.2247 19.6214 15.7577 +H 11.3221 12.6239 3.5278 +O 7.5777 14.3600 2.2106 +H 6.9612 16.7316 4.9089 +O 0.2992 19.1745 18.2154 +H 10.9551 14.3492 6.0608 +O 15.9691 4.7777 7.9033 +H 7.2298 2.8903 14.6184 +O 4.0333 2.3549 3.5690 +H 16.5207 7.2804 13.3187 +O 6.8078 6.3169 12.3274 +H 17.6724 12.8921 12.1930 +O 11.2113 15.3401 16.2472 +H 3.6162 11.9496 7.5495 +O 7.3579 18.8456 4.6094 +H 7.1981 3.3450 6.7945 +O 5.8675 10.6664 11.0049 +H 12.1529 7.8998 4.9706 +O 4.7345 0.6346 9.4135 +H 0.5687 11.2701 1.1347 +O 3.2663 0.6631 15.6781 +H 9.0209 5.2257 5.0759 +O 2.6592 9.1297 2.8625 +H 5.5414 3.3839 5.0567 +O 13.2467 12.8724 3.5794 +H 18.4118 16.0101 11.8249 +O 1.9939 16.1366 7.3047 +H 11.6394 9.5360 3.2708 +40 20.0 20.0 20.0 +frame 22 +O 4.9595 2.5785 9.5166 +H 10.6422 13.7985 3.0954 +O 13.2248 4.3881 0.6642 +H 12.8919 0.0443 3.7638 +O 5.4546 8.6155 7.3011 +H 18.7585 9.5662 2.4860 +O 17.4901 16.5119 16.8475 +H 11.9777 3.2461 15.9413 +O 4.3723 1.8680 13.7460 +H 14.5743 5.4109 7.1928 +O 9.7600 5.3642 1.6187 +H 11.4116 13.7809 18.0247 +O 19.2844 19.3481 15.3473 +H 11.8301 12.5063 3.8928 +O 8.1811 14.4550 2.1793 +H 7.2146 16.6693 4.7365 +O 0.4372 19.4485 18.0772 +H 10.9406 14.6851 6.3992 +O 15.8131 4.6013 8.1096 +H 7.1487 2.4985 14.7084 +O 3.9711 2.4899 3.4237 +H 16.7125 7.2954 12.4983 +O 6.5163 5.5586 12.5811 +H 17.5008 12.8384 12.0314 +O 11.3406 15.6306 16.7282 +H 3.2595 11.6367 7.6375 +O 6.8927 18.4452 4.5155 +H 6.8308 3.1124 6.5240 +O 5.2018 10.5681 11.2507 +H 12.7420 7.7918 5.0408 +O 4.7289 0.5393 9.6968 +H 1.2363 10.8982 1.2135 +O 3.0777 0.4131 15.8790 +H 8.8775 5.1348 4.5012 +O 2.3899 9.3268 2.9603 +H 5.1834 3.5958 4.7306 +O 13.2682 12.7009 3.4476 +H 18.2006 16.0971 12.0968 +O 1.5049 16.6010 7.2392 +H 11.5681 9.3031 2.8072 +40 20.0 20.0 20.0 +frame 23 +O 5.0924 2.7055 9.8821 +H 10.8350 13.5665 3.6198 +O 13.5951 4.5869 0.1370 +H 12.8251 19.6772 4.0140 +O 5.5750 8.0001 7.2295 +H 18.0434 9.6563 2.3892 +O 17.4230 16.2295 16.3626 +H 11.8728 3.7086 16.0145 +O 4.1986 1.9410 14.1095 +H 14.3300 5.1664 6.7096 +O 9.7022 4.6806 1.1905 +H 11.2454 13.2628 18.1947 +O 19.3126 19.3854 15.3403 +H 11.9793 12.4882 4.0294 +O 8.2375 14.0223 2.2794 +H 7.3043 16.8854 4.4613 +O 19.8496 19.1444 17.9470 +H 11.0827 14.9489 6.6413 +O 15.7404 5.1165 7.8088 +H 7.0768 2.1803 14.8405 +O 4.1324 2.3785 3.7388 +H 16.9736 6.9563 12.6535 +O 5.7820 5.1626 13.2702 +H 17.4611 13.0732 11.6134 +O 11.5551 15.5800 16.4434 +H 2.8663 11.3366 7.6949 +O 7.2609 18.9949 4.4294 +H 6.8637 3.2575 6.5535 +O 4.8803 10.6557 11.7189 +H 12.2920 7.8512 5.0338 +O 4.6710 0.3637 9.7752 +H 1.2531 11.1391 1.2366 +O 3.0822 1.0065 16.3135 +H 8.9928 4.8942 4.9079 +O 2.4700 8.6791 3.6631 +H 5.1928 3.7001 4.6873 +O 12.7186 12.6785 3.4015 +H 18.2536 16.3331 12.1575 +O 1.2079 16.1941 7.3617 +H 11.3051 8.5993 3.5259 +40 20.0 20.0 20.0 +frame 24 +O 4.9181 2.9482 9.7641 +H 11.2132 13.2277 4.4014 +O 14.0867 4.7210 0.2966 +H 12.8161 19.9593 3.6297 +O 5.4320 8.0990 6.7686 +H 18.4946 9.7303 2.4770 +O 17.9539 16.3514 16.3962 +H 11.8936 4.1980 15.8024 +O 4.0026 1.8464 14.1026 +H 14.5917 5.3135 6.5736 +O 9.8358 4.9120 1.2615 +H 10.9402 13.2723 18.3337 +O 19.0854 19.4088 15.3844 +H 11.9522 12.5289 4.3407 +O 7.6959 14.5369 2.5731 +H 7.4174 16.9375 4.0574 +O 19.7888 18.9630 18.1534 +H 11.4453 14.6252 6.1888 +O 15.3859 5.7359 7.3506 +H 7.2370 2.6094 14.4977 +O 4.3114 2.2723 4.3457 +H 16.6641 7.3236 12.3260 +O 5.7986 5.2246 12.8083 +H 17.7030 13.0727 11.4711 +O 11.5923 15.6233 16.7913 +H 2.7820 11.7354 7.5390 +O 7.6532 19.0479 5.1001 +H 7.5139 2.9036 6.3973 +O 5.3322 10.5415 11.5583 +H 12.2334 7.9306 4.9736 +O 4.4346 0.7685 9.8155 +H 1.6866 11.3728 1.1609 +O 2.9993 1.1675 16.4461 +H 8.3515 4.9402 4.5625 +O 1.5307 8.9305 3.4323 +H 5.0558 3.8669 4.6071 +O 12.2791 12.1646 3.2974 +H 18.5290 15.8522 11.5964 +O 0.7743 16.2125 7.4288 +H 11.2271 8.5070 3.3680 +40 20.0 20.0 20.0 +frame 25 +O 5.0270 3.0994 9.9370 +H 11.4097 13.7532 4.6513 +O 14.3734 4.3529 0.0765 +H 13.0141 19.7754 4.0967 +O 5.2298 7.7200 6.7773 +H 17.9986 9.5903 2.2755 +O 18.0232 16.3476 16.4332 +H 12.2599 4.3975 16.1190 +O 3.8207 1.7253 13.7607 +H 14.1109 5.4574 6.2734 +O 10.0973 4.5154 1.2954 +H 10.8976 13.0627 18.5294 +O 19.0796 18.9367 15.2593 +H 12.0273 12.1636 4.2448 +O 7.9251 14.8142 2.3504 +H 7.5926 17.1413 3.5193 +O 19.9708 19.3262 18.1141 +H 11.5131 15.1595 6.3119 +O 15.3966 5.9987 7.0232 +H 7.0376 2.6060 13.9115 +O 4.2466 2.4068 4.3716 +H 16.3447 7.7651 12.1805 +O 5.6642 5.7967 13.0774 +H 17.7331 13.2076 11.1710 +O 11.5584 15.5427 17.2931 +H 2.3517 11.5981 7.8733 +O 7.4842 19.2424 5.1456 +H 7.5406 3.0743 6.2155 +O 5.3644 10.5411 11.7550 +H 12.2886 7.4781 4.7145 +O 4.6375 0.2325 9.5866 +H 1.9812 11.3475 0.8082 +O 2.7791 1.2237 16.1596 +H 8.6070 5.0285 4.2429 +O 0.8866 8.9584 3.2188 +H 4.5836 3.6529 4.3667 +O 12.3393 12.2306 3.4979 +H 18.9507 15.8746 11.5438 +O 1.0754 16.2053 7.7450 +H 10.6137 8.5034 3.6133 +40 20.0 20.0 20.0 +frame 26 +O 5.3391 2.8124 10.4941 +H 11.4715 13.7398 4.3542 +O 14.6040 4.2773 0.2981 +H 12.9552 19.5409 4.4372 +O 5.0276 8.0068 6.5096 +H 17.6139 9.8472 2.4250 +O 17.6214 16.0165 16.9053 +H 12.4975 4.8882 16.5047 +O 3.7634 2.1659 13.8631 +H 14.1335 5.1527 6.3612 +O 9.9479 4.2353 0.5749 +H 10.7883 12.7914 18.5007 +O 18.8294 19.1925 15.1715 +H 11.7816 12.6739 4.0794 +O 7.8845 14.6921 2.3153 +H 7.5017 16.9557 3.3199 +O 19.9026 19.7800 17.4384 +H 11.4388 14.9654 6.0286 +O 15.2296 6.2630 6.7904 +H 6.6965 2.4944 13.3760 +O 4.0147 2.4634 4.2335 +H 16.3512 8.0876 12.1133 +O 5.5150 5.9906 12.6510 +H 17.5950 13.1764 10.8298 +O 11.2709 15.5664 17.1186 +H 2.3425 11.0695 8.0711 +O 7.1905 18.7714 4.6226 +H 8.0237 2.9834 6.0421 +O 5.3521 10.6438 12.2248 +H 12.1685 7.8685 4.9082 +O 4.9475 0.0458 9.7349 +H 1.8769 11.1876 0.5851 +O 2.7445 1.2358 16.2989 +H 8.8226 4.9311 4.0238 +O 1.1521 9.4795 3.4159 +H 4.0283 3.3099 4.4448 +O 11.8098 12.2773 3.7882 +H 19.1632 15.5203 11.6944 +O 0.7460 16.2181 7.6204 +H 10.1788 8.4223 3.1237 +40 20.0 20.0 20.0 +frame 27 +O 4.9715 2.5526 10.5429 +H 11.1253 13.4952 4.5292 +O 14.2709 4.2624 0.0225 +H 13.5425 19.7664 4.7014 +O 5.2072 7.5978 6.1021 +H 17.8206 9.7378 2.4004 +O 17.7981 16.1901 16.7032 +H 12.5732 4.9230 16.4534 +O 3.6650 2.1457 13.9741 +H 14.1922 5.4908 6.6624 +O 10.0249 3.8420 0.2935 +H 10.3153 12.8814 18.5270 +O 19.3400 19.0113 15.0387 +H 11.7665 12.5262 4.0684 +O 7.1594 14.6057 3.1542 +H 7.5954 16.9037 3.1410 +O 0.3291 0.1748 17.3444 +H 12.1071 15.1007 6.1003 +O 15.2562 6.0383 7.0764 +H 6.8281 2.3596 12.7526 +O 4.1020 2.5636 3.9418 +H 16.5732 7.9910 12.3726 +O 5.2224 5.8342 12.8604 +H 17.4549 13.1722 10.5759 +O 11.9589 15.2859 17.2267 +H 2.2045 11.2304 7.7861 +O 7.3837 18.6453 4.6506 +H 7.7982 2.8486 6.6045 +O 5.0322 10.5884 12.3874 +H 11.4338 7.6767 5.1191 +O 4.6367 0.1714 10.1655 +H 1.7121 11.3672 0.9033 +O 2.6789 1.0580 16.5138 +H 8.6844 4.4564 4.1361 +O 1.2653 9.6189 3.2822 +H 4.2521 3.5813 4.6815 +O 11.8484 12.3766 3.3489 +H 18.7575 15.3509 11.3913 +O 0.4178 15.8824 7.5488 +H 10.2062 8.6671 2.9637 +40 20.0 20.0 20.0 +frame 28 +O 4.9809 2.7487 10.6428 +H 11.4505 13.4191 4.3634 +O 14.3263 3.9650 19.7433 +H 13.7216 0.1991 4.8603 +O 5.7270 7.5813 6.5575 +H 18.4374 9.3305 2.8576 +O 17.8042 16.2565 16.5238 +H 13.2884 5.1254 16.3650 +O 3.8389 2.5851 14.6285 +H 13.7576 5.4966 6.9787 +O 9.7300 3.3508 0.3574 +H 10.0638 13.1495 17.7242 +O 19.4462 19.2748 15.0057 +H 11.8117 12.1771 4.1808 +O 6.8791 14.3545 3.5148 +H 7.8344 17.2180 3.3275 +O 0.9906 0.4695 17.2684 +H 12.6655 14.4458 6.4680 +O 15.5759 6.0726 6.8483 +H 6.8269 1.9768 13.2071 +O 4.1526 2.5472 3.9536 +H 16.2526 7.6339 12.5727 +O 5.7588 5.7868 12.9964 +H 17.1559 13.0277 10.2390 +O 11.5593 15.2191 17.3774 +H 1.5677 11.4631 7.6514 +O 7.1979 18.7018 4.2946 +H 7.9348 2.3612 7.4880 +O 5.2266 10.9648 12.3397 +H 10.9213 7.8622 4.7030 +O 4.2596 0.4721 10.6105 +H 1.7062 11.5378 0.4859 +O 2.7183 1.2210 16.6782 +H 8.3985 4.3163 4.3235 +O 1.4732 9.3763 3.4634 +H 3.2683 3.8908 4.0567 +O 12.3128 13.0083 3.6120 +H 18.4474 15.3346 11.0675 +O 19.8989 15.8103 7.4424 +H 10.7015 8.4854 3.2348 +40 20.0 20.0 20.0 +frame 29 +O 5.4564 2.7839 10.5682 +H 11.2221 13.8977 4.3355 +O 14.2690 3.9326 19.7588 +H 14.0776 0.5303 4.5854 +O 5.4041 7.6574 6.7624 +H 18.8666 9.5665 2.7619 +O 18.0426 15.6990 16.8642 +H 13.6761 5.0210 16.4030 +O 3.6717 1.9334 14.4510 +H 13.7211 4.9821 7.2294 +O 9.1947 3.7873 0.1932 +H 9.8697 13.2880 17.8282 +O 19.8119 19.3965 15.2128 +H 11.7342 12.2934 4.2527 +O 6.4044 14.7548 4.0756 +H 7.8346 17.0537 3.1887 +O 0.8557 0.2413 16.7938 +H 12.0322 14.6986 6.6101 +O 14.7811 6.2564 6.7674 +H 6.6786 2.2508 13.2427 +O 4.5038 2.2020 3.7593 +H 15.7994 7.4902 13.0243 +O 5.8319 6.4959 13.0865 +H 17.3127 13.1994 9.5418 +O 11.4278 14.9071 17.6851 +H 1.8619 11.1495 7.7972 +O 6.9540 18.9918 4.2143 +H 8.0918 2.1194 7.6346 +O 5.6258 11.0220 12.6070 +H 11.2876 7.7200 4.9995 +O 4.1590 0.9570 10.9233 +H 1.5233 11.3571 0.2944 +O 3.1253 1.0818 17.3284 +H 8.3327 4.3729 4.1798 +O 0.9662 9.8730 3.3542 +H 3.2591 3.7125 4.0463 +O 12.6087 12.9950 4.4613 +H 18.4102 15.3292 10.7170 +O 0.0389 15.3578 7.9981 +H 10.7368 8.5177 2.9610 +40 20.0 20.0 20.0 +frame 30 +O 5.2819 3.3533 10.4847 +H 11.1604 14.3097 4.2114 +O 14.4168 3.9462 19.4186 +H 14.3700 0.9126 4.5504 +O 5.7687 7.7210 6.6302 +H 18.7616 9.6211 2.5387 +O 17.8342 16.4960 17.0031 +H 14.3202 4.9366 15.9471 +O 4.0489 2.0109 14.8943 +H 14.0117 5.4946 6.9210 +O 8.8299 3.4445 0.2186 +H 9.6772 13.3166 17.4569 +O 0.0407 19.4011 15.2612 +H 11.6945 12.4106 3.9787 +O 6.5368 14.9180 3.9256 +H 7.7774 16.7081 3.2818 +O 0.7884 0.1941 16.9604 +H 12.5323 14.8643 6.6511 +O 14.6879 6.7955 6.6420 +H 6.2777 1.9407 13.3634 +O 4.6573 2.3336 3.9966 +H 15.5191 7.4918 12.7649 +O 5.7457 6.0248 13.4013 +H 17.3274 13.7097 9.5058 +O 11.4457 14.4119 18.2346 +H 1.4335 11.4363 7.3414 +O 7.1510 18.7238 4.1213 +H 7.9034 2.2789 7.6297 +O 5.2331 11.1361 12.6483 +H 11.4625 7.9183 4.9817 +O 4.2777 1.0477 11.3267 +H 1.3641 11.6219 0.5992 +O 3.3601 1.7464 16.5600 +H 8.0762 4.0048 4.1878 +O 1.0628 9.5163 3.6121 +H 3.4442 3.6858 3.7344 +O 12.6299 13.0716 4.9995 +H 18.6901 15.4001 10.7157 +O 0.1095 15.1185 8.0415 +H 10.4735 8.6096 2.6724 +40 20.0 20.0 20.0 +frame 31 +O 5.3942 3.0099 10.5264 +H 11.1315 14.3542 4.1598 +O 14.7568 4.2765 19.1742 +H 14.1634 1.2148 4.4825 +O 5.9180 7.4408 6.1926 +H 18.8409 9.2767 2.3755 +O 18.3896 16.9224 17.0389 +H 14.3419 5.4881 15.9864 +O 3.7071 2.0766 14.8778 +H 13.9432 5.6126 6.9735 +O 9.2129 3.5665 0.0103 +H 9.8818 13.8112 16.8642 +O 19.9480 19.6136 14.6955 +H 11.5283 12.4524 3.7660 +O 7.1884 14.8632 4.2174 +H 7.4856 16.6679 3.3599 +O 0.7664 0.1383 17.0175 +H 12.7335 14.5429 6.5763 +O 14.9301 6.4899 6.6196 +H 6.4563 2.2431 13.2275 +O 4.6800 2.0560 4.0324 +H 15.6785 7.7194 12.9611 +O 5.7332 5.6145 13.0337 +H 17.1972 14.2450 9.1754 +O 10.9771 14.6305 18.2947 +H 1.3301 11.4931 7.7694 +O 6.9781 18.9884 4.1359 +H 8.4254 2.3163 7.9117 +O 5.2976 10.5709 12.5306 +H 11.7506 7.6860 5.1383 +O 4.0410 1.2469 11.8384 +H 1.4393 11.2579 0.6102 +O 3.0096 2.3001 17.0027 +H 7.6055 4.0113 4.2205 +O 1.2480 9.6013 4.5308 +H 3.1716 3.7638 3.0382 +O 12.9839 13.1890 5.2399 +H 18.7331 15.2351 11.0866 +O 0.1512 14.8459 8.0114 +H 10.6050 9.0087 2.5701 +40 20.0 20.0 20.0 +frame 32 +O 5.0387 3.3163 10.1242 +H 10.7674 14.4317 4.2024 +O 14.8058 4.1013 18.4616 +H 13.9723 1.3066 3.9742 +O 6.1305 7.5852 5.9655 +H 18.4869 8.7022 2.0907 +O 17.9528 17.0896 16.9761 +H 14.6438 5.1642 16.2449 +O 3.1997 1.7858 14.9297 +H 14.2852 5.6349 7.0003 +O 8.7524 3.8337 0.4520 +H 9.5803 13.5328 17.3426 +O 19.6833 19.3564 14.8080 +H 11.8882 12.5276 3.8708 +O 7.2317 15.0141 4.3232 +H 7.4777 16.5159 3.4602 +O 0.8279 19.7544 17.3209 +H 12.1208 15.0753 6.2606 +O 14.7065 6.5721 6.4289 +H 6.5895 2.2461 13.7042 +O 4.7970 2.0211 4.4653 +H 15.3339 7.9208 13.7408 +O 5.4080 5.8179 12.9302 +H 17.4446 14.4266 9.2531 +O 10.8451 14.3545 18.4851 +H 1.3527 10.9036 7.6615 +O 6.7716 18.7158 4.4895 +H 8.3214 2.1593 7.6695 +O 5.3943 10.5835 12.7823 +H 11.6748 7.6999 4.8075 +O 3.8016 1.5035 11.5902 +H 2.0808 11.5015 0.7346 +O 3.1518 2.3982 16.8238 +H 7.6375 3.8606 4.1840 +O 1.2871 10.2826 4.2766 +H 3.4065 3.5282 3.0641 +O 13.0524 13.2884 4.7276 +H 18.4695 15.1149 10.8001 +O 0.4018 14.6775 7.9857 +H 10.2358 9.1171 2.5509 +40 20.0 20.0 20.0 +frame 33 +O 4.5934 3.4163 10.2351 +H 11.0661 14.2879 4.0395 +O 14.9423 3.9368 18.4368 +H 13.3216 1.2677 3.6646 +O 5.9019 7.7426 5.7883 +H 18.4445 8.3193 2.1588 +O 17.6232 17.5560 17.3020 +H 14.3533 5.5944 15.6075 +O 3.2799 1.9556 15.5630 +H 14.0126 5.9577 7.3121 +O 8.8621 3.8618 0.4629 +H 9.6647 14.1494 17.0868 +O 0.0822 19.2300 14.5036 +H 12.4706 12.7663 3.8974 +O 7.2002 15.0732 4.0808 +H 7.3896 16.4944 3.0780 +O 0.7604 19.9885 16.6483 +H 12.3651 14.9643 6.6369 +O 14.6483 6.3467 6.6406 +H 6.6267 2.3382 13.6289 +O 4.7798 2.0223 4.5623 +H 15.4364 7.7253 13.8221 +O 4.9452 5.4636 12.8544 +H 17.6076 14.0812 9.7694 +O 10.4050 14.0051 18.5125 +H 1.6995 11.0019 8.3505 +O 6.6886 19.0075 4.5774 +H 8.1898 1.8830 7.3643 +O 6.0069 10.6362 12.5708 +H 12.0834 7.7598 4.5624 +O 3.7395 2.1646 11.3168 +H 1.8107 11.9103 0.8489 +O 3.5437 2.6934 17.3199 +H 7.3654 4.0991 4.1696 +O 0.9119 10.4276 4.2351 +H 3.3007 3.8418 3.0763 +O 12.7803 13.0123 5.0851 +H 18.0004 15.0618 10.6985 +O 0.4746 14.5322 7.2569 +H 10.2912 9.0832 2.5695 +40 20.0 20.0 20.0 +frame 34 +O 4.2385 3.3322 10.0350 +H 11.3181 14.2548 3.9942 +O 14.6936 4.1419 18.1388 +H 13.4939 1.0568 3.9501 +O 5.9414 7.6028 5.7872 +H 18.5354 8.3107 2.2866 +O 17.0120 17.9858 17.3310 +H 14.4332 5.6223 15.4550 +O 3.5940 2.1675 15.3150 +H 14.4288 6.3135 7.4262 +O 8.8529 3.5357 0.9271 +H 9.2777 13.7757 16.9613 +O 0.1205 19.1452 14.4641 +H 12.5048 12.8169 3.7227 +O 6.9498 15.2015 4.4573 +H 7.7148 16.4252 3.6853 +O 0.4799 19.5512 16.6041 +H 11.9794 14.8761 6.6358 +O 14.5328 6.3253 7.0531 +H 6.2306 2.1724 13.1016 +O 4.1772 2.0792 4.4791 +H 15.6074 7.4538 14.0071 +O 5.1305 5.7736 13.2505 +H 17.2201 14.0929 10.3098 +O 10.0962 14.0386 18.5359 +H 0.9682 10.9061 8.6861 +O 6.8092 18.3913 4.7189 +H 8.6391 1.4183 7.4152 +O 6.1831 10.8443 12.5707 +H 12.2611 7.6797 4.5724 +O 3.7506 2.1242 11.5899 +H 2.0876 11.5345 0.4935 +O 3.9666 2.5046 17.5223 +H 7.5948 4.3564 4.4965 +O 1.2543 9.6083 3.6809 +H 3.7354 4.1196 3.0271 +O 12.6303 13.5264 5.3264 +H 18.0850 15.5940 11.1194 +O 0.6471 14.7221 7.5787 +H 10.3187 8.7643 1.6200 +40 20.0 20.0 20.0 +frame 35 +O 4.1028 3.0238 9.6286 +H 11.6805 14.2849 3.9417 +O 15.0474 4.4794 18.2340 +H 13.4048 0.8858 4.1775 +O 4.9627 7.7344 5.8972 +H 18.7568 8.2204 2.4162 +O 17.0513 18.0649 17.9948 +H 14.6240 5.8176 15.3590 +O 3.3638 1.6212 15.4171 +H 14.0903 6.0685 7.1103 +O 9.2739 3.6689 0.8271 +H 9.2660 13.7870 16.5860 +O 0.2867 19.1202 14.5412 +H 12.1880 13.2060 4.0830 +O 7.0833 15.2282 4.6056 +H 7.7132 16.7140 3.4709 +O 0.3769 19.9771 16.9096 +H 12.1845 14.9611 7.0508 +O 14.1232 6.3515 7.2392 +H 6.2661 1.9185 13.0729 +O 4.3924 2.0201 4.8007 +H 15.6059 8.0422 13.8239 +O 4.6856 6.2255 13.6212 +H 17.7428 14.0942 10.2494 +O 10.4373 13.7941 18.5393 +H 0.5232 11.1559 8.4780 +O 6.0110 17.9567 4.7880 +H 8.3442 1.7754 7.2466 +O 6.1413 10.7082 12.9494 +H 11.6629 7.4046 4.5238 +O 3.9748 1.6988 11.6068 +H 2.2079 11.0768 0.8133 +O 3.5563 3.1589 17.4027 +H 7.5710 4.1097 4.7552 +O 1.4220 9.4958 4.0964 +H 3.9123 3.9681 2.6561 +O 13.1324 13.6030 5.0628 +H 17.8969 15.9762 10.8270 +O 0.6702 14.5706 7.5998 +H 9.8891 8.5337 1.4751 +40 20.0 20.0 20.0 +frame 36 +O 4.2409 2.8221 9.9730 +H 11.6748 14.0338 4.1421 +O 14.9983 4.3677 18.3637 +H 13.1352 0.7876 4.6157 +O 4.6400 7.3532 5.8264 +H 18.5369 8.2926 2.6949 +O 17.4111 18.7585 17.7860 +H 14.6026 5.3493 15.4965 +O 3.3769 1.1275 15.5676 +H 14.3896 5.7917 7.0615 +O 9.5133 3.6795 0.5852 +H 9.3546 13.8193 16.4774 +O 0.3273 18.5774 14.5394 +H 12.3242 13.3890 4.2507 +O 6.9847 15.2372 4.0284 +H 7.6705 16.7735 3.4704 +O 19.9572 0.0048 16.4843 +H 11.6341 14.9429 6.9967 +O 14.0471 6.6728 6.8368 +H 6.3346 2.2601 13.1427 +O 4.9339 2.0374 4.7847 +H 16.1215 7.9044 13.8872 +O 4.6585 6.2740 13.5681 +H 17.5247 14.6353 10.2472 +O 10.4298 14.4143 19.2560 +H 0.0555 10.8024 7.5486 +O 6.4244 17.8125 4.8946 +H 8.5306 1.5590 7.4882 +O 6.2667 10.4667 13.0952 +H 12.0133 7.3950 4.6018 +O 3.5392 1.9553 12.2330 +H 2.1870 11.3128 0.7225 +O 3.6647 2.8617 16.8143 +H 7.7682 4.0797 5.0979 +O 1.2121 8.9597 3.9614 +H 4.0142 4.3842 2.9542 +O 13.3322 13.4760 5.3129 +H 18.1728 16.1811 11.9049 +O 0.8644 14.1926 8.0422 +H 9.6721 8.3639 0.9550 +40 20.0 20.0 20.0 +frame 37 +O 4.4238 2.6372 9.5504 +H 11.7281 13.8117 3.8418 +O 14.7059 4.6212 18.4977 +H 12.8751 1.1474 4.2589 +O 5.2210 7.1100 5.7277 +H 18.4082 8.5649 2.6177 +O 17.7507 19.0260 17.7775 +H 14.7770 5.1079 15.0133 +O 3.5104 1.2135 16.0866 +H 14.6485 5.5204 7.4524 +O 9.6132 3.9882 0.6937 +H 9.4316 13.7784 16.6685 +O 19.8169 18.6820 14.8740 +H 12.4151 13.7448 3.9576 +O 7.2053 15.2750 4.3653 +H 7.5689 17.2432 3.3158 +O 19.8943 0.1810 16.3288 +H 11.5974 14.9007 7.3432 +O 14.2045 7.0141 6.4226 +H 6.8770 2.3018 13.4715 +O 5.2140 1.9390 4.7436 +H 16.4293 8.2802 13.4667 +O 4.9293 5.8816 13.8471 +H 17.5757 14.2221 10.2864 +O 10.8255 14.4920 19.2684 +H 0.0145 10.9008 7.3780 +O 6.8878 17.9315 5.3593 +H 8.5294 1.5758 6.9697 +O 6.2650 9.9853 13.1842 +H 12.0588 7.4618 4.2849 +O 3.1493 1.8295 12.2796 +H 2.0368 11.0700 0.3684 +O 3.6313 2.5536 16.9787 +H 7.8281 3.9084 5.0042 +O 1.4566 9.4696 4.1212 +H 4.0825 4.3875 2.6365 +O 13.4564 13.3489 5.2894 +H 18.1624 16.1101 12.3336 +O 0.4515 14.4002 8.4959 +H 9.6037 9.0687 1.0875 +40 20.0 20.0 20.0 +frame 38 +O 4.2484 2.1950 9.5609 +H 12.0284 13.6650 3.8118 +O 15.0090 4.6092 18.4441 +H 12.7559 1.7151 4.8060 +O 5.1856 6.8065 5.5681 +H 18.4561 8.9326 2.3122 +O 17.6458 19.1150 17.8566 +H 14.8209 4.6380 15.2188 +O 3.5837 1.0896 16.1964 +H 14.8094 5.8253 7.6033 +O 9.3515 4.2785 0.8469 +H 10.0208 14.3261 16.4520 +O 19.7633 18.7656 14.5042 +H 12.7714 13.6233 4.0235 +O 7.0899 15.5170 4.2705 +H 7.7393 17.2816 3.1891 +O 19.8914 0.3713 15.9383 +H 11.7296 14.7240 6.8600 +O 13.7193 6.8796 6.2838 +H 6.7211 1.9362 13.1854 +O 5.0451 1.5214 5.1079 +H 15.7977 8.2657 13.5598 +O 4.7391 5.9498 13.9239 +H 17.4821 13.9770 10.5206 +O 10.8705 14.3638 19.4088 +H 0.0463 10.9942 7.1876 +O 6.3367 18.2169 5.6408 +H 8.5893 1.6077 6.6408 +O 5.9462 9.7720 13.1312 +H 11.8778 7.5928 4.1903 +O 2.9117 2.0235 12.4007 +H 1.7371 10.8386 0.1081 +O 3.4894 2.8808 17.2753 +H 7.3767 4.2434 4.5690 +O 1.6500 9.4316 3.8883 +H 4.2884 4.2936 2.5624 +O 13.0638 13.0777 5.8064 +H 18.0401 15.5911 12.5576 +O 0.6182 14.4127 9.1613 +H 9.9704 8.9571 1.3380 +40 20.0 20.0 20.0 +frame 39 +O 4.3274 1.6053 9.0954 +H 12.0567 13.3378 3.8247 +O 15.1188 4.2324 18.2158 +H 13.2285 1.5703 4.5136 +O 4.9588 6.9914 5.7921 +H 18.5964 8.6234 2.2265 +O 18.0903 19.2058 18.0618 +H 14.8825 4.2073 14.7675 +O 3.7260 1.0937 16.0328 +H 14.7231 5.9077 8.2226 +O 8.8012 4.8546 1.1725 +H 10.3738 14.2722 16.3912 +O 19.8642 18.8643 14.6392 +H 13.1424 13.8066 4.3650 +O 6.7658 15.6290 4.5549 +H 7.6699 17.3806 3.0442 +O 19.8851 0.9424 15.8462 +H 11.4230 14.7573 6.7740 +O 14.0206 7.0860 6.3527 +H 7.1100 1.9704 12.7104 +O 5.0913 1.4530 5.2925 +H 15.4191 8.4084 13.9868 +O 4.6249 5.9065 14.3520 +H 17.5354 13.8343 10.6144 +O 10.2769 14.7732 19.6640 +H 0.2499 10.9628 7.0552 +O 6.1055 17.8676 6.2050 +H 8.5931 1.8696 6.8962 +O 6.0089 9.5337 13.1499 +H 11.4698 7.2990 4.0229 +O 2.6813 2.0012 12.2147 +H 1.8358 10.8619 0.4454 +O 3.2382 2.8903 17.2475 +H 7.7370 4.8837 4.5715 +O 1.4086 9.0770 3.5050 +H 4.7292 4.2799 2.4194 +O 13.5887 12.5245 5.6135 +H 17.9400 15.8183 12.2506 +O 0.3413 14.5534 9.0250 +H 9.8698 9.5156 1.4669 +40 20.0 20.0 20.0 +frame 40 +O 4.2575 1.3047 9.0358 +H 11.9769 13.3381 3.1844 +O 15.3752 3.8618 18.5030 +H 13.3926 1.5544 4.7139 +O 4.9296 6.8124 5.9484 +H 18.5279 8.8311 2.4778 +O 17.9119 19.7959 18.0227 +H 14.4259 4.4862 14.7486 +O 3.8485 1.2996 15.5874 +H 14.4199 5.6784 8.5069 +O 8.5874 4.5630 1.1318 +H 9.6305 14.2667 16.2264 +O 19.9260 17.9808 14.1174 +H 13.0088 14.0808 5.0211 +O 6.5512 15.9548 4.5676 +H 7.7675 17.8342 3.0862 +O 19.6850 0.7198 16.0931 +H 10.8186 14.6139 6.7393 +O 13.8811 7.3706 7.1089 +H 7.2491 1.6934 12.8013 +O 5.1205 1.4694 5.0688 +H 15.5388 8.2263 14.4579 +O 4.8275 6.4970 14.4711 +H 17.6315 13.8051 10.3027 +O 10.4126 15.0068 19.7022 +H 0.5224 10.9036 6.9780 +O 6.1703 17.5372 6.2498 +H 8.7107 1.7157 6.5901 +O 5.8842 9.0333 13.0325 +H 11.2057 7.5077 4.1879 +O 3.0151 2.1495 12.3891 +H 2.7324 10.9427 0.5508 +O 3.0563 2.0744 17.3855 +H 8.1388 4.5869 4.2086 +O 1.6428 8.8726 3.5445 +H 4.6473 4.0852 2.2848 +O 13.8144 12.0346 5.7943 +H 17.9917 15.8925 11.8945 +O 0.6880 14.5486 9.5233 +H 9.5587 9.3247 1.4074 +40 20.0 20.0 20.0 +frame 41 +O 4.1679 1.4728 9.0574 +H 11.5213 13.4943 3.2100 +O 15.3182 3.6224 18.6982 +H 13.6772 1.8003 4.8316 +O 4.8991 6.5040 6.5717 +H 18.5767 8.5623 2.2434 +O 18.1552 19.4592 17.9316 +H 14.4232 4.8755 14.5370 +O 3.5229 1.2786 15.0658 +H 14.0471 5.6476 8.3337 +O 8.7213 4.7192 1.1518 +H 9.8710 14.4144 16.2445 +O 0.3805 18.6899 13.8370 +H 13.0025 13.8919 4.8227 +O 6.5656 15.9608 4.5694 +H 7.8665 17.9592 3.0085 +O 19.5513 0.7492 15.6823 +H 11.0683 14.4246 7.2120 +O 13.6109 7.6360 6.6810 +H 7.4550 1.7916 13.0055 +O 5.0726 1.3111 5.3809 +H 15.4950 8.6118 14.7606 +O 4.9189 6.8494 14.8641 +H 17.6900 13.8480 10.4437 +O 10.1746 14.7749 19.9939 +H 0.5204 11.5958 6.6728 +O 6.0493 17.1659 5.6896 +H 9.1443 1.4401 6.4509 +O 6.0688 9.2969 12.6534 +H 11.5664 6.9680 4.3974 +O 2.8162 2.1492 12.9767 +H 2.9773 10.9209 0.2170 +O 3.3231 1.8171 17.4319 +H 8.7273 4.9021 4.6043 +O 1.3877 8.8686 3.5615 +H 4.3485 3.8446 2.2319 +O 14.0746 12.1919 6.1711 +H 17.8125 15.3402 11.9616 +O 0.4154 14.1854 9.3435 +H 9.1885 9.2631 1.1579 +40 20.0 20.0 20.0 +frame 42 +O 3.9386 1.3098 8.6829 +H 11.4016 13.7098 3.1917 +O 15.4598 3.6131 18.8710 +H 14.3019 1.6409 4.6178 +O 5.0842 7.0973 6.6897 +H 18.3037 8.5621 1.5805 +O 18.0018 19.0543 18.4096 +H 14.2013 4.8010 14.5581 +O 2.9929 1.1212 14.8113 +H 13.9320 5.5794 8.2540 +O 7.9722 4.5561 1.2499 +H 9.5401 14.8360 16.2625 +O 1.0350 18.1971 14.1804 +H 13.0692 13.6781 4.6909 +O 6.5164 16.1287 4.6610 +H 8.1637 17.5679 3.7318 +O 19.5124 0.7775 15.7035 +H 11.5673 14.5010 7.6902 +O 13.8642 7.0816 6.8354 +H 7.7913 2.1718 13.0680 +O 4.7002 1.2785 5.6441 +H 15.3755 8.5788 15.0070 +O 4.6059 6.9140 14.8374 +H 17.5434 13.6795 10.6270 +O 9.9959 14.3637 0.0990 +H 0.6622 11.8308 7.0325 +O 6.1330 17.1222 5.2315 +H 9.0164 2.0077 6.1013 +O 6.3057 9.6542 12.3103 +H 12.0292 6.8132 3.8354 +O 3.0376 2.3624 12.5755 +H 2.8457 10.7901 0.4753 +O 2.8861 2.0405 17.4801 +H 9.0278 5.0370 4.6977 +O 1.3570 8.4943 3.0822 +H 3.8732 4.0491 2.3111 +O 13.7649 12.4791 5.7431 +H 17.8355 15.6136 12.5511 +O 0.9555 14.1363 8.8817 +H 9.2154 9.2037 0.8162 +40 20.0 20.0 20.0 +frame 43 +O 3.7875 1.3146 8.5642 +H 11.4957 14.2569 3.3769 +O 15.2877 3.6143 19.0697 +H 14.3739 1.8404 4.4783 +O 4.7503 6.7664 6.5460 +H 17.9666 9.0618 1.6055 +O 18.3426 19.6160 18.7001 +H 14.2299 4.4600 14.4597 +O 3.4072 1.2711 15.5564 +H 14.0427 5.7235 8.0386 +O 8.0929 4.5247 1.6964 +H 9.3167 14.7089 16.4200 +O 0.8754 17.9559 14.3391 +H 12.9192 13.5067 5.0723 +O 6.5030 15.7984 4.1480 +H 8.2244 17.5322 4.0154 +O 19.2519 0.8428 15.4716 +H 11.1388 14.0895 7.9074 +O 14.0891 7.3283 7.0466 +H 8.0535 2.5011 12.9412 +O 4.5896 1.0539 5.4884 +H 15.0915 8.1025 14.5355 +O 4.9233 6.4588 15.2394 +H 17.2332 13.3124 10.5622 +O 9.5480 14.3448 0.0817 +H 0.5070 11.8477 6.4368 +O 5.9473 17.1011 4.9494 +H 9.3665 2.2914 5.9717 +O 6.3469 9.7554 12.0155 +H 12.1758 6.7757 3.7961 +O 3.0380 2.6680 12.3971 +H 2.9714 10.6109 0.1853 +O 3.5121 2.0539 17.4452 +H 9.1483 5.4527 4.7637 +O 1.2223 8.7349 3.0288 +H 3.2333 3.8281 2.3713 +O 13.8136 12.3773 5.2325 +H 18.2472 15.7965 12.6306 +O 1.5485 13.9421 8.9413 +H 9.5161 9.1879 0.5516 +40 20.0 20.0 20.0 +frame 44 +O 3.6144 1.0996 8.0044 +H 11.4496 14.0383 3.4966 +O 15.2618 3.0267 19.5839 +H 14.5561 1.8687 4.2276 +O 5.3923 6.6826 6.4715 +H 18.0099 8.9749 1.6174 +O 18.2203 19.1102 19.1531 +H 14.5392 4.4665 14.3913 +O 3.7150 1.4517 15.7312 +H 14.1889 5.9033 7.5331 +O 7.9964 4.8436 1.5726 +H 9.3520 15.0463 16.2943 +O 1.0718 17.7508 13.6456 +H 13.0856 13.5958 5.2470 +O 6.5336 16.2034 3.9973 +H 8.6632 17.9664 4.2571 +O 19.1412 0.9508 15.0517 +H 10.4983 14.3291 7.8309 +O 13.4827 7.3220 6.8318 +H 8.0027 2.6693 12.5105 +O 4.8162 1.0054 5.5543 +H 15.1312 8.0902 14.4936 +O 4.8819 6.5088 15.2351 +H 17.7329 13.4260 10.7137 +O 9.3206 14.0892 0.4674 +H 0.7491 12.1122 6.3507 +O 5.8153 17.1264 5.4268 +H 9.1641 2.0983 6.3248 +O 6.6629 9.4719 12.2152 +H 12.0956 6.9334 3.8699 +O 3.1851 2.6583 12.0636 +H 3.0565 10.2364 0.6751 +O 3.2651 1.5378 17.4944 +H 9.0381 5.8190 4.9500 +O 1.0847 8.7864 2.6283 +H 3.3280 3.6413 3.1261 +O 13.7017 11.9456 5.5361 +H 18.4713 15.9225 12.3035 +O 1.4801 13.0525 8.9317 +H 9.2888 9.4484 0.7346 +40 20.0 20.0 20.0 +frame 45 +O 4.0176 1.1401 8.4361 +H 11.5096 14.4763 3.0253 +O 15.2530 3.1084 18.9131 +H 14.5722 1.8393 4.2886 +O 5.7847 6.1779 6.9642 +H 17.4809 8.7768 1.8625 +O 18.0448 18.7594 19.3719 +H 14.6601 4.2820 13.9597 +O 4.2364 2.1457 14.8440 +H 14.5362 6.0053 7.5556 +O 8.0865 4.6012 1.9490 +H 9.2319 15.0439 16.1987 +O 1.1873 17.0723 13.1223 +H 13.2939 13.7063 5.0089 +O 6.6443 15.9610 3.9576 +H 8.3704 18.0801 4.3592 +O 19.0111 1.1660 15.1022 +H 10.5982 14.8020 7.8189 +O 13.3850 6.9443 7.1616 +H 7.8783 2.8660 12.2388 +O 5.3057 1.3085 5.9710 +H 15.0326 7.9168 14.5917 +O 4.2097 6.7486 15.3081 +H 18.3003 13.6649 10.7257 +O 9.3441 14.2693 0.4522 +H 1.0100 12.0576 6.0440 +O 5.9685 17.3328 5.3933 +H 9.0298 1.7032 6.3616 +O 6.9067 9.0882 12.0824 +H 11.8359 6.9942 4.3882 +O 3.5686 2.4870 12.3921 +H 2.7765 9.9369 1.1999 +O 3.3155 1.8669 17.0624 +H 9.3885 5.7467 4.8946 +O 0.6772 8.9874 2.3310 +H 3.7126 3.5456 2.9372 +O 14.0731 11.8009 5.3936 +H 18.9065 16.1443 12.7871 +O 1.5107 13.2594 9.0324 +H 9.9866 9.4327 0.5264 +40 20.0 20.0 20.0 +frame 46 +O 3.8773 1.1303 8.4432 +H 11.4286 13.9613 2.5946 +O 14.7149 3.9940 18.9671 +H 14.8665 1.9362 4.4081 +O 5.4978 6.0196 6.6711 +H 17.1816 9.1603 1.9503 +O 18.4552 18.9189 19.1855 +H 14.7728 4.1265 14.0402 +O 3.7541 1.8723 14.5751 +H 14.2924 6.0736 7.6476 +O 8.5959 5.0838 2.1585 +H 9.3209 14.3980 16.2946 +O 1.1213 17.0869 13.4620 +H 13.2999 13.6927 4.8346 +O 6.5675 16.1304 4.3969 +H 8.7049 18.2208 4.4994 +O 18.4599 0.9817 15.2736 +H 10.4828 15.1722 8.1611 +O 13.4234 6.5661 7.2645 +H 8.1440 3.2287 12.4379 +O 5.4657 1.7208 5.5003 +H 14.5675 7.6264 14.5932 +O 3.6959 6.9895 14.9070 +H 18.3092 13.6170 10.9134 +O 8.9251 14.7928 0.6756 +H 1.4457 11.8219 6.1096 +O 5.5784 18.0677 5.2270 +H 9.3799 1.9175 6.2633 +O 7.2016 8.9888 11.8874 +H 12.3206 7.2338 3.7986 +O 2.9595 2.6622 12.5832 +H 2.6632 9.4190 1.2375 +O 3.5788 1.5112 17.3529 +H 9.2782 5.9868 4.2465 +O 1.0414 8.9563 2.9453 +H 3.8684 3.3689 2.7332 +O 14.1384 12.0854 5.5610 +H 18.7613 16.2941 13.2334 +O 1.6442 14.1001 9.2694 +H 10.0497 9.4138 0.4299 +40 20.0 20.0 20.0 +frame 47 +O 4.0901 1.1914 9.2469 +H 11.2119 13.7699 2.3893 +O 14.5915 4.7060 18.9050 +H 15.2828 2.0836 4.3766 +O 5.6326 6.5076 6.5415 +H 16.9709 9.3944 2.0384 +O 18.8210 18.7358 19.6648 +H 15.0020 4.0872 13.4312 +O 3.3326 2.1556 14.6430 +H 14.5784 6.0478 7.3790 +O 8.7758 5.1619 1.8613 +H 8.9326 14.4697 16.0791 +O 1.9328 17.0463 13.7175 +H 13.2631 13.5275 4.7374 +O 6.6139 16.5245 4.1607 +H 8.4577 18.4772 4.4626 +O 18.5847 0.9953 15.3144 +H 10.6909 15.5371 7.7940 +O 13.2686 6.3599 7.1083 +H 8.5485 3.4780 12.1507 +O 5.5184 1.4400 5.6278 +H 14.3820 7.1499 14.3421 +O 3.1391 7.3070 15.3030 +H 18.7065 13.9161 10.6677 +O 8.5655 15.2043 0.5602 +H 1.6451 11.8341 6.5307 +O 5.5992 18.0318 5.4263 +H 9.7534 2.1712 5.8638 +O 7.1161 9.0096 12.3446 +H 12.1862 7.3384 4.4210 +O 3.1297 2.7240 12.3340 +H 2.7564 9.2557 1.5868 +O 3.5832 2.0300 17.6658 +H 8.8550 5.8261 4.6717 +O 0.6735 9.1477 3.2577 +H 4.2213 3.4260 2.4629 +O 13.9789 12.0450 5.2790 +H 19.1161 16.4437 13.5093 +O 1.9948 14.2101 8.8700 +H 10.0289 9.0589 0.8451 +40 20.0 20.0 20.0 +frame 48 +O 4.3093 0.8940 9.4526 +H 11.6041 13.8131 2.1804 +O 14.4603 4.7977 18.7847 +H 15.5257 1.7400 4.0533 +O 5.8171 6.3377 7.1318 +H 16.6573 9.7429 1.9061 +O 18.5612 18.5021 19.6844 +H 15.2298 4.1171 13.4019 +O 2.9516 2.6719 14.6197 +H 14.5256 6.4414 7.3538 +O 8.7781 4.6179 1.9070 +H 9.0920 14.4571 16.3611 +O 2.2540 17.4581 13.8982 +H 13.4248 13.9190 4.3710 +O 6.5095 16.6405 4.0333 +H 8.2048 18.8526 4.5356 +O 18.6394 0.8961 15.7568 +H 10.9106 15.7834 7.8045 +O 13.0947 6.3829 7.0951 +H 8.2924 3.7810 12.2910 +O 5.3554 1.3052 5.8719 +H 14.5897 7.2931 14.2269 +O 3.1669 7.3232 15.8333 +H 18.5636 13.9876 11.1584 +O 8.5355 15.2144 0.3646 +H 1.4692 11.7471 7.0217 +O 5.2923 18.6525 5.7054 +H 9.6571 2.2767 5.9125 +O 6.9865 8.8753 11.7640 +H 11.7058 8.0171 4.9415 +O 3.3778 2.8487 12.2705 +H 2.4315 9.2084 1.6653 +O 3.5111 1.8492 18.1738 +H 9.2391 5.4047 4.6524 +O 0.5936 9.3728 2.9765 +H 4.4603 3.7210 2.1698 +O 13.8472 11.9337 5.7403 +H 18.9748 16.0758 13.5506 +O 2.3417 13.9601 8.6157 +H 10.4179 9.2648 0.6274 +40 20.0 20.0 20.0 +frame 49 +O 4.4010 0.7734 9.4242 +H 10.9267 13.7225 2.1143 +O 14.2469 4.6641 18.7088 +H 15.2924 1.0818 4.4083 +O 5.7536 6.1194 7.2368 +H 16.5705 9.8718 2.1733 +O 18.7072 18.2917 0.1385 +H 15.1673 3.8890 13.0897 +O 2.9076 2.3896 15.0893 +H 14.8030 6.6668 7.6712 +O 8.9512 4.8281 2.0731 +H 9.1834 14.7463 16.8242 +O 2.0945 18.0438 13.8886 +H 13.6971 13.6534 4.3176 +O 6.6095 17.3022 4.6088 +H 8.5448 18.5727 4.7302 +O 19.0512 0.8538 15.7642 +H 10.8497 15.5414 7.4996 +O 13.4715 6.2980 7.4419 +H 8.4143 4.0116 12.5970 +O 5.5900 1.5408 6.0408 +H 14.6653 7.2726 14.2336 +O 3.2750 7.6062 16.3382 +H 18.5763 13.7883 10.9434 +O 8.4358 15.1846 0.9268 +H 1.8133 11.6711 7.2236 +O 5.3297 18.7852 6.0479 +H 9.8288 2.1332 5.6462 +O 6.2243 8.6955 12.0231 +H 11.4869 7.9893 4.9729 +O 3.5016 2.9691 12.6145 +H 2.5579 9.0682 1.6814 +O 3.4323 2.2374 18.2604 +H 9.2146 5.4302 4.6200 +O 0.8507 9.1724 3.3727 +H 4.6700 3.9834 1.9078 +O 13.4833 12.1910 5.5499 +H 19.4788 16.1787 13.4363 +O 2.2659 13.4706 8.1350 +H 10.9848 8.9462 0.7982 +40 20.0 20.0 20.0 +frame 50 +O 4.5226 0.6932 8.6978 +H 10.5744 13.8029 2.1882 +O 14.4764 4.9454 18.5890 +H 15.1691 1.4073 3.9682 +O 5.6949 6.0804 7.4780 +H 16.0579 9.8654 2.3499 +O 18.4221 17.9936 0.1208 +H 15.6700 3.8724 13.5138 +O 3.0054 2.0768 14.9595 +H 15.0455 6.4400 7.7791 +O 8.7746 4.4813 2.1073 +H 9.1241 15.0018 16.8887 +O 2.2495 17.8721 14.1898 +H 14.0089 13.7478 3.8931 +O 7.2441 17.2097 5.0105 +H 8.6765 19.1645 4.5445 +O 19.2238 0.8999 16.1141 +H 11.4552 14.9394 7.0658 +O 13.0724 6.2696 7.4750 +H 7.7986 4.6961 12.2665 +O 4.8297 2.0223 6.2948 +H 14.9403 6.8650 14.2214 +O 4.0090 7.7828 16.9355 +H 18.5338 13.8371 11.1921 +O 7.8928 15.0713 1.0638 +H 1.7630 11.2478 7.0484 +O 5.3210 18.9637 5.8317 +H 9.6230 1.7545 5.3485 +O 6.2919 8.5683 11.6485 +H 11.0318 8.2025 5.5411 +O 4.0825 2.9516 12.7748 +H 2.7572 8.7150 1.4618 +O 3.0908 2.2799 17.7605 +H 9.1912 5.2885 4.0365 +O 0.5115 9.5016 3.3299 +H 4.3249 3.7188 1.8799 +O 13.6094 12.7104 5.4860 +H 19.5474 16.0784 14.0132 +O 2.6956 13.0589 7.9165 +H 10.8358 8.5314 0.5082 +40 20.0 20.0 20.0 +frame 51 +O 4.3197 1.1579 8.5819 +H 10.4942 13.9233 2.1787 +O 14.1530 4.3911 18.8045 +H 14.7216 1.4614 4.1270 +O 5.3701 6.2339 6.6402 +H 16.2854 9.0471 1.7273 +O 18.2444 18.0456 0.3485 +H 15.3032 3.7382 13.1927 +O 2.8797 2.3417 14.7796 +H 14.8851 6.8517 7.3895 +O 8.5595 4.8922 2.1960 +H 9.0537 15.2681 16.7418 +O 2.4919 18.2632 14.2661 +H 13.6853 13.7020 4.1508 +O 7.2044 17.0696 5.0314 +H 8.4915 18.9819 4.3018 +O 19.6812 0.6129 15.9180 +H 11.4609 14.7081 7.1973 +O 13.1647 6.2410 7.3151 +H 7.7530 4.9610 12.1042 +O 4.9864 1.9493 6.6951 +H 14.7136 7.2260 14.7040 +O 4.2595 7.9411 16.6433 +H 18.6684 13.7235 11.2902 +O 7.4697 14.6406 0.9312 +H 1.6505 11.2761 7.0590 +O 4.9727 19.1530 5.4281 +H 9.1880 2.0556 5.1548 +O 6.3662 8.5417 11.7253 +H 11.5502 8.3925 5.5028 +O 4.3037 2.7932 12.0954 +H 2.6941 8.8065 0.5151 +O 3.0935 1.9889 18.1673 +H 9.3341 5.6235 4.4047 +O 0.4342 9.4895 3.5258 +H 4.6305 4.1486 2.0868 +O 14.4393 13.1158 5.5352 +H 19.1642 16.5869 13.8638 +O 2.5642 12.5184 7.3066 +H 11.1698 8.5735 0.6257 +40 20.0 20.0 20.0 +frame 52 +O 4.3055 1.3260 8.6575 +H 10.4532 13.6944 2.1751 +O 14.1136 4.3232 19.1227 +H 14.5310 1.6935 4.3829 +O 5.4476 6.0892 6.2003 +H 15.9216 8.3375 2.0283 +O 18.1000 17.8782 0.0850 +H 15.1305 3.7450 12.5824 +O 2.8169 2.5235 14.8378 +H 14.4776 6.7972 7.0822 +O 8.4941 5.4327 2.3862 +H 9.2556 15.1049 16.7560 +O 2.2934 18.2142 14.3598 +H 13.6742 13.7021 4.4834 +O 7.1180 17.1821 5.3815 +H 8.3364 19.2018 4.0211 +O 19.7677 0.7403 15.7924 +H 11.3910 14.8577 7.3419 +O 13.9887 5.8221 7.3858 +H 7.3792 4.7054 12.2288 +O 5.1927 2.1033 6.3082 +H 14.6525 6.5393 14.3140 +O 4.1253 8.1548 16.2615 +H 19.3088 13.4265 11.3401 +O 7.5776 14.6399 1.0207 +H 1.4834 11.3448 6.8043 +O 4.8587 18.9442 5.6081 +H 8.8983 1.9012 5.5015 +O 6.6937 8.2591 11.9527 +H 11.4038 8.6854 5.5190 +O 4.4510 3.0207 12.4380 +H 2.2723 8.8974 0.3793 +O 3.2660 2.1109 18.5837 +H 9.2866 5.3324 4.2540 +O 0.2296 9.5210 3.6789 +H 4.4805 4.1654 2.3099 +O 14.2359 13.0728 5.9234 +H 18.5875 16.4025 13.4862 +O 2.0991 12.1075 7.6047 +H 11.1562 8.1899 0.4446 +40 20.0 20.0 20.0 +frame 53 +O 4.6486 1.3311 9.0135 +H 10.0370 13.5629 2.5131 +O 14.0519 3.8347 19.4993 +H 14.4192 1.7684 4.3481 +O 5.2528 6.0022 6.0517 +H 15.9183 9.0046 2.1302 +O 17.9297 17.3571 19.9199 +H 14.6327 4.1183 12.8344 +O 3.3421 2.1479 14.9662 +H 14.3465 6.5345 6.9365 +O 8.3684 6.0093 2.5891 +H 8.9533 14.7552 16.8838 +O 2.3403 18.2029 13.6807 +H 13.4063 13.4373 4.3799 +O 7.8319 17.4937 5.4635 +H 7.8406 19.2678 4.0210 +O 0.1036 0.8272 15.3842 +H 11.3603 14.6125 7.5100 +O 14.5200 5.6527 7.1042 +H 7.3987 4.5601 12.7045 +O 5.6606 2.6185 6.1874 +H 14.5887 6.8283 14.2615 +O 4.3584 8.7720 16.3681 +H 19.2677 13.5916 11.1747 +O 7.7050 14.3679 0.6083 +H 1.3693 11.4169 6.6646 +O 4.9109 19.4316 5.6944 +H 9.2360 1.5610 5.9025 +O 7.0792 8.7372 11.8038 +H 11.7709 9.7375 5.6643 +O 4.5264 3.1446 12.4532 +H 2.5461 9.3142 0.4900 +O 2.8716 1.4185 18.3506 +H 9.3486 5.2500 3.9633 +O 0.0571 9.3088 3.5864 +H 4.4864 3.9421 2.0844 +O 13.8864 12.6987 5.7554 +H 18.3895 16.8350 13.7590 +O 2.3851 12.2747 7.6124 +H 10.7344 8.2429 0.2040 +40 20.0 20.0 20.0 +frame 54 +O 4.7096 1.8260 8.9820 +H 9.9026 13.3005 2.0808 +O 13.5162 3.5740 19.1400 +H 14.4621 1.1830 4.2487 +O 5.3122 5.9560 5.8678 +H 15.6225 8.5538 2.3281 +O 17.9075 17.4084 0.2884 +H 14.0194 4.1234 13.0717 +O 3.2555 2.5247 14.7559 +H 14.1552 6.4523 6.7982 +O 8.6350 5.9682 3.3307 +H 8.7217 14.5744 17.1337 +O 2.2123 18.2791 13.6129 +H 13.8585 13.4521 4.4528 +O 7.5043 17.6586 5.9205 +H 7.8696 19.1758 3.9693 +O 0.4358 0.7792 15.0442 +H 11.2631 14.7257 7.3933 +O 14.3372 5.7973 7.5422 +H 7.7264 4.5588 12.7035 +O 5.3048 2.2902 6.3993 +H 14.6918 6.5568 14.7754 +O 4.3113 8.7420 16.4451 +H 19.7816 13.2150 11.0724 +O 7.3415 14.5675 0.5899 +H 1.4393 12.0087 6.9983 +O 4.9500 19.4860 5.9767 +H 9.3267 0.9034 6.0873 +O 6.9516 8.7020 11.9149 +H 11.9476 9.5272 5.7678 +O 5.3287 2.7739 12.9875 +H 2.7858 9.7137 0.5567 +O 3.4625 1.4555 18.5415 +H 9.1239 5.5229 3.7804 +O 19.4920 8.8863 3.4469 +H 4.7037 4.2347 1.7047 +O 14.0750 12.3214 5.8419 +H 18.8953 17.0842 13.7067 +O 1.8469 12.3649 7.0435 +H 10.8160 8.6208 0.2319 +40 20.0 20.0 20.0 +frame 55 +O 4.9576 2.3126 9.0395 +H 10.0483 13.4580 2.1857 +O 13.5221 3.0549 19.6699 +H 13.9928 1.0320 4.0079 +O 5.2592 5.8563 6.0631 +H 15.6015 8.8170 2.5390 +O 17.6335 17.5490 19.9391 +H 14.0808 4.1530 13.0893 +O 3.1748 2.4894 14.7203 +H 13.9073 6.6747 7.1653 +O 8.7607 5.8484 3.6290 +H 8.5834 14.5085 17.2920 +O 2.6888 18.2147 13.5772 +H 13.9391 13.4268 4.7078 +O 7.2873 17.5560 5.9471 +H 7.7516 19.1050 4.3572 +O 0.4793 0.7454 15.1671 +H 11.0674 14.9017 7.1954 +O 14.2667 6.0257 7.3912 +H 7.6753 4.5041 12.5323 +O 5.2903 1.8493 6.6919 +H 14.4874 6.8151 15.2080 +O 3.9984 8.5202 16.8607 +H 19.9441 13.2252 11.4283 +O 7.5176 14.5718 19.9150 +H 1.5572 12.0278 7.3015 +O 4.7002 19.5111 5.7062 +H 9.1645 0.7224 5.7586 +O 6.7788 9.2506 11.8120 +H 11.7489 9.5891 5.5875 +O 5.3660 3.0200 12.9528 +H 2.8953 9.4682 0.3208 +O 3.2263 1.2443 19.2358 +H 9.1997 5.4963 4.0575 +O 19.2091 8.8671 3.3093 +H 4.9838 4.0696 1.6014 +O 14.1678 12.1968 6.1432 +H 18.7259 16.8853 14.2322 +O 2.1202 12.5040 7.2461 +H 11.2025 9.0683 0.5032 +40 20.0 20.0 20.0 +frame 56 +O 5.5284 2.1969 8.7018 +H 9.7324 13.3106 2.2870 +O 13.6328 2.6173 19.6836 +H 14.3405 0.7732 4.1705 +O 5.6617 5.8765 5.9616 +H 16.0692 8.8262 2.7250 +O 17.9355 18.0836 19.9822 +H 13.8767 4.3589 13.1939 +O 3.6586 2.3792 14.1948 +H 13.1999 7.0131 6.5493 +O 8.9267 6.0816 3.9616 +H 9.0220 13.7704 17.5465 +O 2.7463 18.6611 13.6242 +H 14.0223 13.1465 5.1055 +O 7.8291 17.7518 6.0316 +H 7.5056 19.3464 4.4414 +O 0.4417 1.1866 14.9546 +H 11.0258 15.2881 7.4319 +O 14.2133 5.9902 7.2879 +H 7.5103 4.1712 12.4483 +O 5.3769 1.8793 6.7315 +H 14.2441 6.8442 15.4253 +O 3.9719 8.1151 16.8791 +H 0.5337 13.4588 11.4041 +O 7.6850 14.7367 19.6254 +H 1.3784 12.3270 7.3207 +O 4.3670 18.7510 5.5905 +H 9.2804 0.9463 5.8163 +O 6.9056 9.2591 12.2903 +H 11.6620 9.4695 5.6530 +O 5.3861 3.0861 12.9581 +H 2.7322 9.8615 0.4499 +O 3.6778 0.9907 19.6420 +H 9.4098 5.6567 3.4624 +O 18.7466 9.0431 2.8071 +H 4.8846 4.2568 2.2181 +O 14.5779 11.8907 5.7657 +H 18.5104 17.2082 14.4561 +O 1.9904 12.9460 7.3920 +H 11.4068 8.9641 0.3532 +40 20.0 20.0 20.0 +frame 57 +O 5.8732 1.9708 8.8606 +H 10.5623 13.3865 2.0097 +O 13.9291 2.9001 0.4726 +H 14.4034 0.4675 4.3104 +O 5.7813 5.8085 6.2938 +H 15.5373 8.9495 2.4888 +O 17.7879 17.7710 19.7714 +H 13.6227 4.5526 13.3103 +O 3.3204 2.5051 13.8376 +H 13.5160 7.0484 6.0305 +O 8.8352 5.8957 3.6925 +H 8.8481 14.0591 17.6921 +O 2.8761 18.4529 13.4666 +H 14.2353 13.2888 5.0368 +O 7.5366 17.3466 6.4990 +H 7.3596 19.7402 4.4654 +O 0.4198 1.1785 15.2820 +H 10.5163 14.6013 7.7154 +O 14.5727 5.8378 7.3316 +H 7.6127 4.0267 12.7800 +O 4.7155 1.7162 7.0511 +H 14.5312 6.9783 16.3613 +O 4.1402 8.0479 16.7923 +H 0.7472 13.6756 11.2050 +O 8.1912 14.9778 19.3071 +H 1.3593 12.8942 8.0040 +O 3.8694 18.3418 5.6644 +H 9.6080 1.2068 5.2081 +O 7.0732 9.2589 12.4895 +H 11.3717 9.1059 5.6839 +O 5.3297 3.6137 12.8241 +H 2.7481 9.4888 0.3720 +O 3.8212 1.3390 19.8362 +H 9.0713 5.5073 3.6007 +O 19.0250 9.7685 2.7101 +H 4.7412 4.1067 2.3600 +O 14.7372 11.8026 5.7463 +H 18.6040 16.8282 14.1545 +O 2.0766 12.4067 7.2217 +H 11.5036 9.0484 0.2520 +40 20.0 20.0 20.0 +frame 58 +O 5.8422 2.0051 9.0647 +H 10.1435 13.7185 1.9757 +O 13.9162 3.2225 0.5465 +H 14.5472 19.9617 4.0234 +O 6.0675 5.8123 6.7944 +H 16.0828 9.9343 2.8106 +O 18.0546 18.0065 19.6273 +H 13.2497 4.9085 12.8567 +O 3.5200 2.2811 13.5555 +H 14.2142 7.1250 6.5377 +O 8.9074 5.8994 3.6567 +H 8.8239 13.6009 17.5943 +O 2.3865 18.5060 13.2372 +H 14.4258 13.6133 4.9915 +O 7.7519 16.8636 6.9465 +H 7.0640 19.6586 4.3271 +O 0.2935 1.3523 15.4849 +H 9.9449 15.1520 7.7174 +O 14.3146 5.6383 7.2818 +H 7.4461 3.8202 12.7632 +O 4.7321 1.6275 7.2212 +H 14.8242 7.1562 15.9057 +O 4.0681 8.0107 16.9768 +H 0.2979 14.0206 11.2513 +O 7.8081 15.3372 19.4092 +H 1.9332 12.8277 8.0939 +O 3.9907 18.7059 5.4871 +H 10.0076 1.2424 5.0617 +O 7.2264 9.1359 12.3551 +H 11.4353 9.3843 5.6790 +O 5.4377 4.1652 13.3123 +H 2.4837 9.6538 0.5207 +O 3.7819 0.8222 19.8567 +H 9.2954 4.8773 3.4742 +O 18.6982 9.7597 2.4677 +H 4.5876 4.4474 2.6188 +O 14.8139 11.8032 5.7787 +H 18.0841 16.7636 14.0790 +O 1.5532 12.0479 7.5285 +H 11.0517 9.2252 19.8863 +40 20.0 20.0 20.0 +frame 59 +O 5.8901 1.9751 9.1462 +H 10.2066 13.8804 2.2541 +O 13.8861 2.7901 0.8542 +H 14.4321 0.4016 3.5827 +O 6.5389 5.5422 6.7011 +H 16.1190 9.4204 2.8732 +O 17.6708 17.8143 19.7768 +H 13.4917 4.7123 12.6390 +O 3.4905 2.1744 13.9946 +H 14.0356 7.0391 7.2653 +O 8.9407 6.1644 3.7006 +H 8.9349 13.2736 18.0080 +O 2.3295 18.4547 13.6908 +H 14.5515 13.7373 4.9581 +O 7.6093 17.1350 6.8934 +H 7.4539 19.2972 4.5749 +O 0.5285 1.6825 15.6707 +H 10.1193 15.4339 7.4569 +O 14.4193 5.8358 7.2124 +H 7.7863 3.3768 13.3104 +O 4.0634 1.6060 7.0749 +H 14.7197 7.2533 16.0685 +O 3.6367 7.4350 17.0493 +H 0.3502 14.2723 11.5395 +O 7.5217 15.3293 19.3446 +H 2.2245 12.9342 7.9077 +O 3.7644 18.7683 5.3828 +H 10.0507 1.3071 5.2329 +O 7.2414 8.6317 12.2989 +H 11.3709 9.4341 5.2389 +O 4.9329 4.2106 13.0172 +H 2.4688 9.7410 1.0296 +O 3.5465 0.1303 0.1072 +H 9.7146 4.9506 3.7038 +O 18.1956 9.5453 2.5525 +H 4.7779 4.5965 2.1595 +O 14.9049 12.2533 6.4187 +H 18.0167 16.6352 13.3278 +O 1.3128 11.3085 7.1748 +H 11.2476 9.1350 19.5030 +40 20.0 20.0 20.0 +frame 60 +O 6.1704 1.7548 9.3212 +H 10.0405 14.1172 2.4312 +O 14.2953 2.4927 0.6223 +H 14.4377 0.0396 3.4524 +O 7.0214 5.5697 6.5059 +H 15.5569 9.1760 2.9698 +O 17.4559 17.6142 19.8753 +H 13.5730 4.5736 12.4185 +O 3.7170 1.9343 13.7979 +H 14.2749 7.3388 7.5698 +O 8.8566 5.7692 3.6771 +H 9.1461 12.9634 18.1609 +O 3.0852 19.0427 13.5952 +H 14.9122 13.9160 4.5654 +O 7.8183 16.8621 7.3243 +H 7.3769 19.0700 4.0487 +O 0.8609 1.6000 15.5271 +H 10.1411 15.6632 7.7755 +O 13.8530 5.4645 7.1790 +H 7.3162 3.7496 13.7243 +O 4.0927 2.1717 6.8673 +H 15.0170 7.2365 16.4676 +O 4.8744 7.6059 16.7312 +H 0.3931 14.7465 11.6085 +O 7.4403 15.6272 19.5625 +H 2.6109 13.1787 7.8759 +O 3.9569 18.9565 5.8743 +H 10.5929 0.6801 5.5623 +O 7.4460 8.0619 12.2743 +H 11.3762 9.2319 5.1470 +O 4.9282 3.7902 13.2738 +H 2.3983 9.4445 1.0422 +O 3.3566 19.8779 0.1273 +H 9.6271 4.8289 3.4294 +O 17.9717 9.2516 2.3874 +H 5.0083 4.3827 2.1922 +O 14.7543 12.6472 6.9763 +H 18.3717 16.0342 13.0666 +O 0.6130 11.0944 7.6312 +H 11.3288 9.0824 19.1571 +40 20.0 20.0 20.0 +frame 61 +O 6.0737 1.5729 9.0413 +H 10.4675 14.3482 2.4157 +O 14.3041 2.6421 0.8571 +H 14.6076 0.4196 3.5091 +O 7.1793 5.2034 6.7535 +H 15.0055 8.7268 3.3478 +O 17.3577 17.8021 19.9898 +H 12.8307 4.4488 12.3091 +O 4.0641 2.2680 13.7994 +H 14.3900 7.5008 7.5737 +O 8.8146 5.2977 3.3413 +H 9.2190 13.7267 18.0392 +O 2.4753 19.1045 13.3078 +H 15.1182 14.1244 4.6723 +O 7.5376 16.6955 7.5190 +H 7.0721 18.8975 4.6092 +O 0.7163 1.5759 15.4769 +H 10.4077 16.4335 7.5664 +O 13.7760 5.1268 7.5852 +H 7.5600 3.8860 13.6845 +O 3.9551 3.0116 6.8427 +H 15.4587 7.1990 15.9406 +O 4.8998 7.9326 16.3801 +H 0.6423 14.7988 11.3374 +O 7.6745 15.4703 19.9303 +H 2.4684 13.4409 8.2268 +O 4.3866 19.4980 5.7629 +H 11.0452 0.1694 5.8767 +O 7.6633 8.0420 12.4167 +H 11.1800 9.5512 4.9428 +O 4.5500 3.8145 13.6284 +H 2.1072 9.3436 0.8529 +O 3.4044 0.0819 19.7954 +H 9.9435 5.0606 3.3196 +O 18.2536 9.5647 2.3990 +H 5.2155 4.0813 1.8060 +O 14.3175 12.3305 6.9563 +H 18.0192 15.4143 13.1366 +O 1.0900 10.8929 7.6211 +H 11.1635 9.3294 19.4494 +40 20.0 20.0 20.0 +frame 62 +O 6.1156 1.6665 9.5366 +H 10.4885 14.2103 2.0404 +O 14.2612 2.2554 0.7095 +H 14.8525 0.1709 4.1969 +O 7.0020 5.1909 6.8755 +H 14.9799 8.7229 3.3499 +O 17.1381 18.3510 19.6924 +H 12.9991 4.5428 12.3234 +O 4.2926 1.9783 13.6063 +H 14.7104 7.6583 7.7283 +O 8.7036 5.8373 3.2230 +H 9.4731 13.4412 17.7649 +O 2.1814 19.0044 13.6045 +H 15.3269 14.3454 4.9607 +O 7.5041 17.2236 6.9752 +H 7.0914 19.4306 4.8891 +O 0.7135 0.9754 15.5299 +H 10.5938 16.1282 7.4900 +O 13.8422 5.1893 7.2128 +H 7.2830 3.6967 13.8593 +O 4.0395 3.5897 6.7541 +H 15.6826 6.7207 15.6457 +O 4.9085 8.2444 16.9245 +H 0.6418 14.8762 11.0598 +O 7.4930 15.9422 0.4269 +H 1.8760 13.2919 8.4668 +O 3.7359 19.8246 5.4520 +H 10.8516 0.2117 5.7081 +O 7.5040 8.4179 11.8283 +H 11.4549 9.7501 5.2894 +O 4.9328 3.5474 13.4272 +H 1.7434 8.9215 0.5662 +O 3.3731 0.1467 19.5019 +H 9.8809 5.3055 3.6054 +O 18.5727 9.1643 2.3416 +H 5.3624 4.2498 1.8943 +O 14.4563 12.7130 7.0939 +H 18.4307 15.0222 12.7186 +O 1.3442 10.8342 8.3385 +H 11.1936 9.6631 19.2809 +40 20.0 20.0 20.0 +frame 63 +O 5.9127 1.6816 9.4256 +H 10.5490 14.4114 1.9872 +O 14.4403 1.8193 1.2335 +H 14.9443 0.4251 4.2945 +O 7.0400 4.9875 7.0340 +H 14.7641 8.7008 3.4317 +O 16.9672 18.3149 19.5446 +H 12.9043 4.1919 12.1284 +O 4.2899 2.3282 14.3177 +H 14.3535 7.5968 8.1492 +O 8.6625 5.9746 3.3807 +H 9.4377 14.2318 17.3070 +O 2.4580 19.2394 13.4405 +H 14.8068 14.6434 4.9136 +O 7.5314 17.1707 7.0693 +H 7.2283 19.5891 4.7449 +O 0.1947 0.7734 15.4593 +H 10.8321 15.6201 7.5303 +O 14.2647 5.3676 7.0340 +H 7.5131 3.6211 14.0599 +O 4.1366 3.5180 6.9061 +H 15.3762 6.7381 15.8060 +O 4.9965 8.2977 17.2672 +H 0.7390 14.6124 10.8994 +O 7.0265 15.9636 0.5511 +H 1.8827 13.3808 8.2367 +O 3.7127 19.4205 5.3932 +H 10.5032 0.2844 5.7073 +O 6.6428 8.6495 11.8934 +H 11.3410 9.6994 5.4933 +O 4.9758 3.9466 12.9980 +H 1.7858 8.8151 0.4594 +O 3.6509 19.9316 19.7889 +H 10.5145 5.7029 4.1085 +O 18.9700 9.3681 1.8017 +H 5.8159 4.0177 1.6132 +O 14.4985 12.5176 6.9725 +H 18.9008 15.1943 12.2886 +O 1.2765 11.1159 8.7176 +H 11.5143 9.5105 19.0345 +40 20.0 20.0 20.0 +frame 64 +O 5.6379 2.2184 9.6062 +H 10.2546 14.1351 1.8070 +O 14.9493 1.8192 1.1283 +H 15.0058 0.7945 4.2477 +O 6.5316 5.7329 6.9061 +H 14.7474 9.1556 4.1798 +O 17.4099 18.6172 0.0053 +H 12.8437 4.8858 11.6496 +O 4.2646 2.1551 14.6085 +H 13.7875 7.0081 8.1885 +O 8.9977 5.6462 3.1144 +H 8.9079 14.1409 17.1833 +O 2.7177 18.9128 13.2846 +H 14.3534 14.1818 4.8355 +O 7.6579 17.0555 7.1417 +H 7.3721 19.4899 5.1823 +O 0.1362 0.9056 16.0092 +H 10.7714 15.9741 7.8596 +O 13.7538 5.2252 7.6191 +H 7.8286 3.8248 14.0464 +O 4.1952 3.3441 6.8972 +H 15.1515 6.6386 15.9568 +O 5.2415 8.0556 17.2158 +H 0.5967 13.9305 11.5556 +O 7.4270 16.0446 0.4912 +H 1.8731 13.3774 8.4208 +O 3.5543 19.6822 5.1903 +H 10.1966 19.8265 5.5951 +O 6.8721 8.2044 11.5572 +H 11.3009 9.7604 5.5988 +O 5.1627 3.8632 12.9066 +H 1.7340 8.8624 0.3368 +O 3.8670 19.8500 0.0184 +H 10.5645 5.8056 4.3616 +O 19.0945 9.0099 1.6804 +H 5.9128 3.9338 1.6939 +O 14.7382 12.4012 6.8835 +H 18.9106 14.6374 12.2715 +O 1.6833 11.4621 8.9892 +H 11.9421 9.8442 18.7075 +40 20.0 20.0 20.0 +frame 65 +O 6.1102 2.1715 9.8249 +H 10.0983 13.9871 2.0056 +O 15.4129 2.1725 1.1437 +H 15.2204 0.8453 3.8466 +O 6.3766 5.8869 6.8419 +H 14.8724 8.8802 4.1741 +O 17.3401 18.9339 0.5350 +H 12.9159 4.7575 12.0431 +O 4.6813 2.5683 14.4650 +H 13.9819 6.7002 7.8685 +O 8.5631 5.8103 3.2045 +H 8.7860 14.7155 16.7877 +O 2.5913 19.1294 13.1628 +H 14.8420 14.3075 4.5340 +O 7.2258 17.1054 6.8849 +H 6.8998 19.4390 4.5290 +O 19.8603 0.9496 16.0039 +H 10.7211 16.1320 7.7555 +O 13.6249 5.2797 7.9060 +H 8.2870 3.3953 14.0849 +O 3.9745 3.6872 6.8882 +H 15.0591 6.5695 15.8071 +O 5.8027 8.1907 17.8068 +H 0.5159 13.7587 11.6424 +O 7.1572 15.9941 0.1956 +H 1.8925 12.8509 8.6784 +O 3.6663 19.9016 5.3953 +H 10.2215 19.9197 5.6097 +O 6.7792 8.2529 11.2411 +H 11.4583 9.6850 5.3464 +O 5.2101 3.9333 13.0711 +H 1.3201 8.7377 0.4566 +O 4.1437 19.7060 0.0105 +H 10.6689 5.9150 3.8952 +O 19.3972 9.4397 1.8018 +H 6.2832 4.2512 1.7337 +O 15.0423 12.2239 7.0984 +H 18.9868 15.4492 12.0892 +O 1.2127 11.9495 8.6837 +H 11.6587 10.3115 18.9344 +40 20.0 20.0 20.0 +frame 66 +O 5.9689 2.4003 9.4880 +H 10.4039 14.1345 1.9627 +O 15.1077 1.8538 1.6288 +H 14.9542 1.0542 3.4770 +O 7.0739 5.9302 7.1891 +H 14.9147 8.7706 4.6566 +O 17.4104 18.6160 0.4366 +H 13.1726 5.2286 11.6134 +O 4.7827 2.6774 14.5981 +H 14.1068 6.9598 8.2850 +O 8.6796 5.8157 3.8118 +H 8.5773 14.6662 16.1618 +O 2.1742 18.0723 13.2601 +H 14.6509 14.7916 4.7871 +O 7.2854 17.3188 7.2370 +H 7.2614 19.9138 4.9529 +O 19.8333 1.1450 16.0263 +H 10.0296 16.3570 8.1511 +O 13.6859 4.9898 8.2198 +H 8.5903 3.2343 13.9190 +O 4.0550 3.3988 6.4436 +H 15.0512 6.0887 15.7247 +O 5.5876 7.7849 17.5848 +H 0.9163 13.4700 11.8543 +O 6.8905 16.5378 0.2671 +H 2.4537 13.1468 8.8271 +O 3.8178 0.0550 5.3522 +H 10.3680 19.8282 5.2263 +O 6.7887 8.6332 11.4146 +H 11.2015 9.9953 5.4490 +O 5.0657 3.7077 13.0322 +H 1.3052 8.7707 19.9462 +O 4.2004 19.8055 19.6443 +H 10.9261 5.8603 3.8984 +O 19.4037 9.1002 1.8183 +H 6.0884 3.9790 1.6806 +O 15.0014 12.3392 7.4460 +H 18.9906 15.2158 12.1710 +O 1.3286 11.7029 8.9144 +H 11.7679 9.9448 19.2893 +40 20.0 20.0 20.0 +frame 67 +O 6.2947 2.9495 8.9522 +H 10.5990 13.2310 2.4160 +O 15.2456 2.0661 1.6870 +H 14.5396 0.9499 3.6350 +O 6.9112 6.3753 7.2327 +H 14.8785 8.8548 4.8177 +O 17.9859 18.3256 0.3376 +H 13.4462 5.6264 11.4509 +O 4.6149 2.9266 14.3350 +H 13.8492 6.7417 7.9907 +O 8.4562 6.0325 4.0185 +H 9.0543 14.5936 16.6520 +O 2.5206 17.5739 13.0591 +H 14.6982 15.0211 4.9436 +O 7.8349 17.5391 7.1511 +H 7.8009 0.1599 4.7664 +O 19.7411 1.3574 16.0065 +H 10.0807 16.4164 8.1664 +O 13.9954 5.3483 8.6434 +H 8.7338 2.8652 13.6681 +O 4.4244 3.0908 6.1482 +H 14.8071 5.7127 16.0768 +O 5.6156 7.9109 17.6217 +H 0.9794 13.6428 11.5459 +O 6.9783 16.4944 0.4308 +H 2.0992 13.1337 9.2563 +O 3.7598 0.5589 5.1353 +H 10.4100 19.6257 4.5215 +O 6.7873 8.4670 12.0177 +H 11.5709 10.4216 5.4287 +O 4.9757 3.4039 12.7348 +H 1.4277 8.7836 19.7690 +O 4.3403 0.4217 19.7847 +H 9.9523 5.7315 3.6558 +O 19.6196 9.0018 1.7696 +H 5.9482 4.8353 1.6831 +O 15.4221 12.4604 7.3955 +H 18.5342 15.5220 12.0426 +O 0.9742 11.9116 9.3514 +H 11.5666 10.1239 19.3149 +40 20.0 20.0 20.0 +frame 68 +O 6.1428 2.3726 9.1212 +H 10.3004 12.8185 2.6326 +O 15.1356 1.8732 2.0100 +H 14.8833 1.0320 3.4483 +O 7.0307 6.3119 6.7649 +H 15.2438 8.5344 4.5382 +O 17.8849 18.6248 0.6088 +H 13.1687 5.7344 11.2940 +O 4.5321 2.9842 14.1366 +H 13.7621 6.8645 8.0399 +O 8.1192 6.0254 4.0697 +H 9.4033 14.8205 16.5473 +O 2.2652 17.7582 13.3534 +H 14.2849 15.1152 4.9308 +O 7.6498 17.7930 7.1932 +H 7.6938 0.1649 5.2322 +O 19.5050 1.2645 15.8256 +H 10.0364 16.7254 7.8851 +O 13.9119 5.2203 9.1022 +H 8.5577 2.5325 13.9154 +O 5.2356 3.1852 6.1408 +H 14.9945 5.4972 16.1364 +O 5.4782 7.6783 17.4860 +H 0.5741 13.4746 11.6439 +O 7.0795 16.5379 0.7009 +H 2.0045 13.3608 8.9894 +O 3.4217 0.9602 5.1016 +H 10.5462 18.9816 4.5157 +O 6.9180 8.2258 11.6148 +H 11.2730 10.6070 5.6453 +O 4.6122 3.4201 13.0780 +H 1.4625 8.4405 19.5838 +O 4.1360 0.3019 19.5320 +H 9.8997 5.2030 3.6937 +O 19.7111 9.1195 2.0115 +H 6.0875 5.0328 1.7134 +O 15.3089 12.2097 7.3146 +H 18.2837 15.4006 12.1412 +O 0.7532 11.5721 9.5204 +H 11.0050 10.1213 18.8257 +40 20.0 20.0 20.0 +frame 69 +O 6.5299 1.9817 9.5995 +H 9.9626 12.8236 2.2268 +O 15.1820 2.1979 2.1073 +H 14.8464 0.9556 3.6262 +O 6.7975 6.7141 7.2486 +H 14.7084 9.0490 4.3588 +O 17.4764 18.6770 0.6521 +H 13.7293 5.8681 11.4223 +O 4.3719 2.7344 14.1910 +H 13.4885 6.8876 8.4090 +O 8.5331 6.1732 4.2936 +H 9.1891 14.9599 16.5037 +O 1.8825 17.4690 13.1662 +H 14.1589 15.2520 5.5954 +O 7.8135 17.7622 7.0977 +H 7.9069 19.9703 5.2548 +O 19.1300 1.2070 15.8256 +H 9.5665 16.7511 7.4932 +O 13.8546 5.3222 9.3672 +H 8.4479 2.5086 13.3158 +O 5.3800 2.8953 6.2187 +H 15.0141 5.9645 16.5088 +O 5.4532 7.1788 17.3908 +H 0.8516 13.3138 11.9334 +O 7.2668 16.7188 0.8892 +H 1.5806 13.5753 9.0769 +O 4.1323 1.0821 5.0607 +H 10.7536 19.2011 4.2383 +O 7.1675 8.7110 11.3989 +H 11.5551 11.2243 5.9806 +O 4.5875 3.8958 13.3505 +H 1.5275 8.2907 0.0403 +O 3.9374 0.8978 19.8461 +H 10.1756 5.0269 4.3945 +O 19.3610 9.2109 1.8895 +H 6.1363 4.6494 1.8330 +O 15.4771 12.2302 7.2828 +H 18.2919 15.6924 12.1868 +O 0.4246 11.2616 9.4911 +H 10.6956 9.8358 18.7192 +40 20.0 20.0 20.0 +frame 70 +O 6.1966 1.9085 9.9049 +H 10.1256 12.6120 2.5140 +O 14.9812 2.6777 2.4484 +H 14.5964 0.8692 3.6561 +O 6.4497 6.9814 7.4320 +H 14.6771 8.9229 4.1880 +O 17.3194 18.8718 0.9769 +H 14.2828 6.1119 11.4043 +O 4.3775 2.5666 14.2585 +H 13.5727 6.8263 8.3945 +O 7.9922 5.9128 4.6181 +H 10.2086 14.8889 15.9187 +O 1.7016 17.2174 13.4615 +H 13.4571 15.2627 5.7340 +O 7.9591 18.0769 7.0911 +H 8.1069 0.3783 5.2727 +O 19.2704 0.8339 16.1168 +H 9.9606 16.1951 7.7211 +O 14.0507 4.6657 9.0238 +H 8.7300 2.3186 13.4822 +O 5.4212 3.2769 6.0700 +H 14.7940 6.0406 16.0445 +O 5.4686 7.7234 17.7260 +H 0.7603 13.3541 12.0869 +O 7.4913 16.9141 0.8220 +H 1.5243 13.7565 8.9468 +O 4.4766 1.1640 5.2438 +H 10.3860 19.6143 4.1726 +O 7.7633 8.4628 10.9985 +H 11.6618 10.5362 5.6668 +O 4.5362 4.6722 13.3755 +H 1.2474 8.3986 0.1580 +O 3.9714 1.1659 0.2209 +H 10.6666 5.0782 4.6066 +O 19.3024 8.8653 1.8715 +H 5.6977 4.6008 1.6357 +O 15.6714 12.0870 7.2701 +H 18.1215 15.3313 12.3311 +O 0.5746 11.4455 9.1483 +H 10.7068 10.3068 19.0220 +40 20.0 20.0 20.0 +frame 71 +O 6.3966 1.8381 10.1891 +H 9.4715 12.2767 2.8392 +O 14.8708 2.7253 2.8461 +H 14.5177 0.5463 3.7891 +O 7.0009 6.3460 7.4534 +H 14.0995 8.6956 4.0600 +O 17.5894 18.7162 0.8116 +H 14.3889 5.7669 10.9899 +O 3.9573 2.5139 14.0266 +H 13.7138 7.2460 8.0164 +O 7.7073 5.8727 3.9767 +H 9.8407 14.8882 15.7457 +O 2.2494 17.0813 13.4014 +H 13.8516 15.0668 5.6641 +O 7.4163 18.0113 6.9180 +H 8.4310 0.4440 5.3970 +O 19.3904 1.2474 16.3064 +H 10.1984 16.2070 7.8447 +O 14.2233 4.3386 9.0727 +H 8.4211 2.5680 13.5977 +O 5.1352 3.5309 6.0795 +H 14.3108 5.7911 16.0688 +O 5.1204 7.6108 17.9282 +H 0.4508 13.5429 12.2473 +O 7.2509 17.1937 1.0605 +H 1.7265 13.2922 8.5690 +O 4.4886 1.4956 5.0967 +H 10.0816 19.9698 4.1119 +O 8.0434 8.2673 11.3302 +H 11.6555 10.5944 5.4812 +O 4.4771 4.6243 13.2000 +H 1.6647 8.4672 0.7212 +O 3.8505 0.8379 0.6603 +H 10.5951 4.8132 4.9799 +O 19.4076 9.0527 1.9280 +H 6.1480 4.8346 1.4367 +O 15.7426 12.1393 7.4755 +H 17.6047 14.9116 12.3759 +O 0.6454 11.6414 9.4293 +H 10.9078 10.6402 19.1422 +40 20.0 20.0 20.0 +frame 72 +O 6.4861 1.3500 10.3776 +H 9.2514 12.3261 2.7207 +O 15.0118 2.3901 2.8112 +H 14.4896 0.5027 3.7203 +O 7.0130 6.2828 7.6728 +H 14.2148 8.2393 4.0051 +O 17.0917 17.8968 0.8602 +H 14.4416 5.4785 11.2741 +O 4.1316 1.8952 13.6807 +H 13.0447 7.5500 8.0228 +O 7.4089 6.3769 3.5394 +H 9.6253 14.6548 15.6676 +O 2.4621 17.7463 13.8066 +H 13.7229 14.7579 5.6318 +O 7.7879 17.7724 6.9159 +H 8.3415 0.6638 5.4491 +O 19.9343 1.2094 16.4071 +H 9.6896 16.2317 8.1688 +O 14.5603 4.6380 9.2246 +H 8.4883 2.5805 13.8886 +O 4.9105 3.3395 5.6390 +H 14.2010 5.3985 15.8772 +O 4.6539 7.7686 18.1067 +H 0.0345 13.4704 12.4069 +O 7.8084 17.0553 1.0943 +H 1.8014 13.7819 8.4703 +O 4.4681 1.2020 5.1319 +H 9.8362 0.1278 4.2164 +O 8.0713 8.1477 11.4608 +H 11.5249 10.3154 5.6316 +O 4.1997 4.3422 13.3867 +H 1.6894 8.8592 1.3107 +O 4.1119 1.0689 19.9876 +H 10.4365 5.4164 4.8017 +O 19.4427 8.9175 1.4628 +H 6.1683 4.8454 1.9169 +O 16.4225 12.3566 7.2425 +H 17.6778 14.7697 12.7116 +O 0.5993 11.6841 9.0715 +H 10.4872 10.6892 19.0871 +40 20.0 20.0 20.0 +frame 73 +O 6.2101 1.0769 10.6865 +H 9.7283 11.9372 2.2821 +O 15.5294 2.1626 3.1593 +H 15.2025 0.3056 3.9718 +O 6.6838 5.7764 8.3844 +H 14.2792 8.1853 4.9056 +O 16.9674 18.1400 1.5507 +H 14.1864 6.0114 11.2203 +O 4.2818 1.9942 13.5774 +H 13.0975 8.1192 7.8908 +O 7.4828 6.5841 3.7274 +H 9.6272 14.5994 15.9513 +O 2.6332 17.7073 14.0557 +H 14.1569 14.5142 5.6209 +O 7.6541 17.7121 6.9722 +H 8.3464 0.7058 5.2422 +O 0.0938 1.2662 16.4919 +H 9.7559 16.9012 8.5319 +O 15.1229 4.6700 8.8646 +H 8.3988 2.2488 13.6151 +O 4.7073 3.5684 5.2569 +H 13.8183 5.3605 16.0112 +O 4.3560 7.5291 17.8228 +H 0.5996 13.3917 12.3006 +O 7.9352 17.1871 1.5889 +H 2.0452 13.2731 8.6283 +O 4.3123 1.0767 5.2399 +H 10.3390 0.0844 4.1832 +O 7.7471 8.2455 11.2463 +H 11.4225 10.2616 5.5457 +O 4.2719 4.2732 13.3975 +H 1.2278 9.1587 1.0235 +O 4.1660 1.4382 19.9607 +H 11.5489 6.0541 5.0393 +O 19.0285 8.8573 1.6564 +H 6.0185 4.4840 1.9839 +O 16.0627 12.6142 6.9325 +H 17.7687 14.0981 12.4021 +O 0.2352 11.7140 9.2738 +H 10.5366 10.7946 18.8645 +40 20.0 20.0 20.0 +frame 74 +O 5.8875 1.0680 10.8816 +H 9.6434 11.8237 1.9705 +O 15.3395 2.2145 3.0839 +H 14.9930 19.8223 4.4020 +O 6.9797 5.5511 8.4503 +H 14.4607 7.9878 5.3625 +O 16.7757 18.5607 1.0858 +H 13.9093 6.1411 10.8880 +O 3.8204 2.1693 13.6323 +H 13.3040 7.7633 8.1153 +O 7.2146 6.2686 3.7378 +H 9.9124 14.5312 15.9418 +O 2.9203 17.8824 14.2596 +H 14.2014 14.0628 5.5519 +O 8.1876 17.5753 7.3188 +H 8.3915 0.4940 5.6482 +O 0.2565 1.6096 16.3375 +H 9.5339 17.2495 8.2879 +O 15.6518 4.4043 8.4341 +H 8.3095 2.3294 13.9370 +O 4.7438 3.4421 5.2280 +H 13.9321 5.4061 16.0897 +O 4.8479 7.6787 17.7433 +H 0.5913 13.4653 12.4113 +O 8.5175 17.2105 1.5414 +H 2.4486 13.3594 8.7674 +O 4.2567 1.0654 5.1790 +H 10.7478 0.1532 3.9297 +O 7.1836 8.1134 11.5580 +H 10.8381 10.2769 5.2041 +O 4.5165 4.2765 13.1337 +H 0.7958 9.2139 1.4172 +O 4.2260 1.2920 19.3609 +H 11.9347 5.9037 4.8012 +O 19.4002 8.7210 1.7064 +H 5.5541 4.4306 2.2553 +O 15.8828 12.5000 6.8868 +H 17.8403 14.1761 12.2756 +O 0.4234 11.2529 8.9493 +H 10.8646 10.8379 19.2724 +40 20.0 20.0 20.0 +frame 75 +O 6.1890 0.6234 11.0964 +H 9.3675 11.6510 2.3329 +O 15.6720 2.2742 2.6975 +H 15.2804 0.2337 3.7272 +O 6.3797 5.2089 8.1936 +H 14.1384 7.9510 5.1453 +O 16.7305 19.2656 1.3968 +H 14.2554 6.0991 11.0838 +O 3.7163 2.3694 13.5404 +H 13.0224 8.2446 8.8918 +O 7.3222 6.3532 3.7722 +H 10.1548 14.8885 16.0539 +O 3.0993 17.3949 14.3301 +H 14.3868 13.9273 5.1815 +O 8.1513 17.2211 7.0638 +H 8.4073 0.1877 5.2809 +O 0.6511 1.7565 16.2943 +H 9.8906 17.1079 8.3528 +O 16.2577 3.7999 8.7010 +H 8.3825 2.3292 13.7024 +O 4.8245 3.2556 5.3325 +H 13.4772 5.2580 16.3277 +O 5.0224 7.3411 18.0044 +H 0.7323 13.1894 12.9282 +O 8.6282 16.9825 1.6076 +H 2.3736 13.4810 9.1446 +O 4.2746 0.7556 4.6972 +H 10.6976 19.8738 3.7007 +O 7.5857 7.7747 11.0996 +H 10.7858 10.2326 5.2600 +O 4.3419 4.9196 12.9797 +H 1.5242 9.1157 1.2690 +O 4.3121 1.0597 19.5144 +H 12.1965 6.1806 4.4609 +O 19.6687 8.6691 2.0074 +H 5.4241 4.4506 2.1388 +O 16.0125 13.0958 7.0673 +H 17.5796 14.1287 12.3949 +O 0.8749 10.9453 8.9685 +H 10.0568 10.8234 19.8281 +40 20.0 20.0 20.0 +frame 76 +O 5.6746 1.1760 10.7089 +H 9.2104 11.8026 2.3302 +O 15.7664 2.3245 2.8931 +H 15.1098 0.9033 4.1028 +O 6.1557 5.2893 8.6973 +H 14.3424 7.9652 4.8834 +O 16.9907 19.5582 0.8214 +H 14.2752 6.3546 10.9083 +O 3.6090 1.8238 13.0248 +H 13.0399 8.2152 9.2426 +O 7.6897 6.5479 3.6350 +H 10.9758 14.7760 15.7798 +O 3.5202 17.3045 14.3902 +H 14.6264 14.1684 5.2811 +O 8.1931 17.5125 7.2223 +H 8.4928 19.3063 5.4995 +O 0.7722 2.2809 15.9259 +H 10.1995 17.5554 8.4865 +O 16.3129 4.2211 8.0656 +H 8.7161 2.3289 13.7990 +O 5.2548 2.9827 5.1814 +H 14.0277 5.4214 16.3203 +O 5.3340 7.1060 17.7382 +H 0.8678 13.2434 12.7755 +O 8.9156 16.4437 1.2620 +H 2.6479 13.5484 9.2702 +O 4.4661 0.6719 5.1127 +H 10.8651 19.3856 3.7912 +O 7.1237 8.1338 11.4403 +H 10.8658 10.3347 5.1204 +O 4.2455 4.8791 12.9022 +H 0.9461 9.3143 0.8627 +O 4.7083 1.0071 19.7307 +H 12.4168 6.0304 4.4998 +O 19.7616 8.6828 1.9742 +H 5.9871 4.4490 1.7604 +O 16.0210 12.9382 7.0728 +H 17.7396 13.7309 12.3315 +O 0.9860 11.0752 8.4813 +H 9.9945 11.3236 19.9843 +40 20.0 20.0 20.0 +frame 77 +O 6.2783 1.4268 10.6912 +H 9.1608 11.4864 2.3162 +O 15.6940 2.3495 3.1740 +H 15.1138 1.0840 3.5566 +O 6.0976 5.6850 8.4258 +H 14.3607 7.8930 4.5806 +O 17.3027 19.5045 0.5926 +H 14.3094 6.0401 11.0090 +O 3.9115 1.7325 13.1886 +H 13.1300 7.7322 9.8388 +O 7.6099 6.4798 2.9215 +H 11.1247 14.5608 15.9774 +O 3.4481 16.9218 14.6414 +H 14.7701 13.9391 5.1651 +O 8.4645 16.6893 7.2402 +H 8.7277 19.2491 5.3484 +O 0.8305 2.5269 15.8383 +H 10.1071 17.4417 8.6884 +O 16.8503 4.3096 7.7057 +H 8.7646 2.6863 13.8613 +O 4.9357 3.2765 5.6164 +H 14.0942 5.5157 16.9339 +O 5.6472 7.1672 17.6816 +H 1.2506 13.0464 12.6153 +O 9.0543 15.9032 0.9121 +H 2.8887 13.9021 9.1701 +O 4.7523 0.5259 5.1451 +H 10.2556 19.7331 3.7584 +O 6.8352 8.0215 11.5231 +H 11.0668 9.8967 4.8215 +O 3.6939 4.7566 12.5970 +H 0.8476 9.0446 1.2120 +O 4.7459 1.0747 19.6882 +H 12.4223 5.7887 3.9791 +O 0.0362 8.2263 2.0593 +H 5.8308 4.7538 1.2237 +O 16.5298 12.9860 7.1843 +H 17.2924 13.8690 12.5610 +O 0.9984 10.9958 7.8339 +H 10.2657 11.4504 0.5913 +40 20.0 20.0 20.0 +frame 78 +O 6.2163 1.1875 10.5884 +H 8.9209 11.2800 2.3786 +O 15.9435 2.0398 3.4845 +H 15.4496 1.1533 3.5523 +O 6.3455 5.6237 8.5809 +H 14.0396 8.1450 4.4003 +O 17.4712 19.2645 0.8034 +H 14.7218 6.4454 10.2891 +O 3.7784 2.0140 13.2640 +H 13.5297 8.5060 10.0319 +O 7.5025 6.0913 2.8509 +H 11.1144 14.9668 16.3310 +O 3.5141 16.7682 14.7126 +H 14.6435 13.7561 5.2564 +O 8.9091 17.0659 7.1411 +H 8.9347 19.4229 5.0227 +O 1.2895 2.5949 15.4873 +H 10.2716 17.8597 8.7293 +O 17.1481 3.9134 8.0649 +H 8.7990 2.5165 13.6389 +O 4.9430 3.2819 5.4924 +H 13.9378 5.7386 16.8586 +O 5.6128 7.2911 17.1882 +H 1.3026 13.0272 12.5884 +O 8.9625 15.7704 1.1274 +H 2.6143 13.7108 9.0058 +O 4.7116 0.0579 5.4645 +H 9.6467 19.9682 3.0353 +O 6.8326 8.0836 11.2930 +H 11.0148 10.1235 5.1293 +O 4.1264 4.4917 11.8015 +H 0.7407 9.1297 1.9000 +O 4.8010 1.0145 19.8983 +H 11.8352 5.6539 4.0779 +O 0.6082 8.2296 2.1522 +H 5.3422 4.3798 1.4027 +O 16.6526 12.5738 7.2242 +H 16.9955 13.7733 12.6446 +O 0.8779 11.3789 8.1711 +H 10.5864 11.2154 0.6655 +40 20.0 20.0 20.0 +frame 79 +O 6.0673 1.3292 10.2629 +H 8.8449 11.2773 2.4340 +O 15.8494 2.5086 3.4665 +H 15.6480 0.8460 3.2886 +O 6.1982 5.8359 7.3249 +H 14.2549 7.8133 4.8760 +O 17.4995 19.4301 0.6396 +H 14.3810 6.5566 9.7775 +O 3.9738 1.9558 13.1760 +H 13.6789 8.1387 10.0064 +O 7.5533 6.2341 3.3963 +H 11.1673 15.0973 16.6516 +O 4.0648 16.2197 14.4425 +H 15.2662 13.6273 5.7551 +O 8.5947 17.2161 7.2558 +H 8.4187 19.5496 5.0584 +O 1.2322 2.1996 15.4052 +H 10.4251 17.6305 8.8477 +O 17.2582 3.6085 8.3686 +H 8.9331 3.0446 13.5900 +O 4.9799 3.2052 4.9782 +H 14.2876 6.4244 16.7775 +O 5.3830 6.9150 17.2240 +H 1.3261 13.4361 12.4359 +O 8.8038 16.0356 1.6253 +H 3.0313 14.0908 8.9495 +O 4.8169 0.3469 5.8462 +H 9.8017 0.3109 2.9860 +O 6.8967 8.0132 10.9924 +H 11.0378 10.3836 5.0218 +O 4.1968 4.1358 12.0258 +H 0.7821 9.0472 2.0707 +O 4.8706 1.4337 19.6166 +H 11.8057 5.6360 3.9265 +O 0.7383 8.0700 2.2743 +H 5.5579 4.5009 1.3539 +O 16.5675 12.9168 7.6926 +H 16.8438 14.1762 12.4539 +O 0.9897 11.2461 8.0572 +H 10.5518 11.5476 1.2141 +40 20.0 20.0 20.0 +frame 80 +O 6.3364 1.2946 10.1006 +H 8.5811 11.1760 2.5841 +O 16.2502 2.7132 4.0540 +H 16.0256 0.7515 3.3458 +O 5.9885 6.2692 7.4409 +H 14.2240 7.9664 4.6586 +O 17.2064 19.5956 0.8696 +H 14.4519 6.6555 9.7564 +O 3.3950 2.0864 13.8093 +H 14.4050 8.4828 9.8149 +O 7.7610 5.8738 3.6020 +H 10.9607 15.1762 16.4539 +O 4.0897 16.2067 13.8339 +H 15.5696 13.6796 5.3758 +O 8.9461 17.4048 7.0738 +H 8.7707 19.7765 4.8725 +O 2.2398 1.8315 15.4736 +H 10.4052 17.9709 8.6907 +O 17.5071 3.6389 8.1005 +H 8.9219 2.7121 13.1516 +O 5.1145 3.3806 4.9060 +H 14.0970 6.3695 17.2360 +O 5.5075 6.7528 16.9016 +H 1.4288 13.6586 12.1268 +O 8.3141 15.8471 1.3156 +H 2.9777 14.0601 8.9242 +O 4.5019 0.8119 5.4680 +H 10.0175 0.4178 3.2518 +O 7.3159 8.2544 10.8313 +H 10.9507 10.6826 5.4140 +O 4.2354 3.3922 12.2675 +H 1.0054 9.1705 2.1172 +O 4.8123 1.1321 19.5976 +H 12.1182 5.5909 3.7506 +O 0.6655 7.9382 2.4769 +H 5.4209 4.6014 1.0344 +O 16.2594 12.7708 7.2208 +H 16.3404 14.3434 12.6355 +O 0.9784 11.7057 7.9714 +H 10.7848 11.7378 1.2578 +40 20.0 20.0 20.0 +frame 81 +O 6.3196 1.3929 9.6236 +H 8.9094 10.9373 2.6502 +O 16.7936 2.6899 4.0654 +H 16.1409 0.3626 3.4117 +O 5.7224 6.2132 7.0566 +H 14.0842 7.9307 4.9667 +O 17.6379 0.2236 1.1422 +H 14.3811 6.8189 9.5768 +O 3.2648 1.5880 13.4659 +H 14.1952 8.6397 9.7836 +O 7.9137 5.7866 3.5489 +H 11.0341 15.1446 16.6641 +O 3.8605 15.9763 13.9281 +H 15.8381 13.5568 5.2498 +O 9.0854 16.9871 7.1677 +H 8.8361 19.3631 4.5427 +O 1.4836 1.7144 16.1247 +H 10.2877 18.4230 8.6756 +O 17.3247 3.5294 8.1420 +H 9.0463 2.4969 13.0579 +O 5.1794 3.1217 4.7637 +H 14.4938 7.0580 16.9024 +O 5.1244 6.3103 16.5214 +H 1.4073 13.6658 12.6154 +O 8.3871 15.8374 1.8504 +H 2.8276 13.7275 9.2856 +O 4.5447 0.8198 5.1609 +H 9.8225 0.7702 3.1193 +O 7.0935 8.2670 11.1207 +H 10.6514 10.8209 5.7469 +O 4.3033 3.0258 12.3511 +H 0.5561 9.2241 1.9595 +O 4.4430 1.4667 19.6547 +H 11.5507 5.6027 3.6164 +O 0.6833 8.5286 2.4235 +H 5.7013 4.3343 0.8238 +O 16.0845 12.7366 7.3094 +H 15.7957 14.1909 12.8987 +O 0.7998 11.5839 8.0436 +H 11.1465 11.3459 1.2643 +40 20.0 20.0 20.0 +frame 82 +O 6.9944 1.1622 9.2883 +H 8.8697 11.1527 2.6426 +O 16.9731 2.8358 4.7011 +H 15.8667 0.6236 3.0604 +O 5.6621 6.4440 6.9484 +H 14.4911 7.6056 4.5714 +O 17.6310 0.2135 1.1171 +H 13.8169 6.4793 9.7859 +O 2.7114 1.1831 13.5359 +H 14.2701 8.4448 9.7538 +O 7.5902 5.2057 3.1401 +H 11.0943 15.3179 16.8957 +O 3.0495 15.8036 13.8922 +H 15.8916 13.4602 5.6329 +O 9.0282 16.7113 7.1687 +H 8.3774 19.0144 4.5180 +O 1.3753 1.7586 16.4077 +H 9.9952 18.1225 8.5875 +O 17.1555 3.3849 8.3214 +H 9.5248 2.7684 13.0078 +O 5.4382 2.7432 4.7029 +H 14.5412 7.1343 16.8996 +O 5.2974 6.1963 15.9583 +H 1.3525 13.5767 12.2547 +O 8.2486 15.9362 0.9297 +H 2.8333 13.3903 9.1926 +O 4.2110 0.4532 4.6999 +H 9.8728 1.0100 2.9598 +O 6.7372 7.8486 10.9784 +H 10.0152 10.6421 5.4754 +O 4.2889 2.7470 12.3483 +H 0.4896 9.1644 1.9113 +O 4.2621 1.5927 19.5944 +H 11.2694 5.3655 3.4197 +O 1.0358 8.8411 2.1554 +H 5.2746 4.2856 0.5606 +O 15.8911 12.4780 6.9989 +H 15.3519 14.2210 13.1275 +O 0.7462 11.4937 8.1878 +H 11.5246 11.1946 1.1828 +40 20.0 20.0 20.0 +frame 83 +O 7.3935 1.1646 9.1236 +H 7.9770 11.3548 2.5190 +O 17.0159 3.1233 4.5319 +H 15.5621 0.9138 2.9424 +O 5.5607 6.3227 6.9176 +H 14.3078 7.2379 4.6960 +O 17.6110 0.4990 0.8688 +H 14.6616 6.1517 9.5300 +O 2.9388 1.2989 13.2223 +H 14.4666 8.4898 9.9921 +O 7.4206 5.5493 2.8757 +H 11.1871 15.1146 17.6460 +O 3.0549 15.5534 13.3703 +H 16.1137 12.7591 5.7888 +O 8.8146 16.4219 7.4392 +H 8.4271 18.7230 4.5721 +O 1.7079 1.9977 16.5438 +H 9.9786 18.0470 8.8706 +O 17.3964 3.0441 8.2812 +H 9.6827 2.5977 12.7693 +O 5.1441 2.9125 4.2834 +H 15.0274 7.4870 16.8212 +O 5.5442 5.8296 15.7807 +H 1.6436 13.8713 12.3837 +O 7.8009 15.8670 0.7591 +H 2.9412 13.2155 8.9152 +O 3.7861 0.1465 4.8051 +H 9.9425 0.9175 3.2359 +O 6.7455 7.9169 11.5090 +H 9.9917 10.8737 5.5200 +O 4.0357 3.2306 12.0593 +H 0.6561 9.0149 1.8116 +O 4.5038 0.7267 19.7902 +H 10.8045 5.3499 3.8527 +O 0.9941 8.9469 2.0310 +H 4.9881 4.2527 0.9998 +O 15.7503 12.9275 6.9202 +H 15.0392 14.3417 12.8209 +O 0.8268 11.4328 8.2128 +H 11.9516 11.0403 1.2098 +40 20.0 20.0 20.0 +frame 84 +O 7.4101 0.9431 9.3525 +H 8.1406 11.4241 2.0020 +O 17.2555 3.1454 4.7843 +H 15.5208 1.1157 2.9643 +O 5.7012 6.5636 6.9536 +H 14.3837 7.5328 4.6589 +O 17.7192 0.0572 0.9233 +H 14.6290 5.6405 9.7456 +O 2.8781 1.4339 13.1476 +H 14.5299 8.6475 9.6602 +O 7.3158 5.5476 3.5635 +H 10.8812 15.0220 17.9413 +O 2.9822 15.3380 13.2431 +H 16.1188 12.9811 6.3709 +O 8.9075 17.1779 7.4505 +H 7.9923 19.0250 4.6322 +O 1.0180 1.6883 16.3902 +H 10.3274 17.9296 9.0030 +O 17.3347 2.9244 8.3338 +H 10.4593 2.3706 13.4400 +O 4.6810 3.4987 3.8993 +H 15.4673 7.3018 16.5495 +O 5.5543 5.9396 15.3712 +H 1.7336 13.8065 12.3393 +O 7.6106 16.2424 1.1135 +H 2.4971 13.1231 8.7342 +O 3.3522 0.0565 4.7883 +H 9.3788 1.0993 3.5360 +O 6.7623 7.4920 11.6936 +H 10.1581 10.9862 5.6177 +O 3.7473 3.2246 12.1117 +H 0.3259 9.2704 1.5308 +O 4.6688 0.4249 19.6520 +H 11.2955 5.6635 3.7984 +O 0.8053 9.1122 1.9632 +H 5.0830 4.9583 1.2994 +O 16.1236 13.2464 6.6182 +H 15.5620 14.2297 12.9137 +O 0.4211 11.6746 8.1488 +H 13.0476 10.7691 0.9983 +40 20.0 20.0 20.0 +frame 85 +O 7.3496 0.4055 10.1681 +H 8.4269 10.7955 2.0584 +O 17.3547 3.1917 4.9186 +H 15.3359 0.7766 3.0177 +O 5.9120 6.7303 6.7752 +H 15.3196 7.5104 4.6832 +O 17.7684 0.3500 1.0061 +H 14.6654 5.6696 10.1155 +O 2.7974 1.0484 12.9176 +H 14.8530 8.6303 9.2269 +O 7.2964 5.3402 3.8603 +H 10.8547 15.1259 17.7792 +O 2.7573 14.9986 13.3435 +H 16.1992 13.0391 6.1090 +O 9.1317 17.4794 7.7410 +H 8.2780 18.6228 4.1578 +O 1.2009 1.5000 16.1431 +H 10.0630 18.0504 8.5851 +O 17.1062 2.8105 8.8713 +H 10.7181 1.8903 12.7546 +O 4.4584 2.9846 3.6800 +H 14.8029 7.8403 16.9551 +O 5.4033 5.2625 15.5274 +H 1.6306 13.6487 12.4278 +O 7.5165 16.3284 1.2263 +H 2.3312 13.1917 9.0541 +O 2.8918 19.9073 4.6111 +H 10.0302 1.1797 4.4403 +O 7.0384 7.7132 12.0481 +H 10.3474 11.4453 5.0867 +O 3.7753 3.1071 12.1741 +H 0.7169 9.4598 0.8619 +O 4.2739 19.7204 19.2489 +H 11.4131 5.8275 4.0012 +O 0.9573 9.4266 1.9728 +H 4.9735 4.8204 1.2766 +O 16.1011 13.4485 6.8705 +H 15.5120 14.8698 13.1282 +O 0.4115 11.8891 7.9758 +H 12.9688 10.9166 1.3236 +40 20.0 20.0 20.0 +frame 86 +O 7.3936 0.8410 10.3545 +H 8.0294 11.1057 2.2974 +O 17.2971 3.8016 4.8472 +H 15.4094 1.3207 3.7937 +O 6.1931 6.8534 6.9622 +H 15.0936 8.0039 4.5241 +O 17.3759 0.2550 0.6098 +H 15.0936 5.7401 10.0199 +O 3.2218 1.1374 12.6445 +H 15.0819 8.6884 9.3639 +O 7.3059 4.9816 3.9365 +H 10.9977 14.6390 17.6764 +O 3.1511 15.0460 13.4445 +H 15.9239 12.9135 5.9261 +O 9.2400 17.3951 8.1811 +H 8.4110 19.0499 4.2080 +O 1.2497 1.6947 16.3340 +H 10.1986 18.6035 8.4257 +O 17.0690 2.6863 9.4144 +H 10.6642 1.5157 12.9325 +O 4.7748 3.3196 3.1881 +H 14.9901 7.9009 16.6940 +O 5.4055 4.6144 15.5040 +H 1.7738 13.9347 12.0745 +O 7.1467 16.1624 1.0983 +H 2.4962 13.1721 9.6050 +O 3.3116 19.6340 4.9641 +H 9.8751 1.5246 4.3533 +O 6.6555 8.1251 12.0510 +H 10.7538 11.6060 4.4501 +O 4.1048 2.9485 12.3111 +H 0.3676 9.0966 0.5987 +O 4.1914 19.2942 19.3225 +H 11.3399 6.0313 3.6981 +O 1.2158 9.5334 1.8237 +H 5.1654 4.9292 1.0910 +O 16.4403 13.5350 7.1771 +H 15.7163 15.2339 13.3077 +O 0.5621 11.6203 6.8924 +H 13.1791 10.4523 1.3251 +40 20.0 20.0 20.0 +frame 87 +O 7.7174 1.4278 10.5175 +H 7.7854 10.9684 2.5593 +O 16.8892 3.3816 4.3431 +H 15.6562 1.1625 3.9665 +O 5.8332 6.7475 6.7354 +H 14.9140 7.9722 4.5603 +O 16.9212 0.2482 0.0236 +H 14.9369 5.1975 10.0617 +O 3.1047 1.0378 12.3958 +H 15.5209 9.0308 9.3272 +O 7.3561 4.5470 3.4230 +H 11.4969 13.8624 18.2373 +O 3.0603 15.2016 13.6987 +H 16.3491 13.1953 5.4453 +O 9.8547 17.3828 8.3993 +H 8.4523 18.5599 4.9411 +O 0.9050 1.7526 16.8595 +H 9.9278 18.5957 8.3092 +O 17.2352 2.2656 9.2590 +H 10.4184 1.4062 13.2068 +O 5.2189 3.5270 3.1458 +H 15.0896 8.2558 17.1882 +O 6.0206 4.0666 15.6316 +H 1.7951 14.3671 12.2212 +O 6.6450 15.8420 0.7909 +H 2.7984 13.5058 9.7887 +O 3.8524 19.6112 5.0436 +H 9.9347 1.4543 4.3128 +O 6.7434 8.4390 12.2625 +H 10.6626 11.2570 4.3934 +O 4.4222 2.8883 12.8742 +H 1.0324 8.9207 1.0812 +O 4.4564 19.1488 19.8492 +H 11.1702 6.1835 3.5356 +O 1.0946 9.3263 1.8822 +H 5.3090 4.8210 0.7012 +O 16.5699 13.4141 7.0766 +H 15.9041 15.4564 13.1471 +O 0.8876 11.3420 6.9432 +H 13.3838 10.5623 1.0430 +40 20.0 20.0 20.0 +frame 88 +O 7.3971 1.8651 10.6540 +H 7.6510 11.1370 2.3176 +O 16.8383 3.2772 4.4147 +H 15.9624 1.2352 3.9907 +O 5.5737 6.8591 7.4571 +H 14.8992 7.9324 4.6860 +O 16.8136 0.7451 19.9140 +H 14.9207 5.0080 9.9358 +O 3.8099 0.7576 12.4679 +H 15.2308 8.6277 9.4974 +O 7.0797 4.4920 3.9481 +H 12.2250 13.9456 18.4604 +O 3.4157 14.6405 13.7462 +H 16.5449 12.7987 5.4894 +O 10.4388 17.3995 8.4559 +H 8.9927 19.1351 4.9098 +O 0.5616 1.7147 17.4886 +H 9.7965 18.0809 8.0732 +O 16.7292 2.8663 9.3518 +H 9.9765 0.9969 13.1192 +O 5.0612 3.9208 3.4547 +H 14.9254 7.7918 17.0826 +O 6.3690 4.0203 15.9292 +H 2.0444 14.5365 12.5904 +O 6.7502 15.8118 1.3657 +H 2.7227 13.2164 9.8151 +O 4.5874 19.1225 4.9718 +H 9.8559 1.3436 4.7240 +O 6.5218 8.3328 11.6202 +H 10.0453 11.5868 4.1666 +O 4.4716 3.1111 13.0680 +H 0.9418 9.0908 1.2772 +O 4.3696 19.1311 19.9388 +H 11.2245 6.1359 3.6144 +O 1.3805 9.2923 1.9140 +H 5.0465 5.0959 0.4634 +O 16.3919 13.4988 7.2498 +H 15.8303 15.4142 13.2521 +O 0.2845 11.7679 6.8555 +H 12.8409 10.8062 0.7864 +40 20.0 20.0 20.0 +frame 89 +O 7.9746 2.0429 10.7754 +H 7.9083 11.1799 2.0794 +O 16.7420 3.2303 5.3564 +H 15.5073 1.2897 3.9305 +O 5.6484 7.0100 7.1428 +H 14.9833 8.2248 4.1702 +O 16.7383 0.7903 0.3544 +H 14.8986 5.0998 10.1553 +O 4.1547 0.5565 12.7107 +H 15.4016 8.4949 8.9941 +O 8.1414 4.7873 4.0122 +H 11.9073 13.5624 18.4943 +O 4.0747 14.5538 14.4044 +H 17.0337 12.6950 5.1448 +O 11.0994 17.6796 7.9904 +H 9.5371 19.3117 4.8076 +O 0.6514 1.4986 17.0944 +H 9.9953 18.0343 8.0291 +O 16.3218 2.5448 9.6610 +H 10.0787 1.3663 12.8010 +O 5.3210 3.4435 3.3540 +H 14.9370 7.4821 16.8560 +O 6.2628 3.9050 15.5655 +H 1.6040 14.4021 12.6023 +O 7.2598 15.8577 0.8566 +H 2.9510 13.6332 9.8167 +O 5.0838 18.8096 4.3219 +H 9.6687 1.1737 4.3757 +O 6.3213 8.2806 11.7166 +H 10.0283 11.8657 4.6356 +O 4.2854 3.2626 12.7929 +H 0.9116 8.7423 1.4111 +O 4.2543 19.5636 0.1750 +H 11.3996 5.9875 3.5483 +O 0.7040 9.5066 1.9277 +H 5.3791 5.2743 0.8991 +O 16.1586 13.3427 6.8188 +H 15.5659 15.5095 12.7935 +O 0.4104 11.6420 6.6747 +H 12.9218 11.3406 1.1944 +40 20.0 20.0 20.0 +frame 90 +O 8.1142 1.6882 10.8647 +H 7.9597 11.4656 2.1009 +O 16.6884 3.4812 5.8089 +H 15.3519 1.6034 3.6138 +O 5.5207 6.9666 6.8224 +H 15.4340 8.4823 4.8271 +O 17.1060 0.5956 0.9844 +H 15.0232 5.7278 9.8465 +O 4.2406 0.5608 12.6668 +H 15.4743 8.3575 9.1606 +O 8.4590 4.3459 4.1501 +H 11.3676 13.2472 18.3403 +O 4.1910 14.6387 14.3134 +H 17.6930 12.2590 5.2354 +O 10.7383 17.3717 8.3812 +H 9.5297 19.2783 4.2538 +O 0.8767 1.7316 17.0650 +H 10.1523 17.8536 8.1355 +O 15.8272 2.6562 9.5021 +H 9.7895 1.5386 12.7346 +O 5.7769 3.2125 3.1962 +H 14.9552 7.2920 16.8567 +O 6.3021 3.6701 15.4179 +H 0.8462 14.4254 12.5828 +O 7.1949 15.5761 1.2952 +H 3.2187 14.1623 9.5209 +O 5.2914 18.9821 4.5346 +H 9.2318 1.2445 4.0438 +O 6.5592 8.4938 10.9957 +H 9.5729 11.5013 4.5985 +O 4.6961 3.0101 12.5426 +H 0.9131 8.3323 1.4475 +O 4.5986 19.6024 0.3614 +H 11.1101 5.6756 3.8439 +O 0.6456 9.2927 2.6897 +H 5.4824 5.6818 0.7968 +O 16.5393 13.0048 6.8370 +H 15.9848 15.5476 12.9144 +O 0.7278 11.4817 5.9744 +H 12.9186 11.2530 1.0135 +40 20.0 20.0 20.0 +frame 91 +O 7.7163 1.6105 10.7824 +H 7.9300 11.1840 1.1130 +O 17.0015 3.4129 5.4103 +H 14.7812 2.1266 3.5019 +O 5.5666 7.0708 6.7724 +H 15.7818 8.5603 5.1357 +O 17.3473 0.9896 0.8155 +H 14.6784 5.9340 10.2980 +O 3.8027 0.0184 12.6765 +H 15.1839 8.2701 9.1925 +O 9.1509 4.6199 3.8541 +H 11.5026 13.3721 18.1386 +O 4.0130 14.6134 14.4263 +H 18.0973 12.3660 5.3059 +O 10.6746 17.6395 8.6064 +H 9.2272 19.6245 4.2602 +O 0.8377 2.2982 17.4803 +H 10.0016 17.8471 7.8371 +O 15.9064 2.5721 9.2926 +H 10.2560 1.7392 12.8517 +O 5.6239 3.6314 3.4284 +H 14.8400 7.4907 16.8208 +O 6.0922 3.8343 15.5227 +H 0.4695 13.8905 12.6550 +O 7.3637 15.0717 1.7655 +H 2.5633 14.3010 9.8580 +O 5.4364 19.1016 4.9656 +H 9.5072 1.0481 3.8770 +O 6.8837 8.6783 11.0425 +H 9.6765 11.6436 4.2342 +O 4.2776 3.2000 13.1242 +H 0.7585 8.1827 2.0786 +O 4.2233 0.1231 0.8396 +H 10.8414 4.8175 4.1919 +O 0.4922 8.8902 2.4254 +H 6.0463 5.4168 0.6458 +O 16.5821 13.0099 7.0004 +H 16.4761 15.6571 12.4924 +O 0.7090 11.4483 6.0191 +H 12.8645 11.4643 0.9339 +40 20.0 20.0 20.0 +frame 92 +O 7.9980 1.6279 10.8924 +H 7.8075 10.5172 0.5590 +O 16.6737 3.7939 5.1647 +H 14.6864 2.3173 2.7734 +O 5.8069 7.1505 6.4991 +H 15.9208 8.5382 4.6830 +O 17.1211 1.0695 0.5877 +H 14.0594 6.2605 10.2103 +O 3.3521 0.4029 12.4402 +H 15.1834 8.7498 9.3585 +O 8.6800 5.1523 3.7975 +H 12.0915 13.0071 18.3539 +O 4.0008 14.3318 14.3986 +H 17.8869 12.7842 4.9126 +O 11.1749 17.5856 8.6164 +H 8.7081 19.8370 3.7181 +O 0.5367 2.3879 17.7126 +H 10.4832 18.0718 7.8484 +O 15.8449 2.8113 9.5801 +H 9.7463 1.5145 12.7856 +O 5.7838 3.6488 3.0442 +H 15.0363 7.7531 16.8298 +O 6.1470 4.2457 15.5438 +H 0.5651 13.9890 12.7346 +O 7.4890 14.5717 2.1451 +H 2.6622 14.7042 9.5265 +O 5.9976 18.7653 4.7876 +H 9.4128 1.2680 4.1104 +O 6.6771 8.6036 11.0181 +H 9.5674 11.3921 3.7311 +O 4.6587 3.3762 12.5787 +H 1.0081 8.2091 2.0375 +O 4.4316 0.1357 0.6980 +H 10.7219 4.6402 3.9587 +O 0.3648 8.3912 2.5724 +H 6.0432 5.5706 0.6658 +O 16.9250 12.9148 6.8855 +H 15.8233 15.7208 12.4883 +O 0.4048 11.6038 5.6460 +H 12.6921 11.2726 0.3700 +40 20.0 20.0 20.0 +frame 93 +O 8.0491 1.7696 11.1602 +H 7.1821 10.2591 0.7285 +O 15.9042 3.8821 5.1710 +H 14.5333 2.3119 2.7122 +O 5.6336 6.8605 6.2110 +H 16.2318 8.2911 4.7085 +O 17.0387 0.9913 0.3241 +H 14.0500 5.9435 10.8741 +O 3.1528 1.0498 12.5337 +H 15.3546 8.9288 9.3273 +O 8.4082 4.1746 4.1191 +H 12.2700 13.4972 18.4030 +O 4.1116 14.8171 15.1352 +H 17.8687 13.0066 4.7068 +O 10.7979 17.4260 7.8512 +H 9.1296 0.3068 3.7580 +O 0.6536 1.7640 18.1602 +H 10.6334 18.2870 7.8146 +O 15.6651 2.9945 9.7385 +H 9.1745 1.4611 12.5376 +O 5.3500 3.8695 2.5513 +H 14.9086 7.1289 16.8433 +O 6.3539 4.4024 15.2891 +H 0.9041 13.9604 12.6143 +O 7.3181 14.8126 2.3331 +H 3.5115 14.7883 9.8214 +O 6.1415 18.0919 4.8872 +H 9.3788 0.9113 3.6257 +O 7.0396 8.9574 10.8377 +H 9.4016 11.4148 4.0759 +O 4.4755 3.1911 13.2040 +H 0.7358 8.4889 1.7942 +O 4.5540 19.9652 0.5509 +H 11.0268 5.5427 3.9833 +O 0.0751 8.3936 2.0229 +H 6.0802 6.1425 0.8342 +O 16.2874 12.8668 6.6184 +H 15.8833 15.5205 12.5260 +O 0.7255 11.7261 5.6170 +H 12.4355 11.9138 0.2732 +40 20.0 20.0 20.0 +frame 94 +O 8.0948 1.8260 10.8522 +H 7.2418 10.4633 1.1391 +O 16.0416 3.7451 5.1982 +H 14.0960 1.9021 2.4502 +O 5.7195 7.3465 5.9292 +H 16.3778 8.7003 4.3067 +O 17.3862 0.9871 0.1709 +H 14.3426 5.9447 11.3627 +O 3.8005 0.8094 12.3228 +H 14.1413 8.8510 9.4495 +O 8.7797 4.2061 4.4317 +H 12.4738 13.5966 18.3302 +O 4.1425 15.1465 14.8323 +H 18.0826 12.6201 4.9724 +O 9.9089 17.3974 8.1460 +H 9.1844 19.5709 4.1981 +O 0.3386 1.9059 18.2432 +H 10.1787 18.4760 7.5677 +O 16.0519 2.7550 9.7652 +H 8.7461 1.6344 12.6817 +O 5.2573 4.0740 2.0131 +H 15.2167 6.8771 16.4922 +O 6.7220 4.5829 14.6617 +H 0.9973 14.0996 12.9069 +O 7.2999 14.5538 2.9857 +H 3.6703 14.2422 9.6361 +O 6.4172 18.2779 4.8151 +H 9.6642 1.2893 3.7163 +O 6.7242 9.1463 10.1020 +H 9.4573 11.2217 4.2862 +O 4.5000 2.8041 13.1936 +H 0.8695 8.4366 1.2972 +O 4.7481 19.7866 0.6025 +H 11.5458 5.7359 4.0476 +O 0.1221 8.4275 1.4125 +H 6.1383 5.8633 0.6100 +O 16.4819 12.9667 7.0163 +H 16.0889 15.3750 12.8469 +O 0.5937 11.3364 5.1515 +H 12.1664 11.4409 0.1385 +40 20.0 20.0 20.0 +frame 95 +O 7.9986 1.6258 10.9155 +H 7.0533 10.6505 1.2060 +O 15.9877 3.0708 5.1169 +H 13.5628 1.5364 3.2618 +O 5.2263 7.3182 6.0693 +H 16.6596 8.5608 4.5100 +O 17.8878 1.0953 0.2596 +H 14.1799 5.9589 11.6041 +O 3.8390 0.5695 12.3386 +H 13.5291 9.3029 9.6201 +O 8.8983 4.2434 3.9855 +H 12.4035 14.0455 18.5498 +O 4.2723 15.7103 14.6838 +H 18.2138 11.9587 4.7389 +O 9.4015 17.5011 7.5887 +H 9.1263 19.4848 4.5987 +O 0.9241 1.6844 18.6667 +H 10.2665 18.6709 7.4846 +O 16.6272 3.2554 10.0021 +H 9.1450 1.5680 12.9135 +O 5.0133 3.4985 1.8189 +H 14.7423 6.3952 16.3514 +O 6.7000 4.7910 14.9363 +H 1.0511 14.0063 12.5944 +O 7.3610 14.5775 3.1331 +H 4.1160 14.2075 9.9560 +O 6.1684 18.0431 5.1378 +H 9.7705 1.1608 3.8696 +O 7.3265 9.3587 10.1976 +H 9.7300 10.8779 4.3803 +O 4.4890 2.3457 12.9056 +H 1.4448 8.1969 1.3623 +O 4.9479 0.1423 0.9205 +H 11.0270 5.3786 4.2976 +O 19.9728 8.2797 1.2584 +H 6.2618 5.8508 0.7626 +O 16.5231 13.0711 6.7399 +H 16.2109 15.3268 12.4863 +O 1.2136 10.7584 5.3526 +H 12.4341 11.2318 0.2043 +40 20.0 20.0 20.0 +frame 96 +O 7.6091 1.8435 11.1849 +H 6.8951 10.5009 1.1612 +O 16.2820 3.3130 5.1761 +H 13.6428 0.9735 3.7626 +O 5.4412 7.7371 6.0108 +H 16.6920 9.2142 4.1041 +O 17.3420 1.6360 0.4523 +H 13.9621 5.9164 11.4535 +O 4.8010 0.5284 12.2270 +H 13.3198 9.6092 9.2979 +O 9.1078 4.5720 4.3225 +H 12.1859 13.9244 18.6804 +O 4.4506 16.3132 14.7382 +H 18.4173 11.4046 4.4663 +O 9.4021 17.1536 7.8077 +H 9.3738 19.2562 4.7214 +O 1.4993 2.4408 18.9758 +H 10.4288 18.7510 7.4793 +O 17.2577 2.7510 10.2228 +H 9.1259 1.3169 13.2101 +O 5.3751 3.6435 1.7064 +H 15.0436 6.0442 16.3559 +O 6.7327 4.7366 15.0706 +H 1.2313 14.2412 12.2881 +O 7.4205 14.5881 2.5639 +H 3.6660 13.6383 10.2462 +O 6.1543 18.0555 4.3458 +H 9.9087 1.4756 3.4391 +O 7.2222 9.4080 9.9455 +H 9.5202 11.1972 3.9748 +O 4.6086 1.8380 13.0253 +H 1.5911 8.2228 1.6082 +O 4.7993 0.5106 0.7506 +H 11.0277 5.6728 4.3411 +O 0.1482 8.3656 1.4030 +H 6.1473 5.6929 0.6283 +O 16.4388 13.1534 6.9985 +H 16.4213 15.3220 12.6970 +O 1.0599 10.7623 5.0326 +H 12.2892 11.6895 0.3723 +40 20.0 20.0 20.0 +frame 97 +O 8.1587 2.2167 10.9088 +H 6.8469 10.7469 0.7740 +O 15.8948 3.5521 5.5703 +H 13.7794 1.3746 3.8630 +O 5.3244 7.7907 5.8031 +H 16.7839 9.1003 4.1131 +O 16.9699 1.1262 0.4016 +H 14.2659 5.9215 11.2650 +O 5.2780 1.2208 12.4427 +H 13.0661 9.6953 9.2045 +O 9.0243 4.5952 4.7054 +H 12.2642 13.6977 18.2428 +O 4.8707 16.2019 14.6431 +H 18.0814 11.6501 4.0568 +O 9.9272 17.5688 8.1554 +H 9.5740 19.1918 4.1601 +O 2.0730 2.6663 18.8137 +H 10.1166 18.6859 7.3561 +O 16.4991 2.8199 9.9360 +H 9.6800 1.0572 13.7208 +O 5.6945 4.0803 1.5964 +H 14.8395 5.9780 16.0007 +O 6.4393 4.6293 14.8249 +H 1.5649 14.4323 12.2964 +O 7.4626 14.5768 2.6898 +H 3.3052 13.8997 10.0685 +O 7.0203 17.6308 4.3089 +H 10.1286 1.0658 3.0954 +O 7.2291 9.4652 9.6586 +H 9.3987 10.6870 3.8221 +O 4.9249 2.0065 12.5909 +H 1.6906 7.9354 1.7785 +O 5.1140 0.5463 0.9179 +H 11.0417 5.5289 4.0433 +O 0.3304 8.0072 1.2225 +H 6.2731 5.7251 0.8371 +O 16.3030 13.3227 6.9949 +H 16.3273 15.3796 12.4914 +O 1.4102 10.4702 5.1752 +H 11.9671 11.2132 19.8689 +40 20.0 20.0 20.0 +frame 98 +O 8.4263 1.9000 10.4617 +H 6.7378 11.0688 0.6315 +O 15.9289 3.7135 6.0782 +H 13.7341 1.0954 3.8729 +O 4.9577 7.2083 6.1476 +H 17.0727 9.0428 4.4940 +O 16.9852 1.0660 0.6436 +H 14.2250 6.0242 11.2472 +O 5.5117 1.5177 12.4005 +H 13.0844 9.2722 8.9866 +O 8.0504 4.5105 4.7732 +H 11.8950 13.7008 17.8756 +O 4.6041 16.4248 14.6002 +H 17.6035 11.4371 4.0480 +O 9.5826 17.9201 8.4093 +H 9.2666 18.9909 4.1175 +O 1.3716 2.4564 19.4044 +H 10.3808 18.8724 7.0885 +O 16.5478 2.8625 9.8397 +H 9.9285 1.4525 13.8100 +O 5.8247 4.5213 1.4565 +H 14.6844 5.7040 15.8832 +O 6.0988 4.6309 14.5596 +H 1.7531 14.6167 12.2128 +O 7.3126 14.8375 2.8927 +H 3.3735 13.7061 9.6360 +O 7.2835 18.2600 3.9264 +H 9.6938 1.2260 2.9950 +O 7.4154 9.1421 9.4923 +H 9.2635 10.8032 4.0547 +O 4.6630 2.0929 12.8471 +H 1.9505 7.9081 1.4725 +O 4.6607 0.6282 0.9199 +H 10.9485 5.6157 3.9298 +O 0.4770 7.3090 2.0729 +H 6.0176 4.9286 1.1689 +O 16.0850 12.7937 7.2807 +H 16.4005 15.2915 12.6820 +O 1.6281 9.6896 5.0858 +H 11.5537 11.4859 19.5400 +40 20.0 20.0 20.0 +frame 99 +O 8.5022 1.5055 10.7092 +H 6.6099 11.4300 1.1255 +O 16.5026 3.4792 5.7905 +H 14.0188 1.0248 3.8703 +O 5.5627 7.3451 5.8256 +H 17.6026 9.3797 3.8803 +O 16.7501 0.7725 0.4054 +H 14.1212 5.8034 11.0744 +O 5.5573 1.1119 12.1755 +H 13.0865 9.8450 9.1826 +O 7.5946 4.5700 5.0500 +H 11.4301 13.5985 18.1170 +O 4.7284 16.9156 14.4834 +H 17.3986 11.4201 3.5243 +O 9.3983 17.8010 8.5719 +H 9.1017 19.6101 4.0919 +O 1.7004 2.6707 19.8926 +H 10.4114 18.4333 7.5754 +O 16.5027 2.7600 9.9419 +H 9.7272 1.3052 13.7966 +O 5.8219 4.3418 1.4783 +H 14.8719 5.8468 15.6458 +O 6.0687 4.6755 14.6513 +H 1.6878 14.4850 12.2471 +O 7.8053 14.8888 3.3750 +H 2.8440 13.9815 9.4119 +O 6.5272 17.6574 3.6898 +H 10.0809 1.4629 3.2269 +O 7.4670 9.0573 9.2578 +H 9.5956 10.6323 3.9337 +O 4.6884 1.9846 12.6531 +H 1.7896 7.4548 2.2616 +O 4.8006 0.8906 0.2080 +H 11.3518 5.7681 3.4046 +O 0.9048 7.5061 1.9619 +H 6.0954 4.9087 1.1511 +O 16.1910 12.9908 7.0090 +H 16.0934 15.2143 12.6317 +O 1.6650 9.5278 5.4152 +H 11.8396 11.2862 19.1576 +40 20.0 20.0 20.0 +frame 100 +O 8.9162 0.7615 11.4159 +H 6.1617 11.4737 1.0772 +O 15.9757 2.4796 5.8882 +H 14.0830 1.5965 3.2659 +O 5.5616 7.3488 5.4195 +H 17.4106 9.2811 3.6167 +O 16.3550 0.6974 0.6841 +H 13.7569 5.7377 10.8989 +O 5.8618 1.1694 12.2884 +H 12.5750 9.9562 9.4089 +O 7.9306 4.8675 5.0718 +H 11.2689 13.6090 18.2332 +O 4.4890 17.0283 14.2710 +H 17.7708 11.2009 2.9638 +O 8.6553 17.4558 8.0344 +H 9.0682 19.8600 4.1265 +O 2.0361 2.6633 19.6566 +H 10.0208 18.3462 7.6695 +O 16.1529 2.3956 9.9370 +H 9.9247 1.4674 13.5220 +O 5.6732 4.1307 1.6286 +H 15.0925 5.6140 15.7026 +O 5.9854 4.6256 14.8051 +H 1.9636 14.3044 11.2671 +O 8.1406 14.9137 2.4773 +H 2.9155 14.1581 9.6457 +O 6.4449 17.7507 3.1227 +H 9.6985 1.5007 3.3713 +O 7.9408 9.2290 9.3984 +H 9.8443 10.1866 3.8100 +O 4.8220 2.2698 12.4303 +H 1.7936 7.4599 2.1422 +O 5.1115 1.2138 0.6345 +H 11.7222 5.9491 3.0478 +O 0.7409 7.4809 1.7989 +H 6.4723 4.8944 1.2171 +O 15.7663 13.2564 7.3343 +H 16.0984 15.2886 11.9633 +O 1.6802 9.0054 4.9461 +H 11.7645 11.1808 19.2044 +40 20.0 20.0 20.0 +frame 101 +O 8.9843 0.8776 11.0928 +H 5.8838 11.5507 1.2151 +O 15.7005 2.7027 5.5282 +H 14.2991 1.5576 3.6813 +O 5.8558 7.8008 5.5805 +H 17.6921 8.9872 3.6192 +O 16.6061 0.7713 0.6687 +H 13.6546 5.6565 10.8640 +O 5.5903 0.8149 12.2469 +H 12.3637 10.7423 9.6988 +O 7.5778 4.9678 5.4085 +H 11.2772 13.4808 18.2517 +O 4.6669 16.7488 14.2240 +H 17.6036 11.0429 2.8657 +O 8.2782 17.6010 7.6318 +H 9.1737 19.7575 4.3202 +O 1.9285 2.2620 19.8166 +H 10.4346 18.5925 7.8787 +O 15.8490 2.2645 9.3426 +H 10.0212 1.5994 13.5609 +O 5.9190 4.1137 1.8915 +H 14.8063 5.3304 15.9408 +O 5.9623 4.9440 14.1739 +H 1.9746 14.5607 11.1475 +O 8.0721 14.7836 2.6499 +H 3.2745 13.8837 10.1995 +O 6.0036 17.8195 2.5835 +H 9.9470 1.8246 3.3150 +O 7.8374 9.1141 9.3993 +H 9.8295 9.6143 3.8253 +O 4.9298 2.3564 12.4706 +H 1.5046 7.2212 2.3028 +O 4.8166 0.9726 0.6065 +H 11.5877 6.3748 3.0795 +O 1.0786 7.1830 2.1669 +H 7.0180 5.2278 0.6302 +O 16.0742 12.9493 7.7940 +H 16.0403 15.5426 12.0173 +O 1.6965 8.5668 5.1790 +H 11.4642 10.7999 18.6238 +40 20.0 20.0 20.0 +frame 102 +O 9.0893 0.5593 11.2046 +H 6.1899 12.2281 1.6158 +O 15.5104 2.6240 6.0753 +H 14.1928 1.4344 3.4622 +O 5.9985 7.6562 4.8957 +H 17.9834 9.2175 3.9438 +O 17.0346 0.7833 1.1659 +H 13.6222 5.7416 10.2830 +O 5.9729 0.7857 11.9238 +H 12.5234 9.8801 9.8040 +O 7.6048 4.5087 5.5304 +H 11.5249 12.9596 18.4141 +O 4.8549 16.7130 14.2957 +H 17.4572 10.8332 2.5403 +O 8.6407 17.8722 7.2446 +H 8.7400 19.7298 4.5833 +O 1.5168 2.6782 19.6101 +H 10.3214 18.5833 7.6635 +O 15.9437 2.1728 9.7161 +H 9.9463 1.6739 13.9505 +O 6.4321 4.7067 1.8496 +H 14.3979 4.8544 15.7914 +O 5.8288 4.8596 14.9882 +H 1.7787 14.1423 11.3421 +O 8.0453 14.8942 2.8165 +H 3.6296 14.0508 10.2311 +O 5.8479 17.5186 2.7061 +H 9.9965 1.8687 2.5390 +O 8.2700 9.1071 9.1311 +H 9.5693 10.0381 4.1995 +O 5.1268 2.3551 12.1881 +H 1.8226 6.8956 2.2412 +O 4.9665 0.8249 1.2141 +H 11.5088 6.6501 2.6538 +O 1.3162 6.8174 1.4679 +H 6.8318 4.5447 0.6748 +O 15.6423 13.1003 7.2893 +H 16.4994 15.4769 12.3498 +O 1.5810 8.6101 5.0652 +H 11.2280 10.5347 18.6728 +40 20.0 20.0 20.0 +frame 103 +O 9.2581 0.3266 11.2501 +H 6.2389 12.2837 1.3609 +O 15.1860 2.3394 6.1984 +H 13.9382 1.0077 4.0202 +O 5.6683 7.8129 4.7738 +H 17.8057 9.0757 3.9789 +O 16.9423 0.6935 0.6541 +H 14.1002 5.5104 9.7439 +O 6.0969 1.0498 11.7870 +H 12.8596 9.7243 9.8493 +O 7.7809 4.3082 5.7167 +H 11.7162 13.0126 18.0900 +O 4.1544 16.8475 14.2855 +H 17.3832 10.7970 2.5292 +O 8.9370 17.8804 6.7878 +H 9.3273 0.0718 4.8093 +O 1.5053 2.8277 0.0853 +H 10.4380 18.5080 7.6965 +O 15.9800 2.7408 9.7797 +H 10.0871 1.9273 14.3663 +O 6.1686 5.0015 1.5431 +H 14.2365 5.0272 15.5241 +O 5.7944 5.2566 15.2226 +H 1.8645 14.1240 11.2931 +O 7.9410 14.4575 3.0785 +H 3.6356 14.2394 10.4983 +O 6.1488 17.2310 2.4877 +H 9.9612 2.1109 2.2674 +O 8.7964 9.1987 9.6951 +H 9.4373 10.0695 3.8661 +O 5.1908 2.2731 12.0769 +H 1.8345 6.6047 1.9862 +O 5.4013 1.0668 0.6902 +H 11.7655 6.1135 2.8066 +O 1.4041 7.0128 1.9641 +H 6.9318 4.6748 1.1089 +O 15.7877 13.5701 7.1507 +H 15.5838 15.6001 12.4882 +O 1.5393 8.4646 5.3318 +H 11.7467 11.1985 18.8950 +40 20.0 20.0 20.0 +frame 104 +O 9.6764 0.6899 11.4525 +H 6.6246 12.8407 1.7861 +O 15.2146 2.2947 5.9987 +H 13.8145 0.5838 4.1798 +O 5.6697 7.8961 5.2183 +H 17.4070 8.9384 4.1401 +O 16.8558 0.3952 1.3402 +H 13.8935 5.5792 10.1032 +O 6.0382 1.3083 12.2697 +H 13.0080 9.4271 9.8176 +O 7.9119 4.5351 5.8221 +H 11.7170 13.0889 18.1751 +O 4.2220 16.6745 14.3639 +H 16.9841 11.0926 2.9383 +O 8.9991 17.9841 6.3853 +H 9.0131 0.1026 4.5224 +O 1.2936 2.2300 19.8177 +H 10.7266 18.8735 7.7758 +O 15.4371 2.1450 9.8696 +H 9.9128 1.9252 14.6284 +O 6.1116 5.0402 1.3155 +H 14.4601 4.6129 15.6481 +O 5.7822 5.1624 14.7538 +H 1.7919 14.3453 10.7357 +O 8.0702 14.3365 3.3337 +H 3.9816 14.2887 9.6471 +O 5.6935 17.6725 2.0921 +H 9.8163 1.7232 2.1531 +O 8.6878 9.3803 10.3113 +H 9.5554 11.0114 3.7029 +O 4.9085 2.5454 11.9785 +H 2.4854 6.4886 1.9271 +O 5.4448 1.1281 0.4296 +H 12.2793 6.4184 3.2035 +O 1.2306 6.8630 1.4425 +H 7.0810 4.5303 1.0116 +O 15.6828 13.3068 7.1997 +H 15.3631 15.4509 13.0353 +O 1.4487 8.6849 5.1536 +H 11.6031 11.0756 18.9699 +40 20.0 20.0 20.0 +frame 105 +O 9.8128 1.0782 11.1390 +H 6.3589 13.5278 1.8242 +O 15.0896 2.1751 5.8437 +H 14.0831 0.3525 4.8513 +O 5.3606 7.8514 5.4021 +H 16.8796 8.9332 4.7422 +O 16.9049 0.4895 1.6718 +H 13.4408 5.8703 9.9040 +O 6.3804 1.2409 12.7189 +H 13.4182 9.2979 10.0295 +O 7.7672 4.3890 5.9776 +H 12.4251 13.1120 18.3623 +O 4.4915 16.6429 14.0329 +H 16.7231 10.2684 3.4770 +O 9.1629 17.9916 6.7202 +H 8.8734 0.3210 3.9904 +O 1.5561 1.8465 19.7114 +H 11.0599 18.4704 7.9709 +O 15.0803 2.0231 9.9840 +H 10.2916 2.0861 14.9182 +O 5.9464 5.1968 1.3150 +H 14.6503 4.5712 15.7006 +O 5.7297 5.4255 14.3658 +H 1.6481 14.2511 10.9313 +O 8.0511 14.1354 3.6761 +H 4.0741 14.3985 9.6304 +O 5.7467 18.2566 1.8343 +H 9.3636 1.9751 2.1226 +O 8.3811 9.1071 10.1799 +H 9.7476 11.4406 3.3437 +O 4.7977 2.5659 11.8433 +H 2.8055 6.3391 1.6884 +O 5.6495 1.2097 0.3548 +H 12.8900 6.7506 3.0425 +O 1.0293 7.0410 1.0606 +H 7.1277 4.3610 0.6688 +O 15.9681 13.2049 7.1473 +H 15.5577 15.4918 12.6668 +O 1.4368 8.6930 5.2568 +H 11.5875 10.7288 18.7701 +40 20.0 20.0 20.0 +frame 106 +O 10.4840 1.0523 11.7724 +H 6.3887 13.2525 2.2475 +O 14.6942 2.4606 6.0538 +H 13.7734 0.8031 4.7328 +O 5.5793 8.0867 5.5414 +H 16.5427 8.8561 5.4140 +O 16.9284 0.1968 1.4061 +H 13.1633 6.1439 9.5565 +O 6.2037 1.0455 12.8674 +H 13.2304 8.9260 9.7653 +O 7.3652 4.2254 6.0661 +H 12.6664 12.9420 18.0960 +O 4.1059 16.7109 14.0762 +H 16.6670 10.2263 3.0813 +O 8.7605 18.2194 6.8965 +H 9.6195 19.9966 4.3433 +O 1.6057 1.6791 19.8511 +H 11.3506 18.4359 7.5843 +O 15.2399 2.2810 10.0824 +H 9.9721 1.9098 15.0585 +O 5.9647 4.9374 1.0186 +H 15.0628 4.8009 15.8673 +O 5.7333 5.4584 14.7150 +H 1.8918 14.1989 10.8188 +O 8.2918 14.2495 3.5069 +H 3.8356 14.3534 9.6758 +O 5.8238 18.6071 2.1518 +H 9.8367 2.2386 2.0142 +O 8.2305 8.6155 10.3759 +H 9.6172 11.3051 3.4286 +O 4.2162 2.3961 11.9468 +H 2.9061 6.6149 1.2189 +O 5.9432 0.5590 0.1098 +H 13.2766 6.6740 2.7980 +O 0.9587 7.0047 0.9676 +H 7.4455 4.1951 0.3593 +O 16.2904 13.3329 7.0469 +H 15.8589 15.4815 12.7342 +O 1.0637 8.7439 5.2279 +H 11.4539 10.2444 19.0933 +40 20.0 20.0 20.0 +frame 107 +O 10.4537 0.9249 11.5971 +H 5.9075 12.8173 1.8461 +O 14.9803 2.6613 6.1097 +H 13.4514 0.2511 4.7980 +O 5.4348 8.2871 5.6047 +H 16.6320 9.0765 5.6966 +O 17.2075 0.0091 0.8515 +H 13.1592 6.3397 9.5578 +O 6.2433 0.7000 12.5150 +H 12.8745 9.2577 10.0801 +O 7.2608 3.9508 5.7607 +H 12.5915 12.9736 18.2175 +O 4.9522 16.9301 14.2368 +H 16.1920 10.2286 3.2415 +O 8.5891 17.9412 7.0407 +H 9.4707 19.3740 4.3271 +O 1.3081 1.9207 19.9937 +H 11.1372 18.5503 7.3692 +O 15.4212 2.2590 10.3580 +H 9.5378 1.5908 14.9619 +O 5.5598 5.0486 1.1125 +H 15.3217 5.0142 15.5990 +O 5.3876 5.6613 14.6314 +H 1.6355 14.2486 10.8851 +O 8.3825 14.0647 3.3080 +H 4.0922 14.6273 9.5636 +O 5.4104 18.2190 1.8255 +H 10.1947 2.5340 2.0658 +O 8.0192 8.9711 10.4213 +H 9.5610 11.4658 3.5508 +O 4.3963 2.7451 11.9325 +H 3.4986 6.6726 0.9230 +O 5.5370 1.0281 0.0965 +H 13.2777 6.3193 3.1337 +O 1.0046 7.3589 1.3736 +H 7.9121 3.6836 0.6950 +O 16.3811 13.3624 7.2794 +H 15.2742 15.5396 12.9775 +O 1.0313 8.7073 5.2316 +H 11.5442 10.3531 18.6720 +40 20.0 20.0 20.0 +frame 108 +O 9.9598 0.5493 11.5460 +H 5.9365 12.7499 1.3143 +O 15.2978 2.7496 6.5413 +H 13.4672 0.5621 4.2931 +O 5.1414 8.3713 5.0064 +H 16.5937 8.5403 5.1411 +O 17.0556 0.3829 1.0888 +H 13.2621 6.4886 9.7459 +O 6.1740 0.5444 12.3172 +H 13.1874 9.0488 9.8875 +O 7.6602 3.6477 5.2098 +H 12.6531 13.0425 17.9393 +O 4.5552 16.5529 14.2134 +H 16.3418 10.0209 2.7255 +O 8.5674 17.7632 6.6862 +H 9.5705 19.1371 3.9854 +O 1.4779 2.3711 0.1302 +H 11.1921 18.3938 6.8372 +O 15.0464 1.8872 10.4457 +H 9.6440 1.2583 14.5868 +O 6.0426 5.0130 1.4231 +H 15.5744 4.7458 15.5485 +O 5.2304 5.3556 14.6870 +H 1.3781 13.7720 10.9379 +O 8.0989 14.2786 3.0019 +H 4.1508 14.6756 9.1811 +O 5.6419 18.0886 1.6307 +H 9.9128 3.0663 2.7145 +O 8.1561 8.6072 10.7454 +H 9.3927 11.6232 3.2553 +O 4.1932 2.4183 11.8572 +H 3.6209 6.4028 1.2409 +O 5.3468 0.7208 0.1294 +H 13.3019 6.5990 2.8056 +O 0.7761 7.2074 1.0830 +H 8.0689 4.0015 0.2273 +O 16.2813 13.3899 7.6629 +H 15.7941 15.3612 13.0187 +O 0.9994 9.0557 5.2057 +H 11.5296 10.1668 19.2849 +40 20.0 20.0 20.0 +frame 109 +O 9.7263 0.3496 11.1124 +H 6.3482 13.1643 1.8309 +O 14.9117 2.6284 7.0242 +H 13.2566 0.4374 4.4246 +O 4.7713 8.3660 4.6321 +H 16.6598 8.0748 5.1728 +O 17.0666 0.4373 0.8990 +H 13.3050 6.3186 9.5725 +O 6.3554 0.3507 11.9262 +H 13.1149 8.9071 9.9211 +O 7.9450 3.8439 6.0058 +H 12.3719 12.8099 18.0782 +O 4.1166 16.4583 14.5488 +H 16.3755 9.9463 2.6580 +O 8.6435 17.9001 6.5849 +H 9.5211 19.0009 4.4013 +O 1.7226 2.3989 19.5667 +H 10.7016 18.0963 7.1043 +O 14.9365 2.3876 10.4778 +H 9.4289 1.1644 14.6094 +O 5.9594 4.7331 1.5443 +H 15.7017 4.8592 14.7523 +O 5.4948 5.6778 14.4248 +H 1.3006 13.4850 10.7300 +O 8.0120 14.4113 3.0672 +H 3.6900 15.0930 8.7655 +O 6.0460 18.5831 1.6987 +H 9.5938 3.0113 2.1316 +O 7.9473 8.7690 10.5011 +H 9.4485 11.5245 3.0373 +O 4.1003 2.2601 12.0116 +H 3.6761 6.3792 1.4122 +O 5.3378 0.5546 0.1652 +H 13.2303 6.2761 3.0706 +O 0.8509 7.2383 1.0630 +H 7.7139 4.2672 0.0017 +O 15.7877 13.8157 7.1382 +H 16.1352 15.1428 13.2127 +O 1.0970 9.5170 5.2244 +H 11.5418 9.3458 19.6394 +40 20.0 20.0 20.0 +frame 110 +O 10.0637 0.9296 10.8467 +H 6.0085 13.7397 1.8924 +O 14.9487 2.9968 6.5695 +H 13.0857 0.3584 4.8480 +O 4.5849 8.2769 4.8912 +H 16.5485 8.3702 5.3955 +O 16.5166 0.6431 0.8988 +H 13.2743 6.0580 8.9367 +O 6.4054 0.1923 12.1672 +H 13.3277 8.9316 9.9088 +O 7.9777 4.0731 6.0268 +H 12.1130 12.5067 17.8487 +O 3.9461 16.3050 14.7120 +H 16.3214 9.7945 2.4359 +O 8.4212 18.0137 6.8139 +H 9.3935 18.8235 4.2861 +O 1.6486 2.4932 19.4741 +H 10.4980 17.9682 7.2850 +O 15.0202 2.4624 10.2616 +H 9.2625 1.5049 15.0192 +O 5.9314 4.9041 1.5198 +H 15.2499 5.3427 14.6673 +O 5.2729 5.2490 14.3893 +H 1.7651 13.4836 10.1505 +O 7.5106 14.2491 2.5643 +H 3.4197 15.1366 8.4166 +O 5.3334 18.8503 2.5764 +H 9.7701 2.5672 1.8813 +O 7.9888 9.1503 10.8818 +H 8.9475 11.1468 3.5237 +O 3.7974 2.1950 12.1039 +H 4.3395 6.7685 1.3758 +O 5.3799 0.2863 0.1974 +H 13.4825 5.5038 2.8815 +O 1.1038 7.4097 0.8739 +H 7.4917 4.3332 0.0785 +O 16.0076 13.9467 6.7391 +H 16.2298 14.7148 13.5862 +O 0.6028 9.4272 5.3553 +H 11.5643 9.6912 19.8309 +40 20.0 20.0 20.0 +frame 111 +O 9.8506 0.9511 11.2234 +H 5.8690 13.5103 2.4139 +O 14.7040 2.5990 6.5590 +H 13.2843 0.4943 4.6240 +O 4.6761 7.5367 4.9953 +H 16.3296 8.2911 5.4315 +O 15.8958 0.5017 1.0858 +H 13.1116 6.0693 9.1669 +O 6.1767 19.7061 12.3660 +H 13.4588 9.2110 9.7878 +O 8.2189 3.8877 6.0807 +H 12.1979 13.1549 18.3233 +O 4.6651 16.7996 14.4373 +H 16.2228 9.9767 2.6362 +O 8.2349 18.3258 6.7578 +H 9.7539 18.6553 4.4798 +O 1.2455 2.7804 19.5996 +H 10.7742 17.1296 7.3783 +O 14.9748 2.4242 10.0367 +H 9.3623 1.7254 15.0763 +O 6.3510 4.7188 1.0674 +H 15.4514 5.0302 14.8831 +O 5.5121 4.6895 14.7174 +H 1.6709 13.2362 10.8425 +O 7.7810 14.0385 2.2650 +H 3.2263 14.6746 8.1907 +O 4.8571 18.8628 2.6684 +H 9.7634 2.2024 1.9626 +O 8.0125 9.5505 10.6406 +H 8.8535 10.9657 3.6404 +O 4.1228 2.0266 11.9947 +H 4.6211 7.0337 1.1706 +O 5.8265 0.2151 0.1779 +H 13.7309 5.1329 2.4244 +O 1.0443 7.2942 1.4082 +H 7.9963 4.3934 19.9477 +O 15.7264 13.8077 5.8860 +H 16.5538 14.1648 13.5965 +O 0.7423 9.3165 5.6369 +H 11.9640 9.9755 0.0310 +40 20.0 20.0 20.0 +frame 112 +O 9.7735 1.0299 11.4393 +H 5.4040 13.2700 2.7698 +O 14.6549 3.0060 6.8151 +H 13.0649 0.9144 5.0327 +O 4.4889 7.5991 4.7413 +H 16.4529 8.1416 5.2854 +O 15.9319 0.4873 0.9206 +H 13.6608 5.9305 9.8725 +O 6.2007 19.6215 12.1607 +H 12.9335 9.2043 10.1759 +O 7.8378 3.8392 6.0408 +H 12.0736 13.2027 18.4034 +O 4.4110 17.0271 14.7853 +H 16.0763 10.3211 2.5813 +O 8.2416 18.4045 6.7902 +H 9.9971 18.7347 4.4705 +O 1.7114 2.7990 19.2981 +H 10.6309 17.0164 7.1726 +O 14.9887 3.0425 10.2184 +H 9.2095 1.6713 15.8434 +O 6.6093 4.6920 1.2708 +H 15.7719 4.7385 14.9493 +O 5.9927 4.9119 14.6858 +H 1.6628 12.9742 10.3305 +O 7.6490 14.1951 2.3117 +H 3.4261 14.7776 8.3885 +O 5.1326 18.6780 2.7636 +H 9.7406 1.8895 1.4132 +O 8.0419 9.6804 10.1129 +H 8.9209 10.8933 3.6727 +O 4.2390 1.9319 11.7469 +H 3.8574 7.5554 1.0277 +O 6.5765 0.1713 19.9195 +H 14.2798 5.1771 2.0600 +O 0.8768 7.2009 0.9432 +H 8.0187 4.2862 19.7617 +O 15.2964 13.2562 5.5413 +H 16.9517 13.8336 13.7443 +O 1.2799 9.0117 5.5592 +H 12.1689 9.8027 19.6994 +40 20.0 20.0 20.0 +frame 113 +O 10.5067 1.2281 11.5577 +H 4.7173 13.3606 2.8475 +O 14.3726 2.9362 7.1263 +H 12.5753 0.7862 4.4670 +O 4.6409 8.3678 4.3787 +H 15.8653 7.9952 5.6818 +O 16.2456 0.4081 0.5060 +H 13.5237 6.0607 9.7462 +O 5.8784 19.2771 12.0020 +H 12.9172 9.5821 10.2069 +O 7.8810 3.5795 6.5795 +H 12.0566 13.1603 18.4508 +O 4.1387 17.2493 14.6274 +H 15.6048 9.8755 2.3239 +O 8.3691 18.5522 6.8107 +H 10.0012 19.0295 4.0751 +O 1.6080 2.9854 19.7471 +H 11.2023 17.5975 7.4672 +O 15.2015 2.4548 10.1663 +H 8.7988 1.8026 15.6999 +O 6.7502 4.6711 1.0911 +H 15.7667 4.8585 14.9316 +O 5.9625 4.7577 14.8413 +H 1.7355 13.3118 9.9448 +O 7.4344 14.5040 2.3368 +H 3.2238 15.0990 7.6445 +O 5.8424 18.2729 2.6457 +H 9.7046 1.7330 1.3058 +O 7.8501 9.2911 9.9187 +H 8.7721 10.9645 4.1781 +O 4.0297 2.1815 11.7533 +H 3.6322 7.9323 0.9588 +O 6.7657 19.9037 19.4189 +H 14.5180 5.0185 2.4855 +O 0.7780 7.1532 0.3533 +H 7.5150 4.0417 0.1540 +O 15.2774 13.1665 5.6010 +H 17.1051 14.0505 14.0220 +O 1.4815 8.9701 5.8638 +H 11.7619 9.7361 19.4343 +40 20.0 20.0 20.0 +frame 114 +O 10.5305 0.9879 10.9831 +H 4.2711 13.2734 3.0908 +O 14.3099 3.4387 6.5747 +H 12.2940 0.7590 4.6857 +O 4.7559 8.1640 4.3694 +H 15.7376 8.1069 5.7676 +O 16.4654 0.2150 0.4258 +H 13.2919 6.0254 9.7737 +O 5.7379 19.4231 12.1389 +H 13.1314 10.0967 10.3876 +O 7.7435 3.6847 6.6112 +H 11.9144 13.2122 18.7204 +O 4.4385 17.2487 14.6735 +H 15.0489 9.8840 2.5333 +O 8.7961 18.0720 6.9501 +H 9.7354 18.9894 4.0517 +O 1.3808 3.3791 19.5999 +H 11.3699 18.0681 8.0113 +O 15.4037 2.2279 10.6294 +H 8.7543 1.8288 15.4426 +O 6.4631 4.6901 1.1942 +H 15.1443 4.5639 14.4824 +O 5.7227 4.5479 14.6308 +H 1.8862 13.2372 9.6073 +O 7.2933 14.7548 1.8595 +H 3.3855 14.7885 7.6384 +O 5.7314 18.6495 2.2799 +H 9.6439 1.7025 1.7103 +O 7.8978 9.5720 9.9578 +H 8.8475 10.8071 3.8320 +O 4.0934 2.1870 12.0717 +H 3.9466 7.5041 0.9113 +O 6.8340 18.9350 19.7752 +H 14.8652 5.0928 2.4243 +O 1.2734 7.2285 0.1410 +H 7.7606 3.7512 19.9476 +O 15.1631 13.0305 5.6171 +H 16.8990 14.0306 13.7643 +O 1.4967 8.5720 5.5478 +H 11.7606 10.1086 19.1856 +40 20.0 20.0 20.0 +frame 115 +O 10.7680 0.7713 10.5866 +H 4.3744 13.0803 3.2182 +O 14.3042 3.1826 6.7183 +H 11.6408 1.2682 4.3392 +O 4.0686 7.9954 4.8369 +H 16.2423 8.2867 5.8935 +O 16.2668 0.6412 0.3541 +H 13.1666 6.4303 10.3405 +O 5.5436 19.4437 11.8770 +H 13.2198 9.7096 10.2231 +O 7.7939 3.7253 6.7252 +H 12.1168 13.4512 17.9031 +O 4.2393 17.4326 14.4302 +H 14.7487 9.4514 2.5284 +O 8.7331 17.9077 7.2738 +H 9.6580 19.1045 3.6179 +O 1.6547 3.6689 19.3791 +H 11.3454 18.3402 8.1013 +O 15.7584 2.3214 10.6513 +H 8.6280 1.1538 15.0496 +O 6.1413 4.9126 1.2683 +H 14.8868 4.4695 13.9980 +O 5.4599 4.7801 14.8172 +H 1.8539 13.2599 9.6911 +O 6.9207 14.9775 1.5614 +H 3.9103 14.6330 7.6677 +O 5.5121 18.7993 2.1436 +H 9.6526 1.5938 1.9460 +O 7.6895 9.7487 9.4609 +H 8.1507 10.8202 4.2600 +O 3.8183 2.0456 12.0933 +H 3.8736 7.7034 0.8637 +O 6.0964 18.9353 19.2528 +H 15.0672 5.7968 2.3468 +O 1.6043 7.1264 0.1625 +H 7.5162 4.2426 19.7094 +O 15.1003 12.3674 6.0008 +H 16.6365 13.6132 13.6655 +O 1.6501 8.6408 5.7327 +H 11.5286 10.8074 19.3096 +40 20.0 20.0 20.0 +frame 116 +O 10.4887 0.9855 10.3131 +H 4.1161 13.4319 3.4645 +O 14.3328 2.8260 7.0746 +H 11.5965 1.5079 4.4358 +O 4.2376 8.1196 4.5158 +H 16.3629 8.3072 6.1822 +O 16.1592 0.1795 19.8749 +H 13.1262 6.6911 9.6841 +O 5.8532 19.4497 11.8751 +H 13.5747 9.7016 10.6841 +O 8.1815 3.4337 6.0948 +H 12.2081 13.4245 17.8685 +O 4.0943 17.4450 14.7913 +H 14.8483 9.7237 2.2772 +O 8.8440 17.7394 7.0474 +H 9.3135 18.9477 3.7905 +O 2.2210 3.7650 19.2744 +H 11.1512 18.2052 8.0393 +O 16.1720 2.2115 11.2539 +H 8.7874 1.4670 15.1011 +O 6.2370 5.0751 1.1399 +H 14.8085 4.3509 13.9016 +O 5.3008 4.4348 14.8331 +H 2.1565 13.2415 9.4194 +O 6.6249 15.5573 1.1155 +H 4.0923 14.8070 7.5825 +O 5.7615 19.1131 1.9019 +H 9.9944 1.3780 1.4812 +O 7.6506 9.4319 8.8613 +H 7.9688 10.1358 4.1811 +O 3.9654 2.5141 11.4753 +H 3.4725 7.7321 1.0198 +O 6.2084 19.0941 19.0861 +H 14.9556 5.8826 2.6243 +O 1.4361 7.7198 19.9789 +H 7.0119 3.9619 19.9601 +O 14.8980 12.4600 5.8212 +H 17.2175 13.4369 13.4635 +O 1.9460 8.6583 5.6979 +H 12.0875 11.1048 19.1785 +40 20.0 20.0 20.0 +frame 117 +O 10.4742 1.0880 10.2902 +H 4.1713 12.7745 3.6961 +O 14.1433 3.2405 6.9891 +H 11.5927 1.3654 4.6146 +O 4.1309 8.4858 4.8351 +H 16.3226 8.3991 6.1275 +O 16.2661 0.0744 19.7554 +H 13.1107 6.5411 9.8027 +O 5.7915 19.7102 11.5842 +H 13.1921 9.2644 10.4199 +O 7.9182 2.9187 6.2519 +H 12.2580 13.1850 17.7372 +O 3.9755 17.3157 14.8355 +H 15.3190 9.1815 2.5570 +O 9.3191 17.6070 7.2032 +H 9.1495 19.4494 3.2467 +O 2.2903 4.1564 19.4740 +H 11.4374 18.2402 8.2154 +O 15.9653 1.9641 11.4872 +H 8.8983 1.0704 15.2315 +O 6.5942 5.4041 1.2345 +H 14.9100 4.4662 13.2840 +O 5.3979 4.7162 15.0447 +H 2.1149 13.5489 9.6063 +O 6.5209 15.8871 1.0833 +H 3.9600 15.0906 7.5733 +O 5.7243 19.1370 1.7014 +H 10.0597 1.6083 0.8419 +O 7.5946 9.2810 8.4813 +H 8.1221 10.3583 4.0347 +O 4.1724 2.6201 11.6153 +H 3.2723 8.2327 0.7622 +O 6.1911 19.3923 18.7163 +H 15.0463 5.8211 2.4579 +O 0.6316 7.8536 0.3382 +H 6.6341 4.2365 0.2517 +O 15.0601 12.1838 5.2820 +H 17.2020 13.8252 13.4801 +O 2.1820 8.3324 6.2505 +H 11.5849 11.2436 19.0410 +40 20.0 20.0 20.0 +frame 118 +O 10.4183 1.4334 9.8000 +H 4.4785 12.5352 3.4643 +O 13.8508 3.2261 6.4976 +H 11.4273 0.7204 4.1091 +O 3.4708 8.6090 4.8557 +H 16.5456 8.6269 5.8860 +O 16.2094 19.6771 19.6036 +H 13.1372 6.3084 10.0270 +O 5.6522 19.2513 11.5527 +H 13.1789 9.0345 10.0497 +O 8.5674 2.5016 5.5917 +H 11.9405 12.7545 18.2108 +O 3.7458 17.5428 14.8464 +H 15.6117 9.1300 2.3785 +O 9.7068 17.2541 7.0189 +H 8.5411 18.7885 3.7771 +O 1.5568 4.1848 19.2632 +H 11.1835 18.4636 8.0861 +O 16.1141 2.1853 11.7534 +H 8.5592 1.0870 14.8098 +O 7.0215 5.8028 1.7289 +H 14.5524 4.5354 13.4866 +O 5.2467 4.8557 15.4502 +H 1.5181 13.6433 9.5410 +O 6.7483 15.8452 1.2682 +H 4.0726 14.6731 7.6598 +O 5.3858 19.3904 2.0282 +H 9.8054 1.5095 0.8061 +O 7.6914 9.0325 8.2932 +H 8.0031 10.5087 3.6905 +O 3.7235 2.6427 11.3836 +H 3.4393 7.7432 0.8555 +O 6.2329 19.4737 18.5088 +H 14.8447 5.8223 2.7503 +O 0.4886 8.0816 0.5458 +H 6.7406 4.1921 0.1766 +O 14.9926 12.5668 5.3766 +H 17.3203 13.7852 14.0447 +O 1.7669 7.8409 6.9481 +H 11.6327 10.7442 19.0842 +40 20.0 20.0 20.0 +frame 119 +O 10.6358 0.7067 9.5459 +H 4.7323 12.4088 3.1314 +O 13.3179 3.1078 6.3859 +H 10.8385 0.6299 4.3131 +O 3.0716 9.1552 5.2182 +H 16.9090 8.2952 6.0600 +O 16.4737 19.6133 19.8790 +H 13.8385 6.4746 10.4210 +O 5.5144 19.0900 11.3762 +H 12.9697 8.9003 10.3363 +O 8.4735 2.2481 5.0527 +H 12.2648 12.5892 17.7813 +O 3.6263 17.6343 14.6648 +H 15.7714 9.1376 2.2448 +O 10.1873 18.1778 7.2026 +H 8.4612 19.1325 4.2701 +O 1.5296 3.7444 19.3443 +H 11.1357 18.5247 7.8991 +O 15.6294 1.9205 11.8572 +H 8.6993 1.0007 14.1972 +O 6.6220 5.9312 1.8260 +H 14.4873 4.6658 13.1959 +O 5.2849 4.1724 15.5380 +H 1.3120 12.9575 9.3772 +O 6.6720 15.8065 1.5031 +H 3.6372 14.8242 8.0330 +O 5.2242 19.2397 2.4746 +H 9.1896 1.2887 1.4442 +O 7.2116 8.9499 8.6743 +H 7.7074 10.5999 3.0790 +O 3.7149 2.7186 12.0413 +H 3.3663 7.8092 1.1603 +O 6.3452 19.5111 18.3012 +H 14.2779 5.9297 2.7400 +O 0.6587 8.2799 0.5316 +H 6.2156 4.1984 0.5305 +O 14.9594 13.0145 5.3164 +H 17.0188 14.1622 13.8743 +O 2.0317 8.0300 6.6609 +H 11.9848 10.8074 19.6070 +40 20.0 20.0 20.0 +frame 120 +O 10.6030 0.7552 9.4685 +H 4.6541 12.5538 3.5758 +O 13.8012 3.1410 6.4931 +H 10.7802 0.8415 4.3158 +O 3.0067 9.1271 4.6655 +H 16.5873 8.0044 6.5648 +O 16.1396 19.8030 19.9150 +H 14.2638 6.6771 10.4033 +O 5.5033 19.3542 11.7437 +H 13.5422 8.7054 10.3009 +O 8.5958 2.6179 4.6028 +H 11.8789 12.6996 17.2656 +O 3.8175 17.8569 14.3539 +H 15.7990 9.2047 1.9779 +O 10.5790 17.7045 7.4758 +H 8.1592 19.0066 4.1011 +O 1.1812 3.5312 19.3328 +H 11.2915 18.3018 7.6134 +O 16.1310 1.8314 12.0607 +H 8.6008 1.5875 14.1103 +O 7.0478 6.2936 1.7070 +H 14.3544 4.7351 13.5091 +O 5.3786 4.5604 16.0081 +H 1.3382 13.1190 9.5131 +O 6.4003 15.6908 1.3993 +H 3.7038 14.9081 8.1859 +O 4.8958 19.3882 2.8733 +H 9.3973 0.9793 1.5754 +O 7.3712 9.2818 8.4759 +H 7.5645 10.8290 3.2045 +O 4.2336 2.7774 11.7647 +H 3.1493 8.1024 1.1983 +O 6.8702 19.8011 18.3914 +H 14.0228 6.1421 3.1588 +O 0.1568 8.2086 0.3205 +H 6.4729 4.2664 0.5467 +O 15.0484 13.1511 4.7923 +H 17.4684 14.3101 13.5524 +O 2.0159 8.0177 6.3583 +H 11.9900 11.1506 0.1418 +40 20.0 20.0 20.0 +frame 121 +O 10.3051 0.8294 9.9480 +H 4.6652 12.2793 4.0764 +O 14.0206 3.4356 5.7988 +H 10.8474 0.4823 4.1777 +O 2.6955 9.0924 4.8578 +H 16.5703 8.2827 6.4762 +O 15.9528 19.6924 0.1138 +H 14.7827 6.4117 9.7363 +O 5.5451 19.4102 11.9150 +H 13.3242 8.6835 10.3242 +O 8.4264 2.3890 4.5516 +H 11.8710 12.6047 17.5784 +O 4.0870 17.6233 14.4973 +H 15.3182 9.0482 2.1154 +O 10.5976 17.7022 7.6325 +H 7.9543 19.3026 4.0170 +O 1.3236 3.9238 18.9453 +H 11.4027 18.3825 7.4534 +O 15.6994 2.1559 12.2457 +H 8.6558 1.6247 13.8689 +O 7.1212 6.3372 1.9343 +H 13.9819 4.9243 13.6206 +O 5.4128 4.4570 15.8521 +H 1.3610 13.3213 9.1742 +O 6.7241 15.5484 1.4064 +H 3.9266 14.7357 8.1841 +O 5.1580 19.2254 2.4496 +H 9.7867 1.0266 1.8545 +O 7.1454 9.8144 8.7673 +H 7.4615 10.7372 3.3657 +O 4.6372 2.5821 11.8940 +H 3.1057 7.9417 1.0158 +O 7.3179 19.7107 17.9619 +H 13.5079 6.4045 3.2340 +O 0.1287 8.3696 0.0163 +H 7.0612 4.4120 0.8656 +O 14.5950 12.9720 5.2344 +H 17.8160 14.0163 13.6892 +O 1.8053 8.3430 6.1872 +H 12.1705 10.9203 0.0548 +40 20.0 20.0 20.0 +frame 122 +O 10.6948 0.3397 10.2229 +H 5.0125 12.5961 4.2984 +O 14.4708 3.1147 6.2343 +H 10.9019 0.9952 4.4214 +O 2.9105 8.9458 4.9184 +H 16.6595 8.8480 6.8521 +O 16.6543 19.5921 19.9494 +H 14.5384 6.2392 9.8075 +O 6.2350 19.4083 12.1199 +H 13.1661 8.7583 10.5735 +O 8.6518 2.0694 4.7629 +H 11.6533 12.3524 17.5149 +O 4.1896 17.4910 14.3596 +H 15.0515 8.8282 2.3783 +O 10.9490 17.5461 8.0886 +H 8.4637 19.7706 4.0032 +O 1.8070 3.7811 18.4546 +H 11.3189 18.3901 7.0433 +O 15.3684 2.6126 12.1140 +H 8.4892 1.6906 14.0798 +O 7.4557 5.9729 1.8322 +H 13.9146 4.8974 13.8563 +O 5.5293 4.3627 15.9283 +H 1.2139 13.1718 8.7235 +O 6.4716 15.1341 1.4882 +H 3.7854 14.5069 8.2908 +O 5.2596 18.8945 2.2672 +H 9.5333 0.8093 1.7050 +O 7.0356 9.7854 8.7180 +H 7.7386 10.7421 4.0526 +O 4.3994 2.6404 11.5387 +H 3.3677 8.1747 0.7084 +O 7.8670 19.5870 18.0507 +H 13.0374 6.4486 3.3466 +O 0.1572 7.8941 0.1526 +H 6.6516 4.6179 0.7754 +O 14.3809 13.1519 5.1952 +H 18.1416 13.8482 13.4168 +O 1.0095 8.2275 5.8496 +H 12.5538 11.1090 0.0912 +40 20.0 20.0 20.0 +frame 123 +O 10.7166 0.3041 10.2300 +H 4.5120 12.4757 4.5653 +O 14.0092 2.9289 6.1654 +H 10.6816 1.1124 3.9483 +O 2.5113 8.9943 4.5884 +H 16.5761 8.7858 7.1181 +O 17.3242 19.7677 19.6861 +H 13.7585 6.2585 10.3563 +O 6.3886 19.3704 12.2455 +H 13.3221 8.7208 11.1356 +O 8.7806 2.2356 5.0197 +H 11.4678 12.7383 18.0887 +O 4.3716 17.5361 14.2454 +H 14.7573 9.2762 2.8278 +O 10.7362 17.4097 8.0340 +H 8.2841 19.3986 4.4446 +O 1.4784 3.5908 18.9508 +H 11.7693 17.8296 6.8395 +O 14.8672 2.5784 12.2516 +H 8.1386 1.8667 13.9853 +O 7.5133 6.0291 2.2378 +H 13.3725 5.2263 13.5156 +O 5.5225 4.5603 15.9091 +H 1.1172 13.1455 8.6054 +O 6.3071 14.7187 1.6540 +H 4.1391 14.6917 8.0476 +O 5.5768 19.0065 2.3883 +H 9.9564 1.3208 1.6797 +O 7.2154 9.6498 8.6583 +H 7.4334 10.8901 4.4352 +O 4.1572 2.8491 11.4783 +H 3.5170 8.2533 0.8991 +O 7.6365 0.0539 18.1691 +H 13.2530 6.4025 3.5377 +O 0.4850 7.7053 0.7025 +H 6.6174 4.7586 0.1521 +O 14.7628 13.4861 5.4797 +H 18.2396 13.6183 13.9433 +O 0.7069 8.0778 5.4530 +H 12.1407 10.9527 19.7510 +40 20.0 20.0 20.0 +frame 124 +O 10.7537 0.4474 10.4992 +H 4.4348 12.7438 4.9068 +O 14.4485 2.6554 5.7340 +H 11.1117 0.8112 3.1656 +O 2.5339 8.6134 4.2660 +H 17.0780 8.4939 7.1180 +O 17.7110 19.6315 19.9624 +H 13.8457 5.9309 10.5493 +O 6.3472 19.5392 12.7694 +H 13.8541 8.8124 11.4091 +O 8.8095 2.2497 4.9852 +H 11.4816 12.5560 18.5031 +O 4.0728 17.5728 14.3261 +H 15.0390 9.3513 3.1820 +O 11.0690 17.6908 8.0457 +H 7.9815 19.7684 4.3625 +O 1.3387 3.4062 18.8396 +H 11.6575 18.0536 6.9163 +O 14.5321 2.3801 12.6478 +H 8.5228 2.3280 13.8515 +O 7.1222 5.8601 2.2648 +H 13.3597 5.5611 13.7322 +O 5.8548 4.5650 16.0454 +H 0.7197 12.7153 8.4768 +O 6.3527 14.6909 1.4527 +H 4.3503 14.3189 8.3889 +O 5.5368 19.2732 2.1396 +H 10.5631 1.6640 1.3447 +O 7.1384 9.6715 8.4225 +H 7.5942 10.7783 4.1554 +O 3.9565 3.0559 11.5737 +H 3.0899 8.2063 0.5309 +O 7.6629 0.2166 17.9812 +H 13.1966 6.4195 3.8655 +O 0.1099 7.8295 0.2612 +H 6.2850 4.4967 19.9693 +O 14.3101 13.7044 5.5287 +H 17.8373 13.7943 13.5405 +O 0.4572 7.5877 5.1506 +H 12.3100 10.4433 19.1808 +40 20.0 20.0 20.0 +frame 125 +O 11.0128 0.1129 10.3404 +H 4.0767 12.7709 4.7368 +O 14.1787 2.5313 5.2088 +H 10.9601 1.0571 3.1955 +O 2.8876 8.4301 4.3602 +H 17.1964 8.6259 6.9797 +O 17.4555 19.3936 0.1067 +H 13.9510 6.1845 10.3591 +O 6.2090 19.3931 12.9931 +H 13.8728 9.1666 11.3410 +O 8.9362 2.1745 4.7997 +H 11.5579 12.2765 18.4392 +O 3.6952 17.4599 14.7030 +H 15.2278 8.8591 3.1202 +O 10.7007 17.4687 8.0602 +H 7.6033 19.6924 4.5263 +O 1.5588 3.7332 18.9216 +H 11.7165 18.5588 7.2393 +O 14.6261 1.7778 12.2775 +H 8.8124 2.0729 13.4108 +O 7.1567 5.6507 2.4316 +H 13.1269 5.8541 14.2239 +O 5.8744 5.1694 15.7147 +H 1.2196 12.3556 8.2632 +O 6.8280 14.5919 1.3569 +H 4.3778 14.0448 7.8666 +O 5.2021 19.2866 1.9558 +H 10.5163 1.7152 1.6666 +O 6.8769 10.1854 8.2205 +H 7.6946 11.0841 4.4929 +O 4.1312 2.7809 12.1807 +H 3.0247 7.8235 1.0183 +O 7.4371 0.5142 17.8966 +H 13.1320 6.4816 3.6406 +O 0.0805 7.8875 0.3842 +H 6.6750 4.3557 19.4139 +O 14.4266 13.6686 5.9813 +H 17.9743 13.8391 13.2512 +O 0.2297 7.1475 5.2907 +H 12.0888 10.1730 19.4152 +40 20.0 20.0 20.0 +frame 126 +O 11.3975 0.3995 10.3572 +H 4.6151 13.1996 4.4214 +O 14.1162 2.7722 5.6673 +H 10.5168 0.6544 3.4641 +O 2.8780 8.7637 4.6832 +H 16.9290 8.4047 7.2257 +O 17.7076 19.5629 19.9440 +H 14.2235 6.0009 10.4230 +O 5.9884 19.4626 12.8061 +H 14.4386 9.3199 11.0477 +O 9.4514 2.3560 4.4850 +H 11.3598 12.4770 18.9811 +O 3.8471 17.9382 14.8115 +H 15.9319 9.1696 2.6586 +O 11.2387 17.6879 8.5620 +H 7.5452 0.0125 4.5934 +O 1.2287 4.5007 18.8106 +H 11.1995 18.4019 6.9544 +O 14.5619 1.7405 11.6700 +H 8.8946 2.1589 13.5535 +O 6.8434 5.9684 2.2882 +H 12.9698 5.7093 14.3125 +O 6.2188 5.6004 15.6465 +H 0.6945 12.7240 8.4746 +O 6.5409 14.6075 1.6637 +H 4.0476 14.3686 8.1296 +O 5.5127 18.9330 1.8139 +H 10.8022 1.4582 1.6650 +O 6.8643 9.8459 8.4749 +H 8.3008 10.9916 4.3850 +O 4.1671 3.7591 12.4805 +H 2.9658 7.8095 0.6812 +O 7.3343 0.4157 17.6751 +H 13.0733 6.0155 4.3591 +O 19.7450 7.5510 0.3507 +H 6.3548 4.4694 19.6988 +O 14.2278 13.8211 6.0982 +H 18.2445 14.1227 13.2045 +O 0.1252 6.9644 5.1434 +H 12.2871 10.3048 19.6790 +40 20.0 20.0 20.0 +frame 127 +O 11.2910 0.0159 10.3228 +H 4.4163 12.9396 3.8358 +O 13.9481 2.6477 5.1776 +H 10.2402 1.0638 3.7623 +O 3.1141 8.8444 4.5073 +H 16.2077 8.8301 7.1088 +O 17.7529 19.4399 19.9770 +H 14.2031 5.6430 10.4400 +O 5.2678 19.5457 12.9013 +H 14.6560 9.6037 11.2213 +O 9.0275 2.0634 4.3035 +H 11.4104 11.8542 19.0003 +O 3.7850 17.9289 14.6884 +H 15.6008 8.7610 2.6871 +O 11.0653 17.9482 8.8866 +H 7.6924 0.1984 4.2229 +O 1.3286 4.6350 18.9584 +H 11.0305 18.5109 6.7314 +O 14.8427 1.4825 11.4916 +H 8.9250 2.1753 13.7605 +O 6.8410 5.6615 2.2563 +H 13.1681 5.9566 14.7331 +O 6.4472 5.8027 15.3375 +H 0.8299 13.0709 8.5003 +O 6.6811 14.8081 1.8435 +H 3.8511 14.1640 8.3438 +O 4.9761 18.9320 2.2164 +H 10.9555 1.3980 1.5572 +O 6.8561 9.6978 8.1963 +H 8.3426 11.3607 4.0519 +O 3.8886 3.4768 12.5001 +H 2.8386 7.5276 0.3640 +O 7.2735 0.8224 17.6857 +H 13.2099 6.4272 4.1794 +O 19.9048 7.6698 0.4032 +H 6.0236 4.3470 19.7700 +O 14.6756 14.1702 6.2209 +H 18.5919 14.2932 13.1001 +O 19.8810 7.1556 5.3907 +H 12.2967 10.5109 19.8168 +40 20.0 20.0 20.0 +frame 128 +O 11.7489 19.8051 10.1481 +H 4.2897 13.3363 3.8117 +O 13.7587 2.4677 4.7108 +H 9.7407 1.2690 3.6886 +O 3.0625 8.7214 4.6968 +H 16.4773 8.9984 7.0814 +O 17.4744 18.9877 19.8355 +H 14.1203 5.7347 10.8117 +O 5.5921 18.9815 12.4372 +H 14.8399 9.6076 11.0128 +O 9.4146 2.1682 5.0536 +H 11.7480 11.9009 19.2117 +O 3.5916 17.5138 14.3676 +H 15.4283 8.4238 2.4792 +O 11.0686 17.5016 9.0529 +H 7.7760 19.6746 4.3077 +O 1.3557 4.2580 18.9257 +H 11.2413 18.5699 6.9044 +O 14.9706 1.6531 11.0277 +H 8.8567 1.8803 14.3744 +O 7.0247 5.7539 2.2043 +H 13.0615 5.9067 14.7046 +O 6.6779 5.7926 15.8943 +H 0.8524 13.0405 8.0257 +O 6.5723 14.7573 2.0614 +H 3.7088 13.8196 8.1042 +O 4.7917 18.6449 2.4363 +H 10.9899 1.5624 1.5519 +O 6.4591 9.8936 8.3883 +H 8.1821 10.8984 3.6521 +O 3.0718 3.5565 12.8442 +H 2.5137 7.3226 0.7276 +O 7.3104 0.5944 17.7477 +H 13.6008 5.9619 4.0592 +O 0.0272 7.0955 0.2187 +H 6.2115 4.1522 19.8013 +O 14.7803 14.5362 5.9713 +H 18.2266 14.1396 13.3613 +O 19.5531 7.0139 5.1294 +H 12.2068 10.3490 0.2849 +40 20.0 20.0 20.0 +frame 129 +O 11.9471 19.9592 10.7422 +H 4.5093 12.9915 3.5607 +O 14.1093 2.4434 4.4995 +H 9.2651 1.0995 3.5996 +O 2.7127 8.7681 4.6138 +H 16.6761 8.5738 6.9610 +O 17.4416 19.0835 19.8335 +H 14.1635 5.8070 11.2144 +O 5.4524 19.0825 12.7756 +H 15.0024 10.1670 10.9193 +O 9.2248 2.1700 4.5632 +H 11.5136 12.2111 19.2042 +O 3.6358 17.6486 14.4698 +H 14.7229 8.5740 2.5857 +O 11.2181 17.5742 8.8569 +H 7.8164 19.5774 4.3233 +O 1.0594 4.0660 18.9737 +H 10.7727 18.8764 6.8033 +O 15.1407 1.3934 11.2103 +H 9.0511 2.5348 14.3735 +O 7.7203 6.4251 2.5783 +H 13.0158 5.5011 14.8634 +O 6.0684 5.3717 15.9147 +H 1.2190 13.1134 7.8696 +O 6.7309 14.7423 1.9862 +H 3.2958 13.4856 8.1169 +O 5.1987 18.1514 2.4685 +H 10.9387 2.2218 1.7986 +O 7.1906 9.4462 8.0297 +H 8.3092 10.8407 3.8664 +O 3.2241 3.7243 13.0045 +H 2.3301 7.0293 1.0109 +O 7.1902 0.2679 17.5300 +H 13.5161 5.4492 3.9416 +O 19.9618 7.1804 0.6348 +H 6.0132 3.7262 19.9749 +O 14.1114 14.3908 5.8526 +H 18.6379 13.8789 12.8955 +O 19.1853 6.7002 5.5654 +H 12.1777 10.1065 0.3954 +40 20.0 20.0 20.0 +frame 130 +O 11.6274 19.8653 10.7827 +H 4.4107 12.9508 3.5243 +O 14.1817 2.9271 4.4504 +H 9.4561 1.4823 3.8047 +O 3.1966 8.7179 4.8820 +H 17.3262 8.3972 6.9980 +O 17.5830 19.2016 19.8336 +H 14.4023 6.1196 10.8392 +O 5.6783 19.3029 12.3653 +H 14.8334 10.3702 10.8335 +O 9.1483 2.2170 4.3882 +H 11.7699 12.2555 19.3201 +O 3.5086 17.8631 14.5944 +H 15.0195 8.6141 2.3912 +O 11.4272 17.2276 9.3079 +H 8.0540 19.8473 4.4203 +O 1.1964 4.0140 18.9735 +H 10.8357 19.0689 6.5384 +O 14.7346 1.0134 11.8892 +H 8.9685 2.3548 13.9842 +O 7.5878 6.9208 2.7366 +H 12.6925 5.7779 15.0352 +O 6.1080 5.3949 16.2123 +H 1.1117 13.0880 7.9899 +O 6.6168 14.8069 1.3609 +H 3.5637 13.3870 7.9879 +O 5.4706 17.4132 2.3318 +H 10.6536 2.4175 1.7172 +O 7.0452 9.6699 7.7984 +H 8.0146 10.8600 3.8657 +O 3.4663 3.6953 12.8351 +H 2.9126 7.2135 0.7119 +O 7.1861 0.0666 17.1358 +H 13.8955 5.0802 3.6079 +O 19.4842 7.5017 0.3930 +H 6.2716 3.6381 19.7926 +O 13.9123 13.9989 5.9946 +H 18.2087 13.7417 12.6903 +O 19.0275 6.6885 5.9197 +H 12.8017 10.3547 0.4979 +40 20.0 20.0 20.0 +frame 131 +O 11.5660 19.8793 10.8670 +H 4.1060 12.9227 3.2535 +O 14.7525 2.5966 4.5693 +H 9.2338 1.2017 3.5075 +O 3.2267 8.8600 4.0824 +H 16.9105 8.3403 7.2480 +O 17.6484 19.6412 19.7495 +H 14.4364 6.5572 10.6171 +O 4.8853 0.2998 12.3138 +H 14.7373 10.6176 11.0173 +O 9.3557 2.0329 4.4564 +H 12.0274 12.3083 19.1088 +O 3.0727 17.6055 14.4232 +H 15.5973 8.4522 3.0248 +O 11.1798 17.1727 9.3310 +H 7.4991 19.6222 4.8529 +O 1.1187 3.5323 19.4845 +H 11.1829 19.1939 6.2258 +O 14.6797 1.1487 11.6403 +H 8.6573 2.7215 13.4809 +O 7.9576 6.4056 2.5690 +H 12.5775 5.5266 14.7390 +O 6.3647 5.5788 15.9209 +H 1.1349 13.5821 8.0182 +O 6.2531 15.1597 1.3490 +H 3.6482 13.1146 8.0522 +O 5.6028 17.6931 2.4290 +H 10.8311 2.7992 1.3978 +O 7.4907 9.9564 7.8299 +H 8.0927 11.1468 3.9356 +O 3.7693 3.3651 12.8630 +H 2.7204 6.9369 0.9542 +O 6.9602 0.2694 17.6128 +H 14.4882 4.9997 3.2575 +O 18.9975 7.3198 0.2255 +H 5.9412 3.8711 19.7285 +O 13.7209 14.6918 6.3395 +H 18.0958 13.0726 12.2727 +O 19.4808 7.0484 6.0729 +H 12.4512 10.2182 0.5257 +40 20.0 20.0 20.0 +frame 132 +O 11.7091 19.7570 11.3148 +H 3.7631 13.2709 3.2790 +O 14.5899 3.1477 4.5228 +H 9.4577 0.9808 3.7039 +O 3.4532 8.7479 4.2430 +H 17.4925 8.6547 7.4927 +O 17.8705 19.4833 19.4574 +H 14.3884 6.9656 10.2438 +O 4.6176 0.1969 12.0992 +H 14.4441 10.7918 11.3989 +O 9.7159 2.3949 4.1124 +H 12.0487 12.1220 19.3078 +O 3.0193 17.4815 14.0033 +H 16.1061 8.6093 2.9384 +O 11.4844 17.4088 9.7104 +H 7.8308 19.6558 4.5956 +O 1.0273 3.5582 18.8181 +H 11.2846 19.4690 6.5473 +O 14.6944 1.0074 11.4122 +H 8.7483 2.6466 13.4444 +O 8.5699 6.5176 2.6939 +H 13.1587 5.7304 15.1693 +O 6.2806 5.7302 15.6465 +H 1.0378 13.6174 8.2367 +O 6.3856 15.2297 1.2593 +H 3.4633 13.2232 8.0650 +O 5.6309 17.0130 3.2722 +H 10.5707 2.9488 0.8882 +O 7.5930 9.4637 8.1236 +H 8.3510 11.3899 4.1112 +O 4.2093 3.7730 12.5905 +H 3.0120 6.5867 0.8404 +O 6.8605 0.6674 17.5765 +H 14.3501 5.0960 2.9046 +O 19.0982 7.1558 19.7528 +H 5.7250 3.5192 19.2841 +O 13.7923 14.5571 6.4334 +H 17.7098 12.9372 11.8693 +O 19.9871 7.3414 5.5156 +H 12.3943 10.8660 0.4874 +40 20.0 20.0 20.0 +frame 133 +O 11.8997 0.2229 11.9653 +H 3.5093 13.6268 2.7859 +O 14.7896 3.4181 4.3496 +H 9.5336 1.1859 3.2131 +O 2.9846 8.8910 4.3719 +H 17.3939 8.4512 7.4150 +O 17.6458 19.7092 19.9990 +H 14.2186 6.5701 10.1596 +O 4.7666 19.9954 12.2351 +H 14.0091 10.4035 11.0834 +O 9.6284 2.6409 4.2659 +H 12.4118 12.1945 19.4759 +O 3.1724 17.8617 13.9251 +H 16.6483 8.3001 2.9848 +O 11.6647 17.7952 10.0453 +H 7.8081 19.8955 4.6569 +O 1.0735 3.8736 19.0825 +H 11.2869 19.5161 6.5492 +O 14.6007 0.9156 11.3946 +H 8.4729 2.8159 13.6016 +O 8.7036 5.9510 2.6465 +H 13.5578 5.6469 15.5659 +O 6.5719 5.4964 15.7792 +H 1.8068 13.4899 8.2808 +O 6.5403 15.0612 1.2467 +H 3.6738 13.3354 8.0030 +O 5.5000 17.1861 3.3661 +H 10.9489 2.2189 1.1963 +O 7.3877 9.3903 8.6305 +H 8.2199 11.3968 3.9270 +O 4.4890 3.3468 12.3637 +H 3.5830 6.5973 1.4368 +O 6.0037 0.6790 17.6444 +H 14.4977 4.6058 2.4575 +O 18.7490 7.3880 19.6615 +H 5.8828 3.6961 19.1957 +O 13.5735 14.3164 6.8205 +H 17.1453 13.5292 12.2651 +O 0.0382 7.3229 4.4856 +H 12.4307 10.6338 0.5468 +40 20.0 20.0 20.0 +frame 134 +O 12.2294 19.9822 12.0612 +H 3.6008 13.9610 3.4753 +O 14.5276 3.3037 4.5380 +H 9.7760 0.8421 3.2034 +O 2.9254 9.2060 4.3505 +H 17.6113 8.9224 7.1035 +O 17.6452 0.1334 19.8035 +H 14.3437 6.8209 10.2258 +O 4.5173 0.0463 12.4123 +H 14.0296 10.5894 11.2210 +O 10.1534 2.3307 3.9677 +H 12.9649 11.8954 19.3763 +O 3.3871 17.6222 14.2326 +H 16.5075 8.2470 2.9273 +O 11.8451 17.9252 9.5969 +H 7.5783 19.6684 4.8741 +O 1.2535 4.1100 19.1799 +H 11.1273 19.6558 6.1699 +O 14.5658 0.5318 11.4323 +H 8.2398 3.0349 13.9306 +O 9.0463 5.5614 2.6073 +H 13.5190 5.7678 15.5346 +O 6.4505 5.4341 15.8950 +H 2.2934 13.2377 8.0644 +O 6.4568 15.2143 1.4129 +H 3.5521 13.9243 7.9812 +O 5.4220 17.6184 3.4208 +H 10.8575 2.7954 1.2541 +O 7.2102 9.1073 8.6730 +H 8.3635 10.9618 3.5053 +O 4.0502 2.9706 12.3000 +H 3.4242 6.7501 1.8761 +O 5.6155 0.4163 18.0295 +H 14.7936 4.5901 2.2352 +O 19.0071 7.4050 19.3209 +H 6.0914 4.0870 19.0170 +O 14.0576 14.4265 7.4215 +H 16.7014 13.5334 12.0064 +O 0.1071 7.2750 4.9849 +H 12.5896 10.2275 0.5389 +40 20.0 20.0 20.0 +frame 135 +O 12.2338 0.5975 11.7937 +H 3.6789 13.7643 3.2140 +O 14.7017 3.0804 4.5369 +H 9.8684 1.0805 3.2516 +O 2.9455 9.1810 4.2175 +H 17.6879 9.0442 6.9670 +O 17.6063 19.8051 19.8003 +H 14.4785 7.3341 9.8824 +O 4.9295 19.6086 12.6243 +H 14.0657 10.0065 11.1787 +O 10.2624 2.7658 3.4172 +H 12.7030 11.3629 19.4199 +O 3.1213 17.4869 13.9883 +H 16.4562 8.0416 2.8904 +O 12.2140 17.5439 9.4615 +H 7.3467 19.6399 4.6458 +O 1.7040 4.4431 19.5409 +H 11.1391 19.4159 6.1348 +O 14.2133 0.4135 11.9696 +H 8.5284 3.3752 14.1507 +O 8.6518 5.9018 2.5697 +H 13.5676 6.1338 15.9542 +O 6.3436 5.1383 16.0103 +H 2.3311 13.2106 8.4217 +O 6.0437 14.7491 1.1682 +H 2.8764 14.4650 7.8277 +O 5.4859 18.0564 3.5741 +H 11.2904 2.8823 1.7517 +O 7.2852 9.3969 9.2170 +H 8.1759 11.0872 3.3221 +O 3.7850 2.6961 11.9553 +H 3.5127 6.4533 1.9938 +O 5.5666 0.9112 17.4037 +H 14.6413 4.5420 2.0652 +O 18.7875 7.8720 19.4648 +H 5.9844 4.2705 19.0215 +O 14.1981 14.2452 7.6523 +H 16.3620 13.8588 12.1548 +O 0.1844 7.4663 5.4247 +H 11.9877 10.6202 0.6521 +40 20.0 20.0 20.0 +frame 136 +O 12.4150 0.3116 12.0915 +H 3.7788 13.7752 3.2494 +O 14.3652 3.1812 4.5208 +H 10.0937 1.1333 3.3723 +O 2.8685 8.7605 4.3261 +H 17.7907 8.8718 6.1909 +O 17.5973 19.7618 0.2153 +H 14.3297 6.9186 9.6923 +O 4.5621 19.9732 12.9099 +H 14.1785 9.8290 11.1616 +O 10.2758 2.6712 2.8141 +H 12.6827 11.1561 18.8693 +O 3.0919 17.2916 13.4879 +H 16.8625 7.6236 2.8754 +O 12.0989 17.2663 9.4039 +H 7.5656 0.0233 4.7327 +O 1.0538 3.9075 19.8923 +H 11.2883 19.2640 5.9767 +O 14.6535 0.3582 11.5884 +H 8.0555 3.6518 13.9295 +O 8.3066 5.9166 2.7422 +H 13.7488 5.9564 15.7299 +O 6.7600 4.8678 15.9364 +H 2.0666 13.0130 8.9267 +O 6.1983 14.6453 1.4488 +H 2.6486 14.2353 7.9223 +O 4.7856 18.5050 3.2855 +H 11.3387 2.6557 1.6404 +O 7.0062 9.2746 9.0296 +H 8.2003 10.8999 3.4367 +O 3.3340 2.9487 11.9856 +H 3.7788 6.3334 2.2728 +O 5.5248 0.9249 17.4413 +H 14.5358 4.4437 2.0352 +O 18.9215 8.0152 19.4920 +H 6.5309 4.1811 19.3370 +O 14.4290 13.6706 8.0987 +H 16.4088 14.1229 11.9920 +O 19.7806 7.6600 5.5920 +H 11.9640 11.1214 0.5469 +40 20.0 20.0 20.0 +frame 137 +O 12.2980 19.7126 12.0657 +H 3.9178 14.1560 3.7329 +O 14.2618 3.0088 4.4324 +H 10.2760 0.8025 3.4669 +O 2.8533 9.1425 4.2077 +H 17.2384 8.5394 6.1525 +O 17.5927 0.3834 0.5032 +H 14.5234 7.0534 9.7613 +O 4.0380 19.6739 12.8190 +H 13.9029 9.4075 11.0495 +O 10.0197 2.6539 2.3567 +H 12.8520 11.7161 19.1219 +O 3.2373 17.1126 13.5137 +H 16.1273 8.0900 2.4421 +O 12.1922 16.6964 9.2887 +H 7.5669 0.6964 4.1087 +O 1.2844 4.2926 0.1612 +H 10.7141 19.6598 6.0856 +O 15.2066 0.2723 11.9479 +H 8.3803 3.8171 13.8102 +O 7.9413 6.2621 2.8267 +H 13.6750 5.6717 16.0641 +O 6.4992 4.6111 15.9377 +H 2.2257 13.1001 8.5243 +O 6.7134 14.4194 1.6054 +H 2.4342 14.0671 8.1557 +O 5.0229 18.6854 2.6952 +H 11.4235 2.3092 1.9721 +O 7.4454 9.6023 9.2421 +H 7.9958 10.6964 3.5648 +O 3.1005 2.7004 12.4578 +H 3.3615 6.3677 1.9433 +O 5.7877 0.9552 17.7398 +H 14.7720 4.3371 2.1565 +O 19.1507 8.5564 19.4873 +H 6.5966 3.9090 19.4045 +O 14.9923 13.4804 8.0007 +H 16.3349 14.0407 11.8137 +O 19.9560 7.1166 5.4993 +H 12.2011 10.9130 0.8328 +40 20.0 20.0 20.0 +frame 138 +O 12.3729 19.2936 12.4022 +H 3.8077 14.4559 3.8062 +O 14.7926 3.3425 4.2062 +H 10.4976 0.6225 3.3343 +O 2.8891 8.8842 4.5508 +H 16.8626 8.8521 6.8037 +O 17.6821 0.7615 0.5130 +H 14.2346 7.1758 9.6346 +O 3.6703 19.8494 12.7995 +H 14.1068 9.2956 11.7503 +O 9.6686 2.5801 2.4028 +H 13.1441 11.7080 19.3458 +O 3.5539 17.5149 13.6369 +H 15.8120 8.2060 2.7191 +O 11.8818 17.1795 9.4034 +H 7.6053 0.9026 4.8317 +O 1.4246 4.4991 19.8637 +H 10.5140 19.1915 5.9100 +O 15.9823 0.0956 12.0858 +H 8.0268 3.3903 13.2858 +O 7.8661 6.2263 2.9721 +H 13.5061 4.9060 16.2445 +O 6.3119 4.8142 16.2792 +H 2.6300 13.0256 8.5513 +O 6.9282 14.8756 1.7977 +H 2.6746 13.8893 8.3382 +O 4.7464 18.9177 3.0080 +H 11.5962 2.1262 2.6142 +O 7.3490 9.5635 9.5699 +H 8.7188 10.4672 3.6024 +O 2.7559 2.5329 12.4900 +H 3.6253 6.6791 2.1939 +O 5.3928 0.5884 17.3103 +H 14.9380 4.3183 1.8432 +O 19.0044 8.6530 19.7243 +H 6.4996 3.6274 18.7099 +O 15.2166 13.2738 7.5723 +H 16.6308 13.7055 11.9848 +O 19.9102 7.2519 5.5015 +H 12.0776 11.2914 0.8735 +40 20.0 20.0 20.0 +frame 139 +O 12.0658 19.4348 12.1592 +H 4.0569 14.0012 3.7450 +O 15.0381 3.5207 4.1994 +H 10.0548 0.4657 3.2733 +O 3.2061 8.9441 4.3796 +H 17.3694 8.1145 6.8417 +O 17.9424 0.5906 19.9733 +H 14.3709 6.7948 9.8804 +O 3.7924 19.8785 12.8927 +H 14.2155 8.7601 11.5186 +O 9.5507 2.8522 2.2790 +H 13.2130 12.2077 19.0312 +O 3.5515 17.2438 14.3790 +H 15.9157 8.8434 3.0845 +O 11.9612 16.5515 9.6905 +H 7.4849 1.0032 5.4476 +O 1.3405 4.2737 0.0380 +H 10.6585 18.9651 5.7080 +O 16.7232 19.7869 12.2020 +H 8.2242 3.6500 12.8789 +O 7.7563 6.2171 3.5307 +H 13.2742 5.1716 16.1915 +O 6.4432 5.1252 16.3800 +H 2.8875 13.1766 8.9613 +O 6.7937 14.5606 2.1538 +H 2.9577 13.4473 7.4751 +O 4.9940 18.8896 2.8055 +H 11.4132 1.9401 2.3297 +O 7.4979 9.5415 9.6650 +H 8.7955 10.3381 3.4219 +O 2.3870 2.6950 12.0193 +H 3.3175 6.4080 2.0328 +O 5.3935 0.1748 17.3081 +H 15.0312 4.7324 1.8495 +O 19.1047 8.4871 19.3423 +H 6.8007 3.7543 18.2381 +O 14.9267 12.7298 7.8450 +H 16.8489 14.1487 11.7558 +O 19.9089 7.2890 5.6043 +H 12.3652 11.8678 0.8432 +40 20.0 20.0 20.0 +frame 140 +O 12.2750 19.1154 11.9322 +H 4.3415 14.1832 3.9940 +O 15.5592 3.9589 4.5329 +H 10.0522 0.3838 3.3699 +O 3.7012 8.8985 4.6345 +H 17.5574 8.1106 6.5839 +O 18.4470 0.2794 0.2959 +H 14.9255 7.0467 9.2694 +O 3.7423 19.8517 13.5779 +H 13.8747 9.4599 11.4453 +O 9.3395 2.2969 2.3645 +H 13.5070 12.1459 18.9591 +O 3.2543 17.4279 13.9049 +H 16.1597 8.7665 3.3980 +O 12.3562 16.8011 10.0291 +H 7.5134 0.6391 5.4574 +O 1.4152 3.9645 19.9406 +H 10.7355 18.8020 5.6744 +O 16.8763 19.3169 11.8630 +H 8.5335 3.7341 13.0808 +O 7.7595 6.7097 3.6784 +H 13.3807 5.3211 16.0813 +O 5.7727 5.8624 16.1926 +H 3.1070 13.2046 9.0648 +O 6.5864 14.2748 2.0349 +H 3.1854 13.7894 7.1005 +O 5.9003 19.0147 2.8941 +H 11.6502 1.6253 2.7734 +O 7.6417 9.6413 9.6349 +H 9.0694 9.8910 3.3625 +O 1.9207 2.7472 12.0999 +H 3.4235 6.2899 2.7137 +O 5.0581 19.9783 17.2542 +H 14.8392 5.0574 1.6791 +O 19.2775 8.5385 19.0713 +H 6.3943 3.5319 18.1856 +O 15.1908 13.0192 8.0505 +H 16.5989 14.0408 11.5773 +O 19.3687 7.2037 5.7674 +H 12.6652 12.0062 1.0104 +40 20.0 20.0 20.0 +frame 141 +O 11.7201 19.4977 12.0912 +H 4.1185 14.3129 3.8293 +O 15.3689 4.2367 4.8644 +H 9.9062 0.0382 3.1733 +O 3.9163 8.8846 4.6688 +H 17.8574 8.0509 6.5542 +O 18.3473 0.5140 0.1987 +H 15.6172 7.1013 9.2695 +O 3.5446 19.9701 13.8093 +H 13.3412 9.0888 11.1580 +O 9.3885 2.2658 2.4795 +H 13.4383 11.5640 18.9987 +O 3.4254 17.7008 14.3101 +H 16.1688 9.1330 2.7645 +O 12.7966 16.4775 9.5708 +H 7.4650 0.7016 5.8252 +O 1.5911 4.1398 19.5572 +H 10.6014 18.2639 5.5527 +O 17.0071 19.4028 12.0361 +H 8.3927 3.7673 13.1477 +O 7.6411 7.0125 3.7988 +H 12.9663 4.9947 16.1202 +O 5.8398 5.9648 16.5440 +H 3.0359 13.8242 9.3486 +O 6.3157 14.3634 1.5676 +H 3.0190 13.5373 7.3462 +O 5.7332 18.7985 2.7341 +H 11.6703 1.4517 2.7123 +O 7.4858 9.2626 9.6210 +H 9.3066 9.6619 3.4101 +O 1.8672 2.3273 12.1488 +H 3.3488 6.4040 2.4268 +O 5.3829 0.4306 17.2494 +H 14.6898 5.0544 2.0400 +O 19.8970 8.5887 19.0848 +H 6.1574 3.4790 18.0045 +O 15.1344 12.9548 8.3264 +H 16.3586 14.4503 11.7812 +O 18.8353 7.4594 5.3711 +H 13.0432 12.1184 1.0462 +40 20.0 20.0 20.0 +frame 142 +O 11.3526 19.3111 12.5097 +H 4.0026 13.9424 3.4207 +O 15.1775 3.7287 4.8940 +H 9.7660 0.2676 3.3674 +O 3.9788 9.0326 4.6596 +H 17.5438 8.0030 7.2480 +O 18.5946 0.2164 0.6918 +H 15.8753 6.9980 9.0820 +O 3.4809 19.9616 14.0847 +H 13.0798 9.6293 11.1505 +O 9.5291 2.2748 2.1972 +H 13.7398 11.5942 18.7821 +O 3.2607 17.5190 14.6580 +H 16.1553 8.7841 2.9541 +O 12.9512 16.9377 9.6797 +H 7.0666 1.4791 6.1206 +O 2.1217 4.3377 18.9866 +H 10.5220 18.7932 5.5275 +O 17.2096 19.4412 11.8949 +H 8.6695 4.3078 13.6171 +O 7.3522 7.0093 3.0725 +H 13.2172 5.6678 15.7957 +O 6.2520 5.9383 16.3561 +H 2.9739 13.8254 9.9053 +O 6.3032 13.9732 1.9543 +H 3.4245 13.5484 7.4878 +O 6.0408 18.9130 2.9360 +H 11.9775 1.7590 2.0798 +O 7.2742 8.9504 9.3699 +H 9.1022 10.2958 3.3692 +O 1.8243 2.5361 12.4028 +H 3.3609 6.4211 2.4140 +O 5.5147 0.5002 17.4114 +H 14.5253 5.0428 2.0685 +O 19.7976 8.5822 19.0759 +H 5.9676 3.5947 18.1271 +O 15.5166 12.7262 8.1854 +H 16.0524 14.2079 11.6787 +O 19.2505 8.3552 5.1998 +H 12.7995 12.2575 0.6298 +40 20.0 20.0 20.0 +frame 143 +O 11.5106 19.4535 12.4540 +H 3.6983 13.7182 4.3580 +O 15.2868 3.9053 4.4239 +H 9.3388 19.9250 3.3527 +O 3.5979 8.5881 4.5374 +H 17.4703 8.4434 6.9685 +O 19.0501 19.6444 1.1812 +H 16.2960 7.1136 8.8290 +O 3.3686 0.1854 14.1067 +H 13.3483 9.5203 11.1389 +O 9.6630 2.5875 2.0205 +H 13.1600 11.1656 18.8424 +O 3.2705 17.5577 14.5292 +H 15.8560 8.7944 2.9668 +O 12.8967 17.1609 9.3541 +H 7.4338 1.2106 5.9467 +O 1.8581 5.0049 19.2773 +H 10.1957 19.0627 5.1530 +O 16.9615 19.3622 12.1939 +H 8.6026 4.8504 13.5405 +O 7.2259 7.0967 2.5023 +H 13.1458 5.8175 15.9704 +O 6.9330 6.4133 15.9456 +H 2.9579 13.7880 9.6239 +O 6.1126 14.3914 1.5775 +H 2.9130 13.6646 7.5666 +O 5.3021 18.7454 3.0887 +H 11.7730 2.3295 1.5560 +O 7.1448 9.2097 9.1724 +H 8.4784 10.4971 3.6386 +O 2.3422 2.3585 12.9882 +H 2.8024 6.7898 2.6766 +O 5.3893 0.1610 18.2122 +H 14.7607 5.3842 2.2993 +O 19.5245 8.7938 19.6569 +H 5.8084 3.4647 17.8769 +O 15.8910 12.5400 8.7087 +H 16.0072 14.2632 11.6356 +O 18.9245 7.8923 4.8033 +H 12.3613 12.5928 0.5053 +40 20.0 20.0 20.0 +frame 144 +O 11.9860 18.8892 12.2597 +H 3.7281 14.0787 4.1074 +O 15.2193 4.1300 4.5025 +H 9.0171 0.0848 3.5911 +O 3.6937 8.8897 5.0836 +H 17.4787 8.9318 7.0217 +O 19.0172 19.4742 1.0792 +H 15.8794 6.9001 8.6594 +O 3.4606 19.9801 13.9977 +H 13.1975 8.9566 11.0838 +O 10.0616 2.7036 1.7839 +H 13.0138 11.2730 19.0120 +O 3.2051 17.8597 14.6530 +H 15.7582 8.9185 2.8961 +O 12.8725 16.8191 9.4419 +H 7.2830 1.1938 5.9244 +O 1.8437 5.1161 18.9347 +H 10.3635 19.1312 5.4181 +O 16.3392 19.4296 12.0073 +H 8.1432 4.5252 13.1190 +O 6.9188 7.5343 2.7544 +H 13.2462 5.5928 16.0359 +O 6.8233 6.8365 15.7969 +H 2.8642 14.2117 9.5986 +O 6.6367 14.1914 1.1356 +H 3.3170 13.4427 7.8613 +O 5.1493 19.1809 2.9318 +H 11.5439 2.2826 1.2964 +O 7.2409 8.7984 9.5741 +H 8.4140 10.5762 3.7404 +O 2.6387 2.5457 13.3117 +H 3.2039 7.5268 2.6729 +O 5.2990 0.3647 18.8069 +H 15.2685 5.0838 1.9153 +O 19.7743 8.7920 19.5302 +H 5.5821 3.2030 18.3257 +O 15.5821 12.4193 8.9766 +H 15.9721 14.7411 11.4243 +O 18.7157 8.0619 4.9246 +H 12.3423 12.3619 0.7544 +40 20.0 20.0 20.0 +frame 145 +O 12.0575 18.5130 12.0903 +H 3.5277 13.8306 3.7390 +O 15.1945 4.6809 4.4619 +H 9.1026 19.9022 3.7556 +O 4.1266 9.1098 5.1377 +H 17.0391 8.8525 6.5613 +O 19.1068 19.7422 1.4272 +H 16.0966 6.8461 8.6516 +O 3.8143 0.0389 13.7530 +H 13.1519 9.0999 10.8173 +O 9.6060 2.7036 1.5403 +H 12.8988 11.6681 18.9882 +O 2.9206 17.8248 14.8046 +H 16.1399 9.0211 3.0453 +O 12.6533 17.0441 9.5215 +H 7.3390 0.7072 5.4371 +O 2.0071 4.9460 18.7585 +H 10.6398 19.4157 5.3752 +O 16.5209 19.1500 12.0212 +H 8.2709 4.7703 13.0567 +O 6.6199 7.3395 2.5488 +H 13.0103 5.7448 15.5397 +O 6.3739 6.3657 15.9361 +H 2.7535 14.4014 9.6014 +O 6.4481 13.8294 0.8998 +H 3.2938 13.7612 7.7584 +O 5.0658 19.2670 2.4486 +H 10.9932 2.5642 1.3630 +O 6.8493 8.6040 10.1017 +H 8.7256 10.5580 3.6420 +O 2.4188 2.3827 13.4578 +H 3.5460 7.8836 2.9689 +O 4.8456 19.5986 18.6968 +H 15.1062 5.2242 2.0505 +O 19.2599 9.0281 19.0587 +H 5.4256 3.3553 18.1490 +O 15.4022 12.5743 8.2682 +H 16.0207 14.4468 11.0219 +O 18.4011 8.3889 4.6899 +H 12.5463 12.3102 0.3620 +40 20.0 20.0 20.0 +frame 146 +O 12.3504 18.7665 11.8587 +H 3.7946 14.4646 4.0142 +O 15.0424 4.6275 4.2120 +H 9.1082 19.9402 3.9709 +O 4.3411 9.0834 5.7542 +H 16.9056 8.2264 6.7846 +O 18.9837 0.0092 0.6180 +H 16.4611 6.8701 8.7053 +O 3.9118 19.8066 14.1227 +H 13.8257 9.2806 10.9541 +O 9.9373 2.4330 1.7006 +H 12.8561 11.6834 19.2289 +O 3.0598 17.8074 14.9906 +H 16.2329 8.9480 2.8031 +O 12.7344 16.7334 9.4438 +H 7.3595 0.4916 5.5768 +O 2.3505 4.8864 18.7901 +H 10.6688 19.0279 5.0604 +O 16.7569 19.1207 12.6619 +H 8.0938 4.3233 13.3809 +O 6.3033 6.9151 2.4214 +H 12.5479 5.7140 15.8639 +O 6.5185 6.2620 16.4907 +H 2.5761 14.4869 9.7593 +O 6.0718 13.7440 0.2314 +H 3.8426 14.2234 8.1723 +O 5.7775 18.9378 2.9844 +H 10.9708 1.8626 1.0911 +O 6.8493 9.0589 10.1571 +H 9.4006 10.4568 3.4696 +O 2.4576 2.8861 13.8788 +H 3.2676 8.3548 3.1050 +O 4.9038 19.5933 18.7464 +H 15.7304 5.3908 2.0052 +O 19.5031 9.3699 19.2761 +H 5.3547 3.4628 18.6721 +O 15.3752 12.0890 8.4881 +H 15.9330 13.9970 11.1944 +O 18.1579 8.3441 4.6848 +H 12.1518 11.9064 0.4462 +40 20.0 20.0 20.0 +frame 147 +O 12.1636 18.6461 12.3636 +H 3.7377 14.2182 4.2413 +O 14.6970 4.2571 4.4339 +H 9.0814 19.8167 4.5415 +O 3.6294 8.9175 5.9391 +H 16.8736 8.3484 6.7880 +O 18.7872 19.4076 0.7366 +H 16.8593 6.6834 8.9748 +O 3.6564 0.0072 14.6267 +H 13.5078 9.7394 11.1325 +O 10.4220 2.6740 1.4462 +H 13.1619 12.0787 19.2275 +O 3.0736 17.7857 15.3752 +H 16.2028 9.3293 2.4605 +O 12.4408 16.7651 10.1854 +H 7.2026 0.7906 5.9042 +O 2.3275 4.6016 18.2952 +H 10.4195 18.9923 5.4497 +O 16.4434 19.0236 12.8062 +H 8.5330 4.5901 14.0234 +O 6.2135 6.6418 1.7204 +H 12.8923 5.5325 16.2721 +O 6.3424 5.9980 16.4629 +H 2.8788 14.7858 9.8035 +O 5.9557 13.4595 0.1911 +H 3.8997 14.7301 7.8834 +O 5.1771 18.6824 2.5807 +H 10.8014 1.6530 0.7826 +O 7.1907 9.2258 10.3367 +H 8.7148 10.5637 3.5874 +O 2.6352 2.9662 13.9758 +H 3.3471 8.2605 3.1789 +O 5.0081 19.2203 18.8292 +H 15.6767 5.2568 1.0846 +O 19.4545 9.0883 19.4969 +H 5.1338 3.9435 18.5839 +O 15.5027 11.8534 8.4075 +H 15.4872 13.6108 11.4619 +O 17.9738 8.3171 4.8896 +H 11.8311 11.4968 0.6187 +40 20.0 20.0 20.0 +frame 148 +O 12.2588 18.7931 12.1989 +H 4.2416 13.5913 3.9536 +O 14.5176 3.6217 4.9056 +H 9.0057 19.5278 4.3308 +O 3.5974 9.3956 6.4399 +H 17.0246 8.1155 6.5015 +O 18.4351 19.4197 0.8416 +H 16.7514 6.8602 8.9775 +O 3.4076 19.7196 14.5565 +H 12.9823 10.2753 10.6834 +O 10.0630 2.8920 1.5113 +H 12.8595 11.7141 19.0840 +O 2.9943 17.6084 15.2600 +H 16.4810 8.9726 2.7212 +O 12.9823 16.7010 9.5067 +H 7.0388 0.9559 5.7160 +O 2.3312 4.7372 18.5703 +H 10.4744 19.2320 5.3914 +O 16.4922 18.8713 12.8237 +H 8.8464 4.6118 14.2713 +O 5.9340 6.8342 1.6291 +H 13.1523 5.6513 16.5714 +O 6.2034 5.7832 16.2857 +H 3.0578 14.3634 9.8470 +O 5.8928 13.1503 0.5168 +H 4.6108 14.3878 7.3499 +O 5.0002 18.8214 2.5514 +H 11.0117 1.4426 1.0473 +O 7.7451 9.0606 10.3451 +H 8.9852 10.6746 3.6388 +O 2.7330 2.9265 14.1437 +H 3.0346 8.2561 2.5814 +O 5.1792 19.3525 18.7193 +H 15.6915 5.6837 0.7694 +O 19.4452 8.7306 19.1086 +H 4.7302 3.6050 18.4864 +O 15.4230 12.0098 8.7534 +H 15.8584 13.3330 11.2508 +O 18.1845 8.2445 5.2363 +H 12.3106 11.4259 0.9349 +40 20.0 20.0 20.0 +frame 149 +O 12.2319 18.9612 12.0815 +H 3.6318 13.3479 3.7631 +O 15.0282 3.7427 5.2766 +H 8.6490 19.1166 5.1100 +O 3.8411 9.9814 6.8107 +H 16.9223 7.8548 6.0654 +O 18.2771 19.5727 1.2679 +H 16.6023 6.6842 9.6957 +O 3.6375 19.4532 14.2458 +H 13.1494 10.0950 10.6097 +O 10.1285 3.0527 1.0544 +H 13.1455 11.4846 19.0471 +O 3.6002 17.5151 15.3088 +H 16.6394 8.9000 3.0038 +O 12.9497 16.2677 9.1336 +H 7.0469 0.7519 6.0854 +O 2.4913 4.5361 18.5823 +H 10.1973 19.1276 5.6035 +O 17.2520 18.9374 13.1006 +H 9.6965 4.6720 14.5952 +O 5.8762 6.6437 1.9440 +H 13.2336 5.5884 15.8746 +O 6.2948 6.0518 15.6789 +H 3.1235 14.1808 10.1810 +O 5.8436 12.8042 0.3356 +H 4.1913 14.4565 7.0323 +O 4.8229 19.1768 2.6714 +H 11.3179 1.9170 0.3905 +O 7.5422 8.9132 10.1746 +H 8.9860 10.9048 3.3331 +O 1.9931 2.5780 13.7062 +H 3.2487 8.2012 2.4600 +O 5.1981 19.6883 18.8958 +H 15.3349 5.7713 0.8209 +O 19.6523 8.6122 19.0733 +H 4.3852 3.4802 18.4124 +O 15.0005 12.0836 8.7845 +H 16.3755 13.4165 11.4934 +O 18.0585 8.6132 4.7855 +H 12.3083 11.9433 0.9197 +40 20.0 20.0 20.0 +frame 150 +O 12.3950 19.5448 11.6484 +H 3.4538 13.2115 3.6651 +O 14.7088 3.3630 5.0060 +H 8.9637 18.9317 5.1963 +O 3.4543 10.1353 7.0433 +H 16.7102 7.8195 5.7427 +O 18.5028 19.3180 0.9547 +H 16.2879 6.4443 9.6242 +O 3.4835 19.7444 14.1935 +H 13.6161 9.9419 10.6740 +O 9.7360 2.9617 0.9143 +H 12.8852 11.8056 18.5882 +O 4.4050 17.4291 14.7561 +H 17.0068 8.1448 2.8972 +O 13.0491 16.0913 8.9549 +H 7.0462 0.6795 5.5773 +O 2.8862 4.3943 18.8120 +H 10.4083 19.2055 5.7835 +O 17.3527 18.9844 12.4127 +H 9.6549 4.7014 14.4998 +O 5.7949 6.4532 2.0831 +H 13.3078 5.5413 15.6480 +O 6.5278 6.1677 15.2939 +H 3.1409 14.1938 10.3708 +O 6.0002 12.8196 0.2182 +H 3.8195 15.0334 7.1555 +O 4.7830 18.7526 2.6714 +H 11.7774 1.9135 0.8614 +O 7.4974 8.9381 9.7551 +H 9.0447 11.0981 3.0077 +O 2.4173 2.7919 14.4048 +H 3.3203 8.1761 2.7190 +O 5.5990 19.5845 18.9414 +H 15.0747 5.7101 0.9336 +O 19.5062 8.7737 19.3196 +H 4.4681 3.3483 18.5462 +O 15.0825 12.3717 8.1949 +H 16.3145 12.9831 12.1707 +O 17.7114 8.4536 4.9625 +H 12.0592 11.7038 1.2324 +40 20.0 20.0 20.0 +frame 151 +O 12.3042 19.6210 11.5531 +H 3.0799 13.1425 3.7528 +O 14.9178 3.1198 4.9366 +H 8.5066 19.2578 5.1890 +O 3.6841 9.8139 6.8027 +H 16.6538 8.1633 5.3327 +O 18.8402 19.1409 0.9831 +H 16.5757 6.1295 9.2273 +O 3.6351 19.0595 14.1073 +H 13.3210 9.7745 10.2406 +O 9.6973 2.5313 0.7967 +H 12.6504 11.7102 17.8933 +O 4.6868 17.4991 14.7199 +H 16.7714 7.9290 2.4223 +O 13.1789 16.0861 8.9047 +H 7.3503 0.7578 6.0807 +O 2.9013 4.1334 18.8720 +H 10.3653 18.9345 5.5899 +O 17.4522 19.2346 12.3035 +H 9.6873 4.7498 14.3562 +O 5.7310 6.5171 2.4749 +H 12.7963 5.6090 15.8792 +O 6.3808 6.1073 14.9678 +H 2.6832 14.2686 10.5059 +O 6.0910 12.8761 0.8368 +H 3.8142 15.5431 6.8499 +O 4.8312 18.5778 2.4539 +H 12.1139 1.6592 0.8773 +O 7.4393 8.7413 9.8435 +H 8.5482 11.2419 3.3031 +O 2.5996 1.9804 14.2530 +H 2.9091 8.6651 3.0619 +O 5.4461 19.2052 19.0699 +H 15.6550 5.8361 0.9956 +O 19.2948 8.5666 18.8413 +H 4.2022 3.0543 18.3928 +O 15.2382 12.0086 7.7478 +H 16.6755 12.5776 11.8568 +O 17.8234 8.2427 5.0262 +H 11.9158 11.1853 1.7684 +40 20.0 20.0 20.0 +frame 152 +O 12.0509 19.7464 11.7667 +H 3.2635 13.0262 4.0739 +O 15.1621 3.4971 4.6968 +H 8.5211 19.5127 5.0865 +O 3.6131 9.5579 6.7109 +H 16.4255 8.0731 5.1237 +O 18.9600 19.6080 1.6255 +H 15.8915 6.1676 9.4510 +O 4.0744 19.0468 14.3516 +H 13.1541 9.7354 10.6494 +O 9.8005 2.7471 0.5868 +H 12.6768 11.6963 18.4584 +O 4.0926 17.6608 14.6482 +H 16.8790 8.4678 1.9715 +O 13.3873 16.0635 8.7661 +H 6.8919 0.5549 5.5615 +O 2.5489 4.2671 18.7507 +H 10.1334 19.1360 5.6096 +O 17.3188 19.4882 12.2925 +H 9.5599 5.0518 14.6171 +O 5.3831 6.4544 2.1636 +H 13.1642 5.2847 15.9942 +O 6.5925 6.5463 15.5583 +H 2.8774 15.0866 10.6724 +O 6.0601 12.8038 0.7962 +H 4.0932 14.9031 6.3280 +O 5.3713 18.3069 2.1091 +H 12.4066 1.8970 0.8677 +O 7.3800 8.7370 9.6734 +H 8.3962 11.1813 3.5274 +O 2.1899 1.9768 14.1778 +H 2.9690 8.5900 2.8901 +O 5.4569 19.5848 19.4348 +H 16.1571 5.3983 1.3144 +O 19.3304 8.2094 18.8829 +H 4.3072 2.5455 18.7028 +O 15.0249 11.9792 6.9651 +H 16.6090 13.0174 12.2750 +O 17.5372 8.1342 4.9516 +H 11.9638 10.9847 1.5511 +40 20.0 20.0 20.0 +frame 153 +O 11.5188 19.3059 12.0564 +H 3.4398 13.3058 4.2432 +O 15.2859 3.3376 4.6696 +H 8.2858 19.1345 4.8216 +O 3.6747 9.2513 6.3649 +H 16.3393 8.3389 5.0582 +O 19.5032 19.3876 1.6577 +H 15.9514 5.8430 9.9397 +O 4.1640 19.3027 14.0939 +H 13.0892 9.8396 10.6610 +O 9.6600 2.4315 0.9147 +H 12.6480 12.0960 18.5452 +O 4.2489 17.6997 14.6763 +H 17.0398 8.4114 2.6692 +O 13.2404 15.7161 8.5438 +H 6.7122 0.3171 5.2403 +O 3.3941 4.2143 18.4388 +H 10.1494 19.3092 6.1190 +O 17.3780 19.4217 12.3193 +H 10.1423 4.9938 15.0711 +O 5.6113 6.8181 2.1126 +H 13.5588 5.1931 15.5177 +O 5.9774 6.8561 15.4444 +H 2.9342 15.2412 10.4246 +O 5.8802 13.2360 1.2665 +H 3.8365 14.4634 6.1481 +O 5.4151 18.6911 1.4322 +H 12.6463 1.9199 0.6600 +O 7.1385 8.7580 9.6493 +H 7.8161 11.2979 2.8490 +O 2.4398 1.8934 14.1342 +H 2.9488 8.5441 2.7487 +O 4.7111 19.8773 19.7731 +H 16.5815 5.3499 1.5116 +O 19.1813 8.3899 19.3114 +H 4.0521 2.5929 19.1693 +O 15.2568 12.6953 6.7546 +H 16.3437 13.2516 12.3602 +O 17.1052 7.7499 4.7257 +H 12.3707 10.8040 1.1230 +40 20.0 20.0 20.0 +frame 154 +O 11.4068 19.4022 12.0854 +H 3.4422 14.2821 4.4560 +O 15.3066 3.7225 4.6400 +H 8.3004 18.6901 4.4638 +O 3.7873 9.6865 6.4710 +H 16.6521 8.4226 5.2728 +O 19.8368 19.3427 1.3889 +H 16.3920 5.1834 10.2551 +O 4.3035 19.3781 14.7652 +H 13.1188 9.4375 10.1273 +O 10.0935 2.7082 0.5572 +H 12.5202 12.3176 18.7439 +O 4.8170 17.5500 14.7941 +H 16.9191 8.3555 2.1529 +O 12.9785 15.3691 8.5575 +H 6.8344 19.8010 4.8415 +O 3.4403 4.3736 18.7840 +H 9.9808 19.6296 6.3414 +O 17.0839 19.9182 13.0269 +H 9.8501 5.3171 14.7653 +O 5.7179 6.7850 2.2205 +H 13.6936 5.4621 15.8506 +O 5.6785 6.5767 15.5091 +H 2.8453 15.2718 10.2059 +O 5.9196 12.5236 1.0519 +H 4.1294 14.3554 6.1215 +O 5.5658 18.6558 1.2328 +H 11.6643 2.2600 0.1962 +O 6.7332 9.2581 9.0059 +H 7.9021 11.1648 2.6834 +O 2.4371 1.9391 14.7886 +H 2.5419 8.8382 2.5696 +O 4.8288 0.3323 19.4353 +H 16.5420 5.3112 1.4697 +O 18.7867 8.1510 19.2653 +H 3.5812 2.7092 19.3751 +O 15.1709 12.3536 7.0467 +H 16.5753 13.4033 12.4570 +O 17.4837 8.0895 4.0994 +H 11.9195 10.7511 1.0433 +40 20.0 20.0 20.0 +frame 155 +O 11.6727 19.7285 12.5941 +H 3.4706 14.2872 4.9148 +O 14.8268 3.6730 4.7408 +H 8.2868 18.2988 4.2102 +O 3.8460 9.8696 5.8714 +H 16.5079 8.4240 5.1380 +O 19.7189 19.7033 1.4757 +H 16.5190 4.7853 10.0293 +O 4.2812 19.1448 14.5959 +H 12.4218 9.1318 9.5233 +O 9.4193 2.6807 0.6957 +H 12.6517 12.2652 18.8682 +O 5.2173 17.0110 14.8463 +H 17.1141 8.4018 1.8900 +O 13.5347 15.5593 8.8411 +H 6.6211 19.5611 4.7013 +O 3.2303 4.5169 18.6927 +H 9.8349 19.7116 5.7369 +O 17.2609 0.2990 12.9462 +H 9.5568 4.7908 15.2697 +O 5.4480 6.8999 1.9283 +H 13.6931 5.3856 15.7557 +O 5.5361 6.2845 15.3055 +H 2.9785 15.0399 10.2022 +O 5.4542 12.4857 0.9285 +H 3.9735 13.8133 6.2760 +O 5.8574 18.3722 1.1066 +H 11.6098 2.0143 0.6205 +O 7.0861 8.5809 9.4666 +H 8.1916 11.1786 2.2375 +O 2.8880 1.9350 14.8933 +H 2.6428 8.8020 2.6219 +O 4.6988 19.9578 19.4833 +H 16.1705 5.7766 1.5387 +O 18.5877 7.9231 19.0557 +H 4.0954 3.1346 18.7855 +O 15.1773 12.9050 6.5759 +H 16.3915 13.3139 11.9668 +O 17.4794 7.9868 4.7023 +H 11.9678 10.5083 1.6587 +40 20.0 20.0 20.0 +frame 156 +O 12.5128 0.0341 12.7239 +H 3.8789 14.2554 4.3975 +O 14.6147 3.9591 5.0602 +H 8.2448 18.2982 3.9931 +O 4.3123 9.7014 6.0748 +H 16.4732 8.7334 4.9771 +O 0.3340 19.7188 1.4788 +H 16.4434 4.5654 10.2193 +O 4.1172 18.9818 14.0963 +H 12.6895 9.1567 9.4171 +O 8.6631 2.9489 0.8257 +H 12.8292 12.7425 18.6076 +O 4.7446 17.2000 14.6707 +H 16.9020 8.7663 2.2141 +O 13.3168 15.5084 8.5313 +H 6.6909 19.3955 5.3861 +O 3.0439 4.6032 18.6537 +H 10.3878 19.6402 5.0931 +O 17.1508 0.1238 13.2006 +H 9.3110 4.9886 14.9979 +O 5.4791 6.7928 1.6238 +H 13.7439 4.7663 15.7220 +O 5.1092 5.9109 15.3254 +H 3.3217 14.7845 10.4877 +O 5.5971 12.4316 1.2728 +H 3.5273 13.9294 6.1897 +O 6.1604 18.2294 0.9547 +H 11.3719 1.8336 0.7206 +O 7.0614 8.4853 9.5857 +H 8.5827 11.4426 1.7430 +O 2.8962 1.5458 14.7795 +H 2.9621 9.0999 2.3256 +O 4.5525 19.9975 19.2100 +H 16.4082 5.3875 1.7933 +O 18.4610 8.0442 18.8557 +H 4.2388 3.0091 18.7893 +O 15.2147 12.4940 6.7054 +H 15.9383 13.6685 12.1187 +O 17.0745 7.9197 4.7242 +H 11.5265 10.4908 1.5250 +40 20.0 20.0 20.0 +frame 157 +O 12.6002 0.1748 12.6730 +H 3.7057 13.9167 4.1510 +O 14.4316 4.2759 5.0777 +H 8.7778 18.1681 4.1151 +O 4.0156 10.2405 6.4112 +H 16.0399 8.6793 5.4178 +O 0.1031 0.1117 1.1042 +H 16.5018 4.8934 10.0766 +O 4.6314 18.8029 14.4427 +H 13.0017 9.4375 9.1639 +O 9.0789 2.6437 0.5147 +H 12.8126 12.9353 18.8739 +O 5.1418 17.4698 14.8538 +H 16.9111 8.8480 1.9464 +O 13.0831 15.4756 9.2829 +H 6.8883 19.8125 5.2418 +O 2.9854 4.4518 18.6158 +H 10.5448 19.6675 5.6796 +O 16.3617 0.3762 13.5393 +H 8.9397 5.4545 15.4498 +O 5.2321 6.7329 1.0862 +H 13.7733 4.7973 15.8937 +O 5.1697 5.9640 14.9652 +H 3.1560 14.5464 10.5780 +O 6.1672 12.4669 1.3180 +H 3.3884 13.6201 6.5070 +O 6.4862 18.3363 0.9375 +H 11.7573 2.4918 0.6031 +O 6.7836 8.4480 9.4671 +H 8.6276 11.7266 1.9582 +O 2.8590 1.1961 14.9949 +H 2.9071 9.0450 1.7684 +O 4.7941 0.3829 19.3503 +H 15.5430 5.3715 1.9630 +O 19.2250 8.4491 18.5457 +H 4.1781 2.8315 18.8720 +O 15.8316 12.6783 7.2681 +H 16.0850 13.8628 12.2438 +O 16.9215 7.9502 4.7494 +H 11.6629 10.1284 1.6662 +40 20.0 20.0 20.0 +frame 158 +O 13.2229 0.4818 12.5665 +H 3.8401 13.8575 3.9299 +O 14.7853 4.3618 4.7186 +H 8.9700 18.3209 4.4724 +O 3.5640 10.1520 6.7148 +H 16.4949 8.6379 4.8006 +O 0.2075 0.1834 0.5887 +H 16.7802 5.1149 10.3570 +O 4.6900 18.9080 14.5422 +H 13.0313 9.3374 9.3574 +O 8.8271 3.0466 0.4713 +H 12.8277 12.6734 18.7757 +O 4.9993 17.3698 14.7430 +H 16.8566 8.4314 1.9203 +O 13.4464 15.4908 8.8989 +H 6.6788 19.2479 5.5755 +O 2.5621 4.0204 18.5250 +H 10.0038 19.4214 5.9336 +O 16.1936 0.4418 14.2197 +H 9.3941 5.2439 15.3627 +O 4.8005 7.1782 1.1545 +H 14.1479 4.5796 16.3523 +O 5.3266 6.2966 15.1197 +H 3.5404 14.6281 10.8132 +O 6.3502 12.4377 1.5385 +H 3.3726 13.3957 6.2602 +O 6.7559 18.6457 0.4139 +H 11.4636 2.8752 0.8287 +O 6.6106 8.6642 8.8956 +H 8.1334 11.7759 1.9794 +O 2.7528 1.3988 14.8415 +H 3.1565 9.1883 1.6747 +O 4.8145 0.6845 19.4481 +H 15.3830 5.7775 2.0774 +O 19.6678 8.4580 18.5778 +H 4.1303 2.5886 18.6343 +O 15.8989 12.6664 7.3940 +H 15.4816 14.0292 12.4097 +O 17.1172 7.7665 4.3991 +H 11.7749 10.3184 1.6885 +40 20.0 20.0 20.0 +frame 159 +O 13.3601 0.6397 12.5498 +H 3.6966 14.1319 4.3020 +O 15.2822 3.9299 4.3735 +H 8.7398 18.1764 4.4534 +O 3.8094 10.3230 6.3402 +H 16.7732 9.0133 4.6889 +O 0.5177 0.2407 0.7353 +H 16.8264 5.4168 10.3956 +O 4.7107 18.5373 14.2875 +H 13.2860 9.2431 9.4642 +O 8.5069 2.6370 0.8801 +H 12.6801 12.4922 18.2921 +O 4.7724 17.6494 15.1223 +H 16.6035 8.3177 1.7976 +O 14.0082 15.7009 9.0359 +H 6.9313 19.4529 5.8409 +O 2.5230 4.1342 18.5176 +H 10.2647 19.9651 5.8301 +O 15.8362 0.2447 13.8559 +H 8.7851 4.5284 15.8401 +O 5.4512 7.1606 0.8378 +H 14.2054 4.8279 16.4929 +O 5.5123 6.5574 15.2916 +H 3.3885 14.3927 10.8765 +O 6.8617 12.6591 1.6124 +H 3.3417 14.0611 6.4110 +O 7.1357 18.5971 19.9613 +H 11.8024 3.1743 0.9697 +O 6.3636 9.1306 8.8060 +H 8.3816 12.2109 1.9788 +O 3.3291 1.4568 14.6861 +H 2.8375 9.4121 1.3661 +O 4.8207 0.7886 19.6588 +H 14.9148 5.9279 2.6292 +O 19.2306 8.5791 18.2505 +H 4.0395 2.3937 18.3628 +O 16.3529 12.7104 7.4564 +H 16.2193 14.4338 11.9551 +O 17.1587 7.2018 4.3405 +H 12.0832 10.2569 1.3888 +40 20.0 20.0 20.0 +frame 160 +O 13.5982 0.6562 12.2320 +H 3.8612 13.9740 4.5322 +O 14.7511 4.3306 4.6926 +H 7.9627 18.0188 3.9742 +O 4.2369 9.8751 6.0169 +H 16.7738 9.1513 4.5399 +O 19.8146 0.5646 0.5995 +H 16.6795 5.7107 10.4267 +O 4.3887 18.5592 13.9800 +H 12.3889 9.0509 9.3406 +O 8.3093 2.8847 0.5230 +H 12.3332 12.7057 18.0777 +O 4.6396 17.4452 15.5800 +H 16.4120 8.5807 1.6247 +O 13.8811 16.4549 8.9682 +H 6.4019 19.3519 5.9738 +O 2.5618 4.1773 18.8585 +H 10.4492 0.0534 5.9194 +O 15.8409 0.1194 13.8430 +H 8.7896 4.6681 15.8346 +O 5.4046 7.0102 1.1507 +H 14.3752 4.5472 16.4948 +O 5.7449 6.7365 15.4753 +H 3.9479 14.2144 10.6566 +O 7.1520 12.4552 2.0047 +H 3.2883 14.4486 6.4239 +O 6.8262 18.1035 0.7763 +H 11.5457 3.5270 0.6307 +O 6.4324 8.9948 8.1969 +H 8.6670 12.5470 1.2968 +O 3.8707 1.5663 14.5577 +H 3.3719 8.9035 1.0706 +O 4.8268 0.5960 19.6526 +H 15.2248 5.8286 2.7849 +O 19.2908 8.4445 18.1969 +H 4.1887 2.4448 18.5971 +O 16.4899 12.8684 7.3105 +H 16.0149 14.2035 12.2875 +O 17.5713 7.1612 4.7222 +H 11.8169 10.1847 1.3377 +40 20.0 20.0 20.0 +frame 161 +O 13.6613 0.9453 11.8888 +H 3.4755 13.8573 4.1424 +O 14.4307 4.6854 4.5912 +H 7.3907 18.5445 3.9475 +O 4.1958 10.1323 5.8570 +H 16.8089 9.3894 4.3142 +O 19.7643 0.5244 1.0277 +H 17.0218 6.3209 10.2796 +O 4.5390 17.9909 13.8684 +H 12.3602 9.1188 9.4422 +O 7.9854 3.1792 0.2469 +H 11.9174 12.7977 18.5524 +O 4.5209 17.2228 15.3390 +H 16.7815 8.5032 1.5258 +O 13.8142 16.8031 9.4927 +H 6.9843 19.2736 5.9602 +O 2.4205 3.8942 18.7483 +H 10.2076 19.9732 6.5462 +O 15.8929 0.7046 13.9319 +H 8.5336 4.4313 15.8049 +O 5.7659 6.8238 0.9764 +H 14.4015 4.0052 16.5517 +O 5.7848 6.5606 14.8666 +H 3.6486 14.0104 10.6810 +O 7.3299 12.4721 2.3002 +H 3.3024 14.4175 6.5311 +O 6.6827 17.9230 0.5717 +H 11.1095 3.7210 0.4890 +O 6.2335 9.2872 7.6020 +H 8.4759 12.1050 1.4395 +O 3.8466 1.8671 14.7028 +H 3.1326 8.7625 1.2214 +O 4.4697 0.3460 19.7417 +H 15.3977 5.4975 2.9894 +O 19.7441 8.4978 18.3257 +H 4.3746 2.2106 18.0999 +O 16.2366 12.4041 7.2803 +H 16.0510 13.9218 11.9444 +O 17.4344 7.1543 4.8760 +H 11.9529 9.7313 1.5755 +40 20.0 20.0 20.0 +frame 162 +O 13.9982 1.2326 11.8689 +H 3.6831 13.7648 4.5076 +O 14.2643 4.7511 5.0046 +H 7.5373 18.5232 3.8194 +O 4.0482 10.1126 5.9751 +H 16.8124 9.1806 3.5336 +O 0.4920 0.1825 0.6349 +H 17.1455 6.3004 10.5967 +O 4.9750 18.4165 14.0835 +H 11.9896 8.9753 9.7455 +O 7.7932 3.1588 0.4880 +H 12.1170 12.9971 18.1938 +O 4.4021 17.5263 14.9284 +H 17.2850 8.3150 1.3526 +O 13.5938 16.7584 9.4275 +H 7.4177 19.3402 5.7901 +O 2.1349 3.7535 18.7477 +H 10.2858 0.1367 6.6803 +O 15.8778 0.8950 13.7358 +H 8.8050 4.2014 15.6293 +O 5.7070 6.4516 1.1744 +H 14.7970 4.2362 16.2090 +O 5.9229 6.2188 15.2823 +H 3.7868 14.2364 10.4893 +O 7.0677 12.4605 2.3447 +H 3.1811 14.2439 6.2785 +O 6.8654 17.7415 0.4091 +H 10.7695 3.8297 19.8244 +O 6.2423 9.6131 7.1757 +H 8.2322 11.7978 1.5560 +O 3.9991 2.5053 14.7920 +H 3.6218 9.0838 1.3958 +O 4.6374 0.6237 19.9316 +H 15.6272 5.6472 3.4034 +O 19.3700 8.5461 18.1165 +H 3.7169 1.9299 18.2272 +O 15.5804 12.0122 7.0482 +H 15.5976 13.4633 12.0231 +O 17.4056 7.5181 4.5934 +H 12.0507 9.5567 1.4847 +40 20.0 20.0 20.0 +frame 163 +O 14.5753 1.7783 11.6073 +H 3.9954 13.9245 3.8320 +O 14.2673 5.1042 4.9942 +H 7.9326 18.3544 3.9646 +O 4.6598 10.1796 5.8545 +H 16.4561 9.3437 3.5478 +O 0.8267 0.0517 0.0516 +H 17.6308 6.0694 10.1072 +O 5.3734 18.1205 14.2592 +H 11.8643 9.0469 9.9470 +O 8.1242 3.1552 0.1519 +H 12.0836 12.6565 18.3015 +O 4.1924 17.4002 15.1377 +H 17.4195 8.3803 1.3819 +O 13.4949 17.1471 9.3139 +H 7.4317 19.4844 5.9971 +O 1.5634 4.5115 18.3816 +H 10.5680 19.7532 6.9764 +O 16.2388 1.1269 14.3948 +H 8.8940 4.3629 15.3002 +O 6.0359 6.9552 0.9411 +H 14.7262 4.4324 15.8649 +O 6.1368 6.3112 15.5240 +H 4.0418 14.4996 10.3808 +O 6.6270 12.7189 2.0199 +H 2.8538 14.0714 6.6550 +O 6.6934 17.8466 0.7425 +H 10.4975 3.7398 19.8448 +O 6.3677 9.4318 7.5565 +H 8.7326 12.0427 1.7457 +O 4.1816 2.1835 14.8641 +H 3.8924 9.3385 1.5590 +O 4.8454 0.3810 0.4623 +H 16.1492 5.4637 3.6414 +O 19.5628 8.4549 18.4411 +H 3.3354 2.0533 17.8087 +O 15.0368 12.0120 6.5781 +H 15.5626 13.0140 11.7671 +O 17.4635 7.3714 4.3988 +H 12.1619 10.1362 1.5430 +40 20.0 20.0 20.0 +frame 164 +O 14.8885 1.4250 11.1576 +H 4.5422 14.4506 3.6369 +O 14.2179 5.2321 4.4784 +H 8.1979 18.3872 4.1338 +O 4.6297 9.6543 5.5906 +H 16.7626 9.4627 3.2018 +O 1.0135 0.2853 0.2077 +H 17.7866 6.8635 10.4922 +O 5.5982 18.5903 13.9799 +H 11.9170 8.7641 10.0661 +O 7.9621 3.7644 19.8204 +H 11.6582 13.2774 18.0123 +O 4.1654 17.6085 15.1936 +H 17.3930 8.6128 1.2606 +O 13.7754 17.1626 9.5989 +H 7.0610 19.0283 5.9386 +O 1.5220 4.4987 18.2703 +H 10.2340 19.9359 7.7196 +O 16.1387 0.8435 14.7431 +H 8.9753 4.1882 15.4671 +O 5.8625 7.1231 0.9424 +H 14.6054 4.1128 16.3900 +O 5.9605 6.4468 15.7078 +H 3.7313 14.6046 10.4693 +O 6.3071 13.0324 2.0364 +H 3.0419 13.8431 6.3503 +O 6.5463 17.7720 0.9677 +H 10.3848 3.8751 19.6448 +O 6.2036 9.5136 7.8587 +H 8.9456 12.0852 1.7053 +O 4.4451 1.9888 15.2453 +H 3.7643 9.8832 1.0476 +O 5.0165 0.6506 0.5066 +H 16.2319 5.7102 3.9404 +O 19.5856 8.3782 18.2205 +H 3.6149 2.4750 18.5874 +O 14.8380 11.9203 6.6948 +H 15.5891 13.1349 12.1932 +O 17.1304 7.2450 4.1959 +H 12.5321 9.3831 1.2311 +40 20.0 20.0 20.0 +frame 165 +O 14.9724 1.3507 11.4181 +H 4.5695 14.5030 3.6998 +O 13.9495 4.9731 4.3704 +H 8.4039 18.6320 3.4401 +O 4.4619 9.7434 5.2151 +H 17.2197 9.2357 3.7432 +O 1.0217 0.3591 0.1061 +H 18.0525 6.8392 10.4128 +O 5.2380 18.5172 14.4871 +H 11.9984 8.8180 9.8271 +O 7.7210 3.9251 0.0009 +H 11.7712 13.6397 18.3160 +O 4.5342 17.3246 15.1432 +H 16.9999 8.4463 1.2309 +O 13.4120 17.7029 9.4213 +H 7.2061 19.1605 5.9446 +O 1.7644 4.6927 18.3275 +H 10.5872 0.0678 7.9046 +O 16.0842 0.7585 14.3939 +H 8.8784 4.5197 15.5673 +O 5.7431 7.1076 1.2942 +H 14.7245 4.1481 16.6300 +O 6.2025 6.2188 15.6357 +H 4.2859 14.5222 10.5907 +O 5.5106 13.0238 2.0766 +H 3.2119 14.4423 6.3470 +O 6.4572 17.4459 0.8444 +H 10.1154 3.9219 19.8621 +O 5.9229 9.1326 7.7192 +H 9.3978 11.9333 1.5413 +O 4.6203 1.9352 15.7437 +H 3.3229 9.9412 1.2001 +O 5.2216 19.9854 0.4764 +H 16.0824 5.2954 3.8320 +O 19.6671 8.2008 18.9707 +H 2.7748 2.7345 18.2374 +O 14.4592 12.1761 6.6664 +H 15.9709 12.9145 12.0221 +O 17.1174 6.9129 4.0794 +H 12.6738 9.7909 1.5575 +40 20.0 20.0 20.0 +frame 166 +O 15.5572 1.5706 11.6936 +H 4.0881 14.6594 3.8843 +O 13.5289 4.8412 4.8113 +H 7.8748 18.3686 3.2868 +O 4.4074 10.5055 5.4284 +H 17.3302 9.3550 3.6527 +O 0.0825 0.8572 0.3961 +H 17.6440 6.8621 10.6595 +O 5.1802 18.7308 15.0244 +H 12.0986 8.7549 9.5627 +O 7.2409 4.0120 0.1519 +H 12.2155 13.6990 18.3364 +O 5.1730 17.7452 14.7980 +H 17.1337 8.4483 1.4323 +O 13.3389 17.3173 9.5297 +H 7.5682 18.7979 6.3272 +O 1.5012 4.8360 18.4890 +H 10.2414 19.8669 7.8205 +O 15.8372 0.6979 14.6250 +H 8.5136 4.9101 15.0951 +O 5.7355 7.5329 1.4012 +H 14.6413 4.5740 16.6433 +O 6.5458 6.4868 15.5611 +H 4.0554 14.1510 10.7555 +O 5.1854 13.3888 2.0573 +H 3.1011 14.3469 6.5649 +O 6.4433 18.1007 0.9227 +H 10.1237 3.7482 19.7817 +O 6.0188 9.4768 7.8119 +H 9.1696 11.3611 1.7011 +O 4.7633 2.3132 16.1560 +H 3.4734 9.9340 1.0336 +O 5.0215 0.4018 19.8099 +H 15.9764 5.2783 3.6673 +O 19.5904 8.2531 18.9012 +H 2.6254 2.7637 17.7871 +O 14.4211 12.3960 6.5961 +H 15.8701 12.9741 11.7277 +O 16.7243 6.5365 4.2541 +H 12.5788 9.9075 2.1660 +40 20.0 20.0 20.0 +frame 167 +O 15.4174 1.6660 11.9540 +H 3.7675 14.9436 4.1866 +O 13.4604 4.7929 4.8817 +H 7.3594 17.8966 3.1606 +O 4.0302 10.4489 5.5324 +H 17.4737 9.4148 3.6980 +O 19.7418 0.8845 0.7174 +H 17.9967 6.8873 10.5083 +O 5.4500 18.5156 14.9378 +H 12.0026 8.8035 9.0934 +O 7.4608 3.9557 0.4387 +H 12.0289 13.2852 18.4062 +O 5.6439 17.8672 14.1850 +H 16.8644 8.5767 1.6865 +O 12.8463 17.0923 9.2927 +H 7.3018 19.5857 5.8568 +O 1.6289 4.9978 18.5473 +H 10.3382 19.7816 7.8881 +O 15.9552 0.4350 14.5431 +H 7.9089 4.8379 15.0986 +O 5.8173 7.4119 1.8069 +H 14.0807 4.3720 16.5849 +O 6.8368 6.5263 15.3091 +H 4.6522 14.5259 10.3561 +O 5.0990 13.5646 1.8646 +H 2.9223 14.2571 6.8267 +O 6.4156 18.2649 1.0515 +H 10.3342 4.3567 19.8258 +O 6.1104 9.4160 7.9568 +H 9.3282 11.5562 1.7869 +O 4.2777 2.5143 16.4048 +H 3.6768 9.8017 0.9733 +O 5.4178 0.1599 19.9279 +H 15.8821 5.9628 3.5704 +O 19.6092 7.9745 19.6984 +H 2.1315 2.6154 17.4901 +O 14.2224 12.4348 6.3298 +H 15.8051 12.5519 11.3103 +O 16.4363 7.1319 4.2197 +H 12.2648 10.5057 2.2029 +40 20.0 20.0 20.0 +frame 168 +O 15.6938 2.0017 12.0154 +H 3.4024 15.3253 4.4859 +O 13.4180 5.1384 5.1892 +H 7.5381 17.6188 3.3654 +O 4.2251 10.1122 5.4614 +H 17.3353 9.7541 3.5811 +O 19.5921 1.0654 0.7130 +H 18.3644 6.8159 10.7888 +O 6.4436 18.9789 15.4290 +H 11.4934 8.5306 9.0394 +O 7.2078 4.2058 0.5839 +H 11.8700 12.9024 18.4526 +O 5.9273 17.2935 13.7923 +H 16.6453 8.4866 1.4605 +O 12.1767 17.1391 8.9215 +H 7.2415 19.2469 6.2156 +O 1.2879 5.0776 18.9866 +H 10.3731 0.4813 7.6193 +O 16.0010 0.2423 14.5763 +H 7.9692 4.7943 15.2451 +O 5.3543 7.4874 1.6215 +H 14.3318 4.4320 16.6733 +O 7.1659 6.5755 14.9998 +H 4.6521 14.4146 10.4140 +O 4.9170 13.6579 1.9811 +H 2.3867 14.3896 6.8269 +O 6.5114 18.3806 0.2476 +H 10.4816 4.4079 19.2171 +O 6.1045 9.4313 8.1549 +H 9.9117 11.6273 1.6497 +O 4.7053 3.2460 16.4997 +H 3.6363 9.2695 0.7707 +O 6.1199 19.7936 19.7334 +H 16.4314 6.3197 3.7088 +O 19.4118 7.8993 19.4756 +H 1.3321 2.3044 17.5495 +O 14.2126 12.0770 6.2387 +H 15.8966 12.2888 11.2068 +O 16.1874 7.0836 4.9733 +H 12.5812 10.3486 2.6864 +40 20.0 20.0 20.0 +frame 169 +O 15.6788 1.9754 11.9393 +H 3.4130 15.2363 4.7425 +O 13.3379 4.7079 4.8108 +H 7.5083 17.6094 3.5357 +O 4.4380 9.9655 5.4750 +H 17.2593 9.7040 3.5657 +O 19.7508 1.0416 0.6113 +H 18.7380 6.8026 10.8947 +O 6.5510 19.0476 15.4433 +H 11.6630 8.2495 9.3493 +O 7.3687 4.5257 0.6433 +H 11.8675 12.9607 18.4240 +O 6.2975 17.5648 13.8105 +H 16.2355 8.0761 1.7291 +O 11.8686 17.0837 8.7032 +H 7.7318 18.5642 6.0613 +O 1.6026 4.9905 19.0882 +H 10.4559 0.4907 7.4786 +O 15.8521 0.3936 14.7664 +H 7.7528 5.1287 15.3653 +O 5.9059 7.5464 1.6734 +H 14.0315 4.5583 16.6871 +O 7.0713 6.7883 15.0054 +H 5.4684 14.7487 10.6634 +O 4.9272 13.4109 1.9881 +H 2.2992 14.0527 6.9980 +O 6.5573 18.2022 0.4303 +H 10.3911 4.6579 19.0165 +O 6.4722 8.8671 8.2002 +H 9.9976 11.6142 1.6867 +O 4.9678 2.9247 16.5932 +H 3.8191 8.9313 0.4790 +O 6.4559 0.2477 0.0507 +H 16.9097 5.9606 3.4492 +O 19.3211 8.3117 19.4314 +H 0.9683 2.4292 17.8987 +O 14.0153 12.2602 6.6367 +H 16.0476 12.1219 11.6756 +O 16.3312 7.3032 4.8495 +H 12.6620 9.8910 2.9194 +40 20.0 20.0 20.0 +frame 170 +O 15.8512 2.0584 11.4512 +H 2.9174 15.0229 5.3186 +O 13.0906 4.6969 5.1298 +H 7.0287 18.0665 3.3290 +O 4.7576 10.0202 5.3177 +H 17.3371 9.6889 3.6952 +O 19.5638 1.5528 0.3571 +H 18.5536 6.5563 10.5355 +O 6.5070 18.9436 15.3307 +H 11.1869 8.6706 9.4391 +O 7.7379 4.5561 0.2349 +H 12.2325 13.2455 18.4255 +O 6.3591 17.4235 13.9662 +H 16.2486 7.4801 1.9724 +O 11.9084 16.8080 9.0412 +H 7.7574 18.6697 6.1449 +O 2.3196 5.0176 19.1109 +H 10.5514 0.4511 7.4118 +O 15.8302 0.5475 15.1335 +H 8.0180 5.1182 14.9611 +O 5.7840 7.7094 1.5580 +H 14.3324 4.6317 16.4858 +O 7.3548 6.1388 15.3664 +H 5.2604 14.7997 10.3726 +O 4.6616 13.2042 2.1693 +H 2.1803 14.0212 7.4642 +O 6.2602 18.4017 0.5241 +H 10.3725 4.6101 19.3324 +O 6.1692 8.6390 7.8285 +H 10.3254 11.5165 1.8416 +O 5.4685 2.7164 16.7093 +H 3.6056 9.2075 0.3288 +O 6.7460 0.4020 0.2870 +H 17.0699 5.8171 3.4485 +O 19.3794 8.4072 19.3773 +H 0.9057 2.3179 17.5204 +O 13.7471 12.5689 6.9002 +H 15.6502 11.9713 11.6088 +O 15.7320 8.1071 4.6948 +H 12.7759 10.1256 2.9112 +40 20.0 20.0 20.0 +frame 171 +O 15.3962 1.8676 11.3527 +H 2.7861 14.8197 5.1346 +O 12.9311 4.6198 5.4569 +H 6.6734 17.7837 3.6840 +O 4.7377 9.7821 6.2282 +H 17.3011 9.8821 4.2403 +O 19.3852 1.7857 1.0653 +H 18.6877 6.4770 10.6361 +O 6.2905 18.7521 15.1807 +H 11.6792 8.7246 9.4744 +O 7.7024 3.6594 0.1380 +H 12.1820 13.3980 18.2608 +O 6.6472 17.0449 14.3856 +H 15.6581 7.0230 1.9438 +O 11.6988 16.5946 8.5448 +H 7.3141 18.7257 6.5277 +O 2.7312 4.9656 19.1940 +H 10.2790 0.3164 7.6252 +O 16.0806 0.3643 15.1519 +H 7.6871 4.8508 14.9164 +O 5.5744 7.4469 1.6844 +H 14.6147 4.6504 15.7483 +O 7.8314 6.3127 16.0217 +H 5.2486 14.6246 10.3515 +O 5.1370 13.0500 2.0404 +H 2.0198 13.9851 7.5556 +O 6.3851 18.5309 1.2824 +H 10.7398 4.7635 19.4191 +O 6.1946 8.5727 8.4470 +H 9.9319 11.6151 1.5234 +O 5.2319 3.1967 16.7311 +H 3.7181 8.5882 0.1981 +O 6.2850 0.8375 0.3223 +H 17.2552 5.7208 3.8604 +O 19.2357 8.0760 19.3765 +H 1.1597 2.7985 17.6981 +O 13.6967 12.2262 6.7027 +H 15.6477 11.5825 11.4572 +O 15.5883 7.8807 4.2855 +H 12.8490 10.2096 2.5896 +40 20.0 20.0 20.0 +frame 172 +O 15.3616 1.8265 11.1396 +H 2.9670 14.2198 5.8372 +O 12.8457 4.5874 5.7344 +H 6.4009 17.6386 3.3630 +O 4.7930 9.3913 6.0086 +H 17.4998 9.3576 4.0071 +O 19.3428 1.6343 0.6957 +H 19.3502 6.1300 10.3961 +O 5.9894 18.6128 15.4648 +H 11.4502 8.2723 10.2237 +O 8.1323 3.8569 19.9286 +H 12.3893 13.2600 18.4301 +O 6.6931 16.7878 14.4365 +H 15.3593 7.3945 1.9311 +O 11.6823 16.4328 8.7705 +H 7.1257 18.5318 6.7210 +O 2.5255 5.0264 19.4540 +H 10.4972 19.9417 7.8104 +O 16.0313 0.4760 15.2704 +H 7.4374 4.3930 14.9720 +O 6.0992 7.4757 1.3115 +H 14.9326 4.9709 15.5727 +O 7.9787 6.3023 16.2400 +H 5.1548 14.2778 10.6743 +O 4.4671 13.3704 2.3198 +H 1.5951 14.1157 7.7955 +O 6.3471 18.5294 1.0321 +H 10.2318 3.9748 19.8571 +O 5.3216 8.8271 7.8776 +H 10.4703 11.5795 1.3997 +O 5.6215 3.2255 16.6317 +H 3.9573 8.6389 0.1487 +O 6.3524 0.8480 0.5031 +H 17.5214 6.0704 3.4681 +O 18.9320 8.2347 19.2755 +H 1.3650 2.4560 17.2217 +O 13.6778 12.0070 7.2492 +H 15.2303 11.8360 11.5819 +O 15.5215 7.3975 4.7517 +H 12.9217 10.0198 2.9994 +40 20.0 20.0 20.0 +frame 173 +O 15.4369 2.0588 10.4604 +H 2.8866 14.1427 5.8085 +O 12.9105 4.6441 5.5696 +H 6.1393 17.5911 2.8165 +O 5.3297 9.5148 6.5763 +H 18.4048 8.9764 4.4184 +O 18.9315 1.5960 0.7137 +H 19.8784 5.3567 10.4221 +O 6.3494 18.4977 15.5681 +H 11.3650 8.8752 10.4737 +O 8.1246 3.9377 19.8488 +H 12.4635 12.9051 18.0211 +O 6.6162 16.9967 14.6053 +H 15.0674 6.9806 2.0940 +O 11.9166 16.3427 8.4911 +H 7.6694 18.7589 6.9522 +O 2.4837 5.0434 19.1051 +H 10.1080 0.2465 8.0583 +O 16.4652 0.2967 15.3678 +H 7.5277 4.2209 15.1863 +O 5.9828 7.3074 1.7768 +H 14.8503 5.3717 15.5907 +O 8.2057 5.9300 16.3474 +H 4.9175 14.3667 10.8212 +O 4.5370 13.8563 2.6074 +H 1.4738 14.1912 7.8500 +O 6.9684 18.6451 1.2361 +H 10.4549 4.0044 0.2150 +O 5.2286 9.0462 7.3254 +H 10.8095 11.9757 1.4956 +O 5.7305 2.9075 16.4941 +H 4.3678 8.9823 0.5405 +O 6.5760 0.5848 0.2706 +H 17.3845 5.8226 3.5099 +O 18.6664 8.1290 19.6431 +H 1.2923 2.3972 17.2981 +O 13.5298 12.5827 6.8582 +H 14.9105 11.8441 11.3385 +O 15.3882 7.4456 4.7509 +H 12.7996 9.6014 3.6350 +40 20.0 20.0 20.0 +frame 174 +O 14.9700 2.3001 10.0929 +H 2.6408 14.0298 5.7275 +O 12.8120 4.9156 4.7581 +H 6.4091 17.4377 3.3711 +O 5.0847 9.3696 7.1501 +H 18.3568 9.1469 4.4647 +O 19.3141 1.8901 1.2120 +H 19.7170 5.2429 10.7785 +O 6.2515 18.6500 15.2711 +H 11.3250 8.9453 10.6947 +O 7.9394 3.6772 19.9468 +H 12.3359 13.1561 18.4191 +O 6.8433 17.1228 14.6428 +H 15.1977 7.2239 1.8666 +O 12.4259 16.4475 8.5106 +H 7.8899 18.4578 6.2810 +O 2.3660 5.2523 19.3273 +H 10.7119 19.6739 8.1897 +O 16.3863 0.4610 14.9209 +H 7.6411 3.9112 15.1308 +O 5.6761 6.9433 1.4299 +H 15.1673 5.3590 15.3161 +O 7.7263 6.3766 16.7292 +H 5.2937 14.8403 11.1025 +O 4.4308 13.8196 2.5674 +H 1.9304 14.1998 8.0211 +O 6.9829 18.5036 1.0300 +H 10.4081 4.3267 0.3769 +O 4.7597 9.1637 7.1314 +H 10.1082 11.5876 2.0104 +O 5.7171 3.7597 16.0578 +H 4.8116 8.9478 0.1781 +O 7.0213 0.7087 0.5288 +H 17.8533 5.2160 3.6685 +O 18.4947 8.6343 19.4510 +H 1.4611 2.4766 17.0258 +O 13.8726 11.7411 6.8224 +H 15.0596 11.8563 11.1140 +O 15.1879 7.1897 4.5760 +H 13.1317 9.9653 4.2944 +40 20.0 20.0 20.0 +frame 175 +O 14.8107 2.1037 10.1525 +H 2.8062 14.8701 5.6815 +O 12.8391 5.0652 4.3261 +H 6.1456 17.3693 3.2427 +O 4.4753 9.6616 7.2509 +H 19.0302 9.3053 4.6175 +O 19.2571 2.2394 1.0632 +H 19.5677 4.7932 10.9498 +O 6.2764 19.1742 15.5903 +H 11.0235 9.0514 10.5827 +O 7.9715 3.7076 19.8351 +H 12.2827 12.9173 18.3429 +O 6.6211 16.8905 14.9759 +H 15.1996 7.1503 2.1302 +O 12.3013 16.5171 8.6274 +H 8.2949 18.2509 6.5357 +O 2.2849 5.5575 19.6912 +H 10.8873 19.5743 8.0797 +O 16.4494 0.3113 14.6306 +H 7.9389 4.0774 15.4981 +O 5.5852 6.5358 1.3562 +H 15.0042 4.7928 15.7116 +O 8.0139 6.7137 16.2629 +H 5.3264 14.6503 10.7834 +O 4.0482 14.1330 2.9734 +H 1.9158 14.8329 7.7319 +O 6.8289 18.3652 1.1619 +H 10.6926 4.5297 0.6183 +O 4.9934 8.8550 6.6825 +H 10.3736 11.5021 1.7561 +O 6.0236 3.8417 16.5779 +H 4.6059 8.4805 19.7856 +O 6.8789 0.8072 0.4087 +H 18.2428 5.1693 3.5120 +O 18.3534 9.0890 19.3259 +H 1.1684 2.3902 17.4498 +O 14.0769 11.7131 6.7933 +H 14.8212 11.2009 10.5964 +O 15.2522 6.9583 4.5087 +H 12.8285 10.1512 4.1154 +40 20.0 20.0 20.0 +frame 176 +O 14.7120 2.3186 10.2958 +H 2.9238 14.6441 5.7164 +O 13.0655 4.8265 3.7615 +H 5.9322 17.4800 3.1168 +O 4.2306 9.6912 7.3795 +H 19.1674 9.6892 4.8896 +O 19.1206 2.9250 1.3256 +H 19.3508 4.4285 11.0126 +O 6.1992 19.6658 15.8310 +H 10.5208 9.2769 10.7422 +O 8.0598 3.0777 19.5755 +H 12.7002 12.7785 18.6675 +O 6.8651 16.9517 15.1302 +H 15.2385 7.4205 2.7228 +O 12.0715 16.2661 8.4796 +H 8.4323 18.3883 7.1751 +O 2.5145 5.6096 19.5492 +H 10.4394 19.5257 8.2248 +O 16.0027 19.8869 14.1216 +H 7.9516 3.9807 15.5264 +O 5.5204 6.1377 1.0707 +H 15.1116 5.0775 15.3430 +O 8.0607 6.6947 16.2816 +H 5.4723 14.5198 10.4833 +O 3.9409 14.1658 3.4740 +H 1.7661 14.6937 7.8170 +O 6.7304 18.9390 1.2393 +H 10.6648 4.2927 0.9054 +O 5.2093 8.6613 6.8838 +H 10.3004 11.3007 1.7369 +O 6.0801 3.5826 16.3875 +H 4.9217 8.8382 0.1632 +O 7.0876 1.1675 0.4419 +H 18.3379 5.2240 3.5646 +O 18.6396 9.0709 19.7303 +H 1.4255 2.6037 17.6047 +O 13.7483 12.4833 7.1142 +H 14.9301 10.7483 10.8122 +O 15.3817 7.0124 4.7693 +H 12.7227 9.8710 3.5658 +40 20.0 20.0 20.0 +frame 177 +O 15.0925 2.2757 10.1862 +H 3.5449 14.7964 5.0676 +O 12.9584 4.6408 3.5952 +H 5.7489 17.2409 2.5237 +O 4.2651 9.7064 7.7997 +H 18.9708 9.9196 4.8372 +O 18.7832 2.4713 1.3380 +H 19.5506 4.6167 11.1568 +O 5.8796 0.0292 16.0213 +H 11.0006 8.9545 10.6338 +O 8.3695 3.3290 19.9543 +H 12.5670 12.4106 18.8109 +O 6.9684 16.5010 15.5391 +H 15.0008 7.3545 2.8003 +O 12.3100 16.6529 8.3063 +H 8.0974 18.5518 7.1300 +O 2.5341 4.9335 19.5371 +H 10.5586 19.8176 8.2990 +O 15.8402 0.0578 14.6504 +H 8.2182 3.5607 15.1680 +O 5.4182 6.0586 0.7365 +H 15.3714 5.0886 15.1168 +O 8.3121 6.8054 16.2313 +H 5.2224 14.7509 10.4984 +O 4.1447 14.2844 3.0173 +H 2.0494 15.0655 7.2567 +O 6.5548 19.2146 1.8883 +H 10.5419 3.8768 0.7910 +O 4.8316 8.7337 6.6238 +H 10.6351 11.5072 1.9197 +O 6.3425 3.4585 16.8489 +H 4.8409 8.2127 0.3359 +O 7.2109 0.9481 19.6238 +H 18.5809 4.7976 3.5057 +O 19.0137 8.8326 19.3814 +H 2.3471 2.6813 17.4499 +O 13.5954 12.2722 7.1254 +H 14.6953 10.8925 10.0359 +O 15.9618 6.7013 4.7573 +H 12.2557 10.0735 4.0134 +40 20.0 20.0 20.0 +frame 178 +O 14.8688 2.0668 10.4200 +H 3.8223 14.6920 4.9609 +O 12.9492 5.0318 4.2583 +H 5.3435 16.8654 2.2076 +O 3.8615 10.0319 8.4834 +H 19.0817 9.6969 4.8010 +O 19.1135 2.6436 1.4533 +H 19.7918 4.6510 10.6574 +O 5.7078 19.6618 15.6316 +H 10.4827 8.8278 10.1731 +O 8.4766 3.0126 0.1320 +H 12.9764 12.1402 19.2419 +O 7.0176 16.1860 15.2462 +H 14.9317 7.5575 3.2653 +O 12.4182 17.0484 7.6440 +H 7.9623 18.4876 6.7531 +O 3.0429 5.4347 19.5980 +H 10.3066 0.0865 8.0395 +O 16.1457 0.3142 14.5912 +H 8.2651 3.3414 14.7423 +O 5.4184 6.0059 19.8870 +H 15.4693 5.0073 15.1542 +O 8.6539 6.7557 16.5298 +H 5.4568 14.3525 10.7651 +O 3.6085 14.4166 3.2072 +H 2.2055 15.4346 6.7281 +O 6.5856 19.5964 1.9557 +H 10.6381 3.7676 0.7248 +O 4.3890 8.5367 6.3105 +H 10.6083 11.7169 1.3861 +O 6.8248 3.7446 17.0147 +H 4.4256 8.8236 0.1275 +O 7.7481 1.1098 18.8596 +H 18.5019 4.7448 3.4765 +O 18.9116 9.0419 19.5277 +H 2.2137 3.1441 17.4788 +O 13.3817 11.7890 7.2655 +H 14.6078 10.8509 10.3687 +O 16.0397 6.2000 4.4045 +H 12.1401 10.2151 4.4504 +40 20.0 20.0 20.0 +frame 179 +O 15.0852 1.8293 10.6574 +H 3.7179 14.7099 5.1627 +O 13.2103 5.5035 3.9215 +H 5.7695 16.4384 1.8843 +O 4.0423 10.1435 8.8654 +H 19.2595 9.7099 4.2924 +O 18.6036 2.3833 1.5049 +H 19.3974 4.5796 10.1965 +O 5.5010 19.9447 15.5027 +H 10.7484 8.4284 10.1475 +O 8.8266 2.4829 19.5908 +H 13.5554 12.1558 18.6961 +O 6.9956 16.2871 15.5524 +H 15.0997 7.6072 3.2695 +O 12.4477 16.3053 7.6369 +H 7.9416 18.5833 6.6565 +O 2.8795 5.7955 19.1579 +H 10.3542 19.6290 8.0664 +O 16.0398 0.1508 14.8861 +H 7.7196 2.7324 14.8267 +O 5.9214 6.5656 0.4409 +H 14.7118 5.3329 15.1266 +O 9.1595 7.3979 16.4046 +H 5.5606 14.3868 10.3270 +O 3.4465 13.8219 3.0041 +H 2.1918 15.3513 6.5124 +O 6.7846 19.8246 1.9898 +H 10.5090 4.1286 0.1913 +O 4.1752 8.6039 6.0213 +H 10.1857 12.0345 1.6159 +O 6.4653 4.0894 16.4812 +H 4.5404 9.0987 0.0110 +O 7.5504 0.9494 18.6533 +H 18.1650 4.9451 3.8754 +O 18.4396 9.0995 19.4473 +H 2.1984 3.1755 17.6711 +O 13.3643 11.4697 6.2962 +H 14.5735 10.8989 10.3067 +O 15.7955 6.5095 4.1425 +H 12.4403 10.0095 4.0926 +40 20.0 20.0 20.0 +frame 180 +O 15.3224 1.5809 10.7911 +H 3.5249 14.9738 5.2032 +O 13.1351 5.3445 4.0896 +H 5.0113 16.0990 2.1765 +O 4.5667 10.1009 9.1130 +H 19.0866 9.8875 4.3765 +O 18.4000 1.6504 1.6307 +H 19.1363 4.5473 10.0812 +O 5.2942 19.9631 15.3952 +H 10.7654 8.4268 10.3136 +O 9.2147 2.5718 19.7666 +H 13.8228 12.6145 18.8225 +O 6.8378 16.3887 15.7335 +H 15.8012 7.9403 3.1053 +O 12.2683 16.7276 7.4995 +H 8.2093 18.5146 6.8376 +O 2.6959 6.1257 18.8647 +H 10.1561 19.6098 8.6797 +O 16.0954 19.9193 14.5607 +H 7.2573 2.5582 15.0119 +O 5.8589 6.6583 0.7165 +H 15.1315 5.4098 15.2143 +O 8.8074 7.8511 16.0175 +H 5.9315 14.2244 10.2925 +O 3.1749 13.8501 3.6588 +H 2.1229 15.6531 6.4213 +O 6.3822 19.5380 2.2281 +H 9.8723 4.3518 19.9609 +O 4.1481 8.8429 6.0298 +H 9.9530 12.1963 1.1589 +O 6.1702 3.6117 16.6071 +H 4.7633 9.6997 0.2396 +O 7.0935 1.2287 18.3803 +H 18.1614 5.2877 3.5222 +O 18.1681 9.3657 19.6541 +H 2.6261 3.2240 17.9198 +O 13.1451 11.0563 6.6282 +H 14.3648 10.8026 10.3957 +O 15.9859 6.4573 4.1714 +H 13.0132 9.6627 3.9915 +40 20.0 20.0 20.0 +frame 181 +O 15.7205 1.4885 10.7202 +H 3.5363 14.8394 5.2107 +O 13.0013 5.3313 3.9810 +H 5.0079 16.3145 2.2158 +O 4.6417 9.4558 9.5076 +H 19.2021 10.0752 4.8143 +O 18.2695 1.3601 1.4615 +H 18.9897 4.4674 9.9661 +O 5.4188 0.5084 15.1232 +H 10.9219 8.4389 10.2962 +O 9.0104 2.8026 19.5801 +H 13.8342 12.4099 19.0384 +O 6.9238 16.3955 15.4268 +H 15.2237 8.1397 2.8647 +O 12.1748 17.0565 7.2775 +H 8.6058 18.2205 6.7026 +O 2.9369 6.5944 18.4436 +H 9.8356 19.6434 8.3496 +O 15.8332 0.3461 14.1629 +H 7.2936 2.3112 15.4867 +O 6.0094 6.4877 0.6176 +H 15.0167 5.3865 15.5312 +O 8.3831 8.3621 16.2836 +H 6.0009 13.9641 10.3394 +O 3.3971 13.9206 3.2723 +H 2.0172 15.8546 6.1472 +O 6.5334 19.5663 2.1545 +H 9.6192 4.2017 0.2371 +O 3.9453 9.0020 6.1579 +H 10.4448 12.1943 1.0839 +O 5.8884 3.8824 16.3481 +H 4.8873 9.6293 0.1128 +O 7.3686 1.0881 18.3898 +H 18.2234 5.6351 2.8451 +O 18.0180 8.8653 19.7396 +H 3.0243 2.6477 17.8105 +O 13.0268 10.4287 5.7432 +H 14.7048 10.5947 10.1632 +O 16.0496 6.2453 4.4157 +H 13.0605 9.1925 4.2752 +40 20.0 20.0 20.0 +frame 182 +O 15.5153 1.3875 10.3756 +H 3.6428 14.9166 5.2951 +O 12.8002 5.3436 4.0417 +H 4.8220 16.4529 2.4480 +O 4.6171 9.3673 9.2899 +H 19.1545 10.4809 4.2390 +O 18.2529 1.8643 1.0586 +H 18.5947 4.3769 9.8743 +O 5.8391 0.6444 15.0964 +H 11.5286 8.2460 9.8306 +O 9.0871 2.7426 19.7954 +H 13.9174 11.6394 19.3686 +O 6.8366 16.0046 15.2771 +H 15.0001 8.2536 2.2258 +O 12.2486 17.1964 6.5658 +H 8.0548 18.4366 6.6962 +O 2.7748 7.2215 18.0436 +H 9.7100 19.3808 8.7245 +O 15.6018 0.4947 13.4733 +H 6.7616 2.3167 15.0571 +O 6.4429 6.6138 1.0455 +H 15.1914 4.8416 15.6961 +O 8.4921 8.4177 16.7278 +H 6.1433 14.2319 10.6703 +O 3.6566 14.2493 2.5365 +H 1.9900 15.9359 6.1271 +O 6.5044 19.7979 2.3238 +H 9.8081 4.3850 0.2728 +O 3.8363 9.2279 6.3504 +H 10.2150 12.2631 0.9477 +O 5.8916 3.4494 16.0907 +H 5.4329 9.4769 0.0255 +O 7.1603 1.4322 18.1318 +H 18.2457 5.5903 2.7558 +O 17.3746 8.4894 0.2824 +H 3.2042 2.9069 18.3082 +O 12.5742 10.3266 5.5205 +H 14.4203 10.4322 10.1765 +O 16.1920 6.2489 3.9495 +H 13.1679 9.0933 4.4487 +40 20.0 20.0 20.0 +frame 183 +O 15.0383 1.0631 9.9701 +H 3.9308 14.8111 5.3470 +O 12.7665 5.3765 4.3174 +H 4.6564 16.1573 2.6028 +O 4.6650 9.3856 9.1301 +H 18.7665 11.1265 4.4365 +O 18.4812 1.6862 0.7447 +H 18.4714 4.1284 10.1125 +O 5.9973 0.5917 14.9469 +H 11.2831 8.1233 10.0077 +O 9.1281 2.9197 19.7529 +H 14.4701 11.7451 19.6073 +O 7.1032 15.7428 15.3509 +H 14.8671 8.1826 1.9833 +O 11.8473 16.6118 6.3795 +H 8.1250 18.6460 6.3979 +O 3.3096 7.3361 18.3959 +H 10.5023 19.8859 8.9037 +O 15.4737 0.9273 13.4100 +H 6.6186 2.0159 14.3610 +O 6.8603 6.8233 1.1218 +H 15.2944 4.4986 15.2620 +O 7.9051 8.3626 16.7115 +H 6.0284 14.5442 10.9101 +O 3.5972 14.4825 2.3178 +H 2.3328 15.4083 5.7853 +O 6.4673 0.3461 2.3938 +H 10.0822 4.8188 0.3808 +O 3.7139 9.5475 6.3983 +H 10.6324 12.1755 1.1859 +O 6.1846 3.2153 16.3617 +H 5.1495 9.6144 0.1622 +O 6.9029 1.5650 17.8632 +H 18.5629 5.4066 3.2498 +O 17.8728 8.3783 0.1128 +H 3.1715 2.6805 18.0866 +O 12.7842 10.4498 5.4858 +H 14.6972 10.1683 10.1460 +O 16.0849 6.5036 4.2211 +H 12.8449 8.8785 4.4707 +40 20.0 20.0 20.0 +frame 184 +O 14.9733 1.2314 10.3197 +H 4.0394 14.5604 5.0576 +O 12.3864 5.5418 4.3712 +H 4.6137 16.1651 2.2484 +O 4.5351 9.8372 9.3747 +H 18.3067 11.0562 4.2906 +O 18.6898 1.9782 0.3573 +H 18.6592 3.2901 10.0984 +O 6.4249 0.7515 15.3518 +H 11.3850 7.9481 9.8350 +O 8.2438 3.0101 19.0388 +H 14.7285 11.8948 19.4979 +O 7.1517 15.7278 15.3541 +H 15.2612 8.1014 1.8648 +O 11.5715 16.2557 6.2166 +H 8.7264 19.1551 6.4498 +O 3.2192 7.5746 18.4252 +H 10.4110 19.7451 8.9620 +O 15.4097 0.6485 13.1913 +H 6.4578 1.9420 14.5256 +O 6.7352 7.5655 1.3442 +H 15.2909 4.8043 15.4342 +O 8.5204 8.1024 16.5988 +H 5.6233 14.6420 10.8115 +O 3.8416 14.2137 2.4308 +H 2.7409 15.2663 5.6757 +O 6.5437 19.4701 2.2225 +H 10.3164 4.9764 0.3916 +O 3.5793 9.6331 5.9027 +H 10.6139 12.2363 1.1665 +O 6.0068 3.0504 16.4623 +H 4.7382 9.2418 0.1593 +O 7.0126 1.6623 18.0382 +H 18.8774 5.9030 3.5828 +O 18.3151 8.0500 0.3215 +H 3.3136 2.5007 18.3962 +O 12.7777 10.6945 5.3362 +H 14.4893 10.5539 9.7962 +O 15.6706 6.7808 4.7899 +H 12.7202 9.0095 4.0774 +40 20.0 20.0 20.0 +frame 185 +O 14.9836 1.1003 10.3293 +H 4.3829 14.5638 5.1418 +O 12.1464 5.9582 3.9252 +H 4.8236 16.6761 2.2155 +O 4.5319 10.2648 9.5095 +H 18.0230 10.8923 4.2978 +O 18.1194 2.1095 0.5473 +H 19.1045 3.5528 10.0758 +O 5.7426 0.4962 15.4269 +H 11.2704 8.0391 10.0791 +O 7.9116 3.2874 18.6117 +H 14.8393 11.7406 19.0419 +O 6.7741 15.7105 15.5071 +H 15.4171 8.7052 2.1806 +O 11.6461 16.5747 6.3525 +H 8.2106 18.9469 6.0150 +O 3.0836 7.3134 18.2407 +H 10.4138 19.6375 9.1274 +O 15.7200 0.4602 13.4919 +H 6.3792 1.3881 14.2998 +O 6.9855 7.4766 0.8755 +H 15.3872 4.8476 15.6448 +O 7.9805 7.8360 16.4380 +H 5.6209 14.5256 10.8634 +O 4.0936 14.2326 2.3440 +H 2.5143 15.1271 5.4682 +O 6.6181 19.1569 2.0072 +H 9.8630 5.1180 0.2897 +O 3.4220 9.5545 5.4676 +H 10.4758 12.7073 1.2530 +O 6.1918 2.1938 16.4342 +H 5.2439 9.1313 0.2408 +O 7.0801 2.0680 18.1036 +H 18.2917 5.4965 3.6146 +O 18.5606 8.1797 0.4370 +H 3.1484 2.2096 17.9704 +O 12.5559 10.4766 4.9720 +H 14.4092 10.5079 9.5745 +O 15.6135 6.8184 5.0055 +H 12.3504 9.0007 3.9851 +40 20.0 20.0 20.0 +frame 186 +O 14.9435 1.1525 9.9471 +H 4.5018 14.8901 5.4188 +O 11.8293 5.8226 4.2303 +H 5.2977 16.5032 2.3729 +O 4.7948 9.6589 9.5913 +H 17.7160 11.0954 4.1530 +O 17.7788 2.2601 0.3041 +H 19.1532 3.2147 9.9443 +O 5.4947 0.7772 15.8017 +H 10.8968 8.2595 10.3405 +O 7.7940 3.3761 19.2109 +H 15.4927 11.8237 19.1487 +O 6.5723 15.6367 15.9640 +H 15.9795 8.2877 2.5695 +O 11.5829 16.7788 6.6929 +H 8.2456 18.6157 5.7232 +O 3.0491 7.5923 17.5556 +H 10.0632 19.5331 9.3147 +O 16.0397 0.3019 13.5737 +H 6.3903 0.9666 14.6175 +O 6.4023 7.7069 1.1861 +H 15.6976 4.9291 15.5708 +O 7.8656 8.1789 16.1870 +H 5.3849 14.3869 11.0654 +O 4.4897 13.9457 2.1076 +H 2.4805 14.7925 5.8069 +O 6.2332 19.2574 1.9486 +H 9.8469 5.3283 0.5707 +O 3.4165 9.9008 5.2307 +H 10.6906 12.3363 1.6718 +O 6.3445 2.6917 16.7007 +H 5.1215 9.1177 0.2510 +O 6.6050 1.9409 17.8792 +H 18.3046 6.0617 3.7945 +O 18.4415 8.4459 0.1384 +H 3.1668 1.8996 17.7198 +O 12.8123 10.6341 4.7359 +H 14.2745 10.1469 9.0966 +O 15.2761 6.3432 4.6567 +H 12.4452 8.9568 3.8148 +40 20.0 20.0 20.0 +frame 187 +O 15.0510 0.8469 9.9692 +H 3.8204 14.7923 5.5534 +O 12.0943 5.7916 4.2685 +H 5.2238 16.3942 2.4972 +O 4.3625 9.1279 9.5869 +H 17.4830 10.6664 3.9917 +O 17.9592 1.9594 0.1492 +H 19.1204 3.4954 10.6086 +O 5.2329 0.5824 15.7727 +H 10.9086 8.4599 10.2584 +O 7.9476 3.5575 19.1312 +H 15.6890 12.0981 19.5834 +O 6.1824 15.8677 15.9920 +H 15.7862 8.7238 2.9926 +O 11.6686 16.6250 6.9686 +H 8.1228 18.7091 5.9425 +O 3.5037 8.1814 17.3739 +H 10.2002 0.5088 9.4695 +O 15.7262 0.3601 13.8704 +H 6.0423 0.8922 14.1499 +O 5.9720 7.0839 1.1876 +H 15.5266 4.7038 15.6100 +O 8.3508 8.0913 16.7163 +H 5.5908 14.0175 10.9555 +O 4.5787 13.5378 1.7189 +H 3.0004 14.6582 5.8190 +O 6.3068 19.8203 2.1211 +H 10.3340 5.1890 0.7266 +O 3.2309 10.0456 5.7156 +H 10.5868 12.1879 1.3567 +O 6.2258 2.5782 16.9159 +H 5.1016 9.1626 19.8765 +O 7.2247 1.4528 18.2832 +H 18.1160 5.8713 3.4556 +O 17.9044 8.5190 0.0705 +H 2.4025 1.7610 17.6405 +O 12.5292 11.1848 5.2259 +H 14.1465 10.7059 9.2682 +O 15.8283 6.1839 4.5328 +H 12.5924 8.7336 3.9602 +40 20.0 20.0 20.0 +frame 188 +O 14.9866 0.7716 9.7647 +H 4.2536 14.8754 5.4574 +O 12.3473 5.7128 4.4458 +H 5.2742 16.5503 2.4780 +O 3.7455 9.3902 10.3356 +H 17.2249 10.8709 3.6438 +O 18.1813 1.6935 0.5117 +H 18.9931 3.4011 10.2491 +O 5.0811 0.7615 16.1037 +H 11.0644 8.0154 9.9058 +O 7.9978 3.5359 19.1266 +H 15.5960 12.3440 19.1455 +O 6.2348 15.6221 16.1640 +H 15.3155 9.0810 3.5110 +O 11.8030 16.5772 7.2770 +H 8.3181 18.3937 5.8007 +O 2.9407 7.9104 17.4361 +H 10.1639 0.4962 9.7099 +O 15.5713 19.7125 14.0063 +H 6.0017 0.7111 14.5027 +O 6.0113 6.9193 1.1869 +H 15.4949 5.2038 15.9242 +O 8.4275 8.5245 16.6927 +H 5.8486 13.8278 11.1183 +O 4.1495 13.2973 1.7638 +H 3.3416 14.3403 5.9934 +O 6.5344 19.8278 1.6602 +H 10.3698 5.1034 0.6420 +O 3.8165 9.7993 5.9043 +H 10.7743 12.5401 1.4083 +O 6.7209 2.7321 16.5825 +H 4.6260 9.6694 19.3370 +O 7.1534 1.4616 17.9103 +H 17.8999 6.7270 3.7248 +O 17.4815 9.1634 19.7540 +H 2.5886 1.8417 17.8623 +O 12.2773 11.3532 5.2374 +H 14.1527 10.9949 9.3324 +O 15.9244 6.0744 4.6032 +H 12.4468 8.5501 3.9423 +40 20.0 20.0 20.0 +frame 189 +O 14.4322 0.5621 10.0666 +H 3.9019 14.6441 4.8104 +O 12.5061 5.6678 4.3419 +H 5.1824 16.5953 2.5184 +O 4.0270 9.1442 10.3036 +H 17.0282 11.1341 3.5649 +O 18.2162 2.0905 19.6499 +H 18.9753 2.9935 10.2315 +O 4.7975 0.7072 16.1134 +H 11.1302 8.5059 9.4718 +O 7.6608 3.5446 19.3486 +H 15.2298 12.4611 19.2333 +O 6.1221 15.3004 16.1235 +H 15.5916 8.9154 3.6847 +O 12.0677 16.6378 7.2088 +H 7.8016 18.7341 6.1695 +O 3.2948 8.9981 17.4640 +H 10.5156 0.5326 9.4843 +O 15.7395 0.1385 14.3292 +H 5.4569 0.7862 14.4846 +O 5.8865 6.4857 0.8184 +H 15.0091 4.6910 15.7439 +O 8.9401 8.7689 16.9819 +H 5.5774 13.9442 11.4958 +O 4.4853 13.1376 2.0292 +H 3.3057 14.8017 6.3231 +O 7.0638 19.8637 1.4617 +H 10.5976 5.3560 1.0381 +O 3.7932 9.8709 5.4991 +H 11.1363 12.4941 1.1511 +O 7.2086 3.4335 16.0653 +H 4.8329 9.5057 19.1241 +O 7.1085 1.2876 18.4250 +H 18.2651 6.9084 3.8588 +O 17.9412 9.3293 19.9350 +H 2.7947 1.8070 17.7057 +O 12.3350 11.3108 5.2460 +H 14.4637 10.9862 9.3108 +O 15.9479 5.9935 4.5870 +H 12.5439 8.4122 3.5382 +40 20.0 20.0 20.0 +frame 190 +O 14.5523 0.2529 9.8442 +H 4.1676 14.7496 4.4395 +O 13.1747 5.9440 4.1040 +H 5.7682 16.4149 2.9929 +O 3.6763 8.8995 9.9169 +H 17.2879 11.1573 3.6712 +O 18.6264 1.9753 19.4729 +H 19.2171 2.9592 10.3101 +O 4.3128 0.7637 16.0576 +H 11.1620 8.7056 9.1261 +O 7.2849 3.6826 19.7354 +H 15.1037 12.4996 19.7330 +O 6.6434 15.3283 16.5943 +H 15.8593 8.6870 3.6134 +O 11.8930 16.8579 7.4528 +H 7.6494 19.2368 5.7620 +O 2.8904 9.0235 17.4032 +H 11.1004 0.4246 9.0825 +O 15.4606 0.2031 14.6731 +H 5.5810 0.7649 14.2191 +O 6.2197 6.1609 1.1455 +H 15.1225 4.6937 15.9113 +O 8.6057 7.9907 16.9010 +H 5.3990 13.5476 11.0687 +O 4.6681 13.3118 1.9244 +H 3.3737 14.8202 6.1866 +O 7.1743 19.7910 0.9785 +H 10.4426 5.5756 0.6619 +O 3.8815 9.7998 5.0983 +H 10.9510 12.8935 0.8957 +O 6.5738 3.8500 16.0726 +H 5.5368 9.7762 18.8985 +O 7.1935 1.3245 18.3449 +H 17.9060 6.2226 3.9603 +O 18.5417 9.0570 19.7277 +H 2.8786 2.2041 17.6737 +O 12.2703 11.2030 5.2525 +H 14.1673 10.5554 9.9827 +O 15.9934 5.8404 4.5746 +H 11.9538 8.5145 3.6234 +40 20.0 20.0 20.0 +frame 191 +O 14.2076 0.3803 9.5189 +H 3.8546 14.3829 4.8219 +O 14.0959 6.2103 4.6458 +H 6.0641 16.0670 3.3819 +O 3.6814 9.1074 9.6987 +H 17.3123 11.3000 3.3787 +O 18.6742 2.1153 18.5400 +H 18.7449 3.4902 10.8117 +O 4.5890 0.7253 15.9685 +H 10.8731 8.7731 9.1253 +O 7.6250 3.6746 19.7524 +H 14.9616 12.9664 19.8665 +O 5.8884 15.3723 16.0221 +H 15.8291 8.4209 3.5368 +O 12.1297 16.6210 7.6264 +H 7.6306 19.0925 5.9852 +O 2.5017 8.6434 17.5098 +H 10.8148 0.4648 9.7980 +O 15.4188 0.5006 15.1110 +H 5.7675 1.2082 14.7512 +O 6.0505 5.9849 0.8349 +H 14.8971 4.3527 16.5212 +O 8.8381 8.3823 17.1467 +H 5.0050 13.9739 11.3944 +O 4.5019 13.0148 1.5431 +H 3.4791 15.1898 6.2686 +O 7.1639 0.1821 0.8207 +H 10.3304 5.8476 0.4976 +O 3.8729 10.0498 5.2276 +H 11.1389 12.6660 0.5560 +O 6.4163 4.2897 16.2457 +H 5.3010 9.9847 19.1556 +O 7.2402 1.6437 18.7535 +H 17.7957 6.1917 4.1296 +O 18.5348 9.5197 19.2468 +H 3.2607 1.6948 17.6305 +O 12.5648 11.2345 5.1668 +H 13.9114 10.5181 10.5196 +O 16.1592 5.4197 4.5572 +H 11.5581 7.8617 2.9816 +40 20.0 20.0 20.0 +frame 192 +O 14.5980 0.2322 9.4453 +H 3.8633 14.7042 4.3801 +O 14.3856 6.6648 4.6875 +H 6.1737 15.9889 3.4225 +O 3.4605 9.0810 9.8334 +H 17.3134 11.3585 3.7366 +O 18.4389 2.0968 18.5572 +H 18.5620 3.3356 10.7725 +O 4.7517 0.5953 15.7351 +H 10.4542 8.2352 9.1477 +O 7.4010 3.5944 19.6750 +H 14.8952 13.0838 0.2872 +O 6.3294 15.5349 15.4581 +H 15.8824 8.6615 3.8004 +O 11.7022 17.0925 7.4776 +H 7.6270 18.9585 6.0911 +O 2.1793 8.6453 18.1517 +H 10.4386 0.7562 9.7947 +O 15.0869 0.2713 15.0713 +H 6.0238 1.1827 14.8136 +O 6.3606 5.9939 0.5501 +H 15.0789 4.5101 16.3401 +O 8.7542 8.7727 16.8696 +H 4.4849 14.3029 11.5709 +O 4.7471 12.6996 1.7949 +H 3.3390 15.4398 5.8672 +O 7.2199 19.7481 0.7637 +H 10.3347 5.7062 0.5917 +O 3.8254 10.3136 5.2375 +H 11.0294 13.2189 0.3949 +O 6.1919 4.4142 16.6782 +H 5.4152 10.6998 19.2881 +O 7.2531 1.0353 18.8133 +H 17.8531 6.5648 3.9706 +O 18.3177 9.7432 19.4877 +H 3.3571 1.9081 18.0689 +O 12.4080 11.3911 4.9917 +H 13.9052 10.5160 10.5639 +O 16.3259 5.0575 4.5545 +H 11.9096 8.1208 3.4900 +40 20.0 20.0 20.0 +frame 193 +O 15.2017 0.2880 9.6627 +H 3.9193 14.4219 4.3354 +O 14.5997 7.2512 4.8376 +H 6.3334 15.1178 2.8767 +O 3.7900 9.2409 9.3755 +H 17.6597 11.8260 3.4903 +O 18.3907 2.6008 18.3425 +H 18.2009 2.9978 10.3375 +O 4.4006 0.4307 16.4138 +H 11.0781 8.4600 9.2031 +O 7.2889 3.5945 19.7472 +H 15.1021 12.9957 0.7317 +O 6.3154 15.3615 14.9257 +H 15.7723 8.9630 3.6216 +O 11.5152 16.8424 7.6793 +H 7.2139 19.3253 6.0812 +O 1.8874 8.2058 18.2093 +H 10.1944 0.4767 10.0361 +O 14.7094 0.1052 15.1851 +H 5.6528 1.2744 14.7737 +O 6.2414 5.8444 19.9773 +H 15.3990 5.0527 16.0927 +O 8.6474 8.6928 17.0370 +H 4.5232 13.9303 12.2485 +O 4.7567 12.6914 1.6311 +H 3.2349 15.6353 6.4595 +O 7.5197 19.8189 0.7719 +H 10.3758 5.9081 0.8637 +O 4.0633 10.2232 5.3166 +H 11.0780 13.3048 0.3082 +O 6.3294 4.6084 17.3304 +H 5.3720 10.3628 19.0221 +O 7.4750 0.9526 18.9524 +H 18.1495 6.2193 4.0738 +O 19.2574 9.7456 19.8080 +H 3.0423 2.0352 17.8574 +O 12.3206 11.1924 4.9413 +H 14.0902 10.9705 10.7105 +O 16.4934 5.4600 4.5107 +H 12.0493 7.8420 3.2715 +40 20.0 20.0 20.0 +frame 194 +O 15.0405 0.7227 9.8052 +H 4.1996 14.3981 4.7624 +O 14.4685 7.3941 5.1435 +H 6.6882 15.2619 2.9032 +O 3.6839 9.2877 9.1104 +H 17.4258 11.9002 3.0493 +O 18.4095 2.5488 18.1963 +H 17.9048 2.9328 10.5879 +O 4.5036 0.8079 16.2128 +H 11.5003 8.7812 9.4163 +O 7.4359 3.6868 19.9863 +H 15.7192 12.7587 0.8239 +O 6.4212 15.6821 15.3596 +H 15.8944 8.8777 3.9385 +O 12.1250 17.1242 7.9309 +H 6.9530 19.4572 6.0240 +O 1.9294 8.4783 18.5548 +H 10.2146 0.0691 10.2399 +O 14.7010 0.1694 15.5233 +H 5.5294 1.4248 14.7423 +O 6.0702 5.8570 0.0054 +H 15.4757 4.5748 16.5762 +O 8.6166 8.5141 16.7762 +H 4.2672 13.8439 12.4623 +O 5.0895 12.9046 1.4538 +H 2.8863 15.5771 6.7715 +O 6.8824 19.7373 0.7888 +H 10.2297 5.6405 1.1379 +O 4.1901 10.2811 5.6229 +H 11.0607 13.2533 0.7412 +O 6.3297 4.8596 17.1559 +H 5.0608 10.4063 18.6955 +O 7.5324 1.1120 18.9775 +H 18.2570 6.1312 4.4914 +O 19.5911 9.9099 19.8819 +H 3.1530 2.3515 17.3451 +O 12.4333 11.5917 5.5116 +H 14.0059 11.4026 10.6264 +O 16.8434 5.7793 4.5158 +H 12.1960 7.7587 3.0122 +40 20.0 20.0 20.0 +frame 195 +O 14.7843 0.8600 9.8663 +H 4.5037 14.4447 4.5114 +O 14.0792 7.2076 5.0610 +H 6.6422 15.3085 2.8670 +O 3.8270 9.5826 9.0467 +H 17.6340 12.0676 2.6093 +O 18.6678 2.5272 17.6592 +H 17.9961 2.6019 10.8376 +O 4.4900 0.7884 16.1812 +H 11.4224 8.8869 9.7711 +O 7.2323 3.4811 0.1177 +H 15.4012 12.6929 1.5365 +O 6.6452 15.8487 15.1600 +H 15.8881 9.3440 3.6473 +O 12.4597 16.7533 7.7976 +H 7.3240 19.7101 5.7242 +O 1.7773 8.6098 18.8932 +H 9.8628 0.0115 10.3263 +O 15.2608 0.1914 15.7120 +H 5.4726 1.3425 14.6087 +O 6.0501 6.0222 0.5597 +H 15.1003 5.1713 16.7350 +O 8.9308 8.5148 16.4538 +H 3.9841 13.7549 12.7630 +O 5.3415 13.2612 1.2880 +H 2.8913 15.2413 6.7473 +O 7.2984 0.1448 0.6391 +H 10.5984 5.6287 0.8959 +O 4.1701 10.6975 5.5156 +H 11.1962 13.0200 1.3015 +O 6.1762 5.1426 17.1950 +H 5.1740 10.7751 18.7156 +O 7.5477 1.0385 18.9823 +H 18.7130 5.7943 4.5147 +O 19.8024 9.5937 19.9431 +H 3.0044 1.9886 16.6878 +O 12.2918 11.7106 6.2343 +H 14.0065 11.2086 10.4243 +O 16.6397 5.8427 4.8459 +H 12.1169 7.6480 2.1957 +40 20.0 20.0 20.0 +frame 196 +O 14.3543 0.9960 10.1363 +H 4.7740 14.3608 4.8512 +O 14.0049 7.0903 4.8728 +H 6.5427 15.5487 3.0592 +O 4.2807 9.3781 8.7821 +H 17.9125 12.1624 2.4515 +O 18.6518 2.2365 17.5023 +H 17.9492 2.5270 10.4502 +O 4.5447 0.9784 15.7290 +H 10.8988 8.5941 9.9935 +O 6.8693 3.6207 0.1994 +H 15.5625 12.3315 1.7945 +O 6.6555 15.7905 15.4656 +H 15.8222 8.9444 3.1511 +O 12.4730 17.3647 7.7964 +H 7.2118 0.0129 5.7691 +O 1.2928 8.4710 19.0377 +H 9.5347 19.6659 10.3728 +O 15.2421 0.4122 15.8273 +H 5.1401 0.8773 14.7931 +O 6.0410 5.8224 0.4199 +H 14.9250 5.1482 17.2721 +O 8.7771 9.0891 16.9314 +H 4.1948 13.2524 12.7934 +O 5.9483 12.7537 0.9987 +H 3.0652 15.5356 6.5061 +O 7.3313 0.2950 0.7770 +H 10.7618 5.2548 0.7828 +O 3.4431 10.5401 5.5031 +H 11.0098 12.7865 1.8120 +O 6.6069 5.5154 16.8560 +H 5.5980 10.8081 18.3708 +O 7.7773 1.2416 18.7851 +H 18.4462 5.5806 4.8805 +O 19.7701 9.6474 0.0022 +H 2.6670 2.4912 17.5303 +O 12.7247 11.2991 6.2909 +H 14.0817 11.3685 11.3149 +O 16.0902 5.5946 4.7449 +H 11.6117 7.9440 1.9890 +40 20.0 20.0 20.0 +frame 197 +O 14.6652 0.9336 10.5107 +H 5.2751 14.3439 4.7339 +O 14.1917 6.9019 4.9220 +H 6.3841 15.4683 2.6409 +O 4.0988 9.8329 8.9835 +H 17.8546 12.0071 2.1240 +O 18.5003 2.2238 17.6524 +H 18.3765 2.4191 10.8658 +O 4.5529 1.7241 15.4101 +H 10.7483 8.6776 10.2543 +O 6.7973 3.0699 0.2496 +H 15.7837 12.0435 1.9900 +O 6.3691 15.7081 15.3311 +H 16.2307 9.1704 3.3897 +O 12.4744 17.0186 7.4235 +H 6.7917 19.9517 5.7453 +O 1.3359 8.5132 19.3121 +H 9.4594 0.2025 10.0035 +O 15.3846 0.6916 16.2981 +H 5.4832 1.0636 14.3396 +O 5.5537 5.5390 0.4176 +H 15.4864 5.3436 17.0802 +O 8.9828 8.8990 16.2831 +H 3.9360 13.1579 12.9818 +O 5.4323 13.1535 0.9434 +H 2.9615 15.5807 7.1014 +O 7.0346 0.5690 1.1664 +H 11.0205 5.3864 0.7478 +O 3.3960 10.5997 5.7553 +H 10.8196 12.2765 1.6658 +O 6.2627 5.4890 16.5623 +H 5.3446 10.6870 18.0688 +O 8.2773 1.7246 18.9794 +H 17.6591 5.3983 5.3443 +O 19.3806 9.9146 19.9845 +H 2.5618 2.5075 17.5035 +O 12.6930 11.6879 6.0358 +H 13.9231 11.0620 11.5872 +O 15.8060 5.0014 5.0879 +H 11.2230 8.1396 2.5806 +40 20.0 20.0 20.0 +frame 198 +O 15.1130 0.6299 10.7361 +H 4.7955 13.8889 5.3842 +O 14.0339 6.5444 4.5373 +H 6.4219 15.5134 3.1032 +O 4.6338 9.7596 9.3647 +H 17.8942 11.8285 2.0488 +O 18.5640 2.1022 17.9976 +H 18.2379 2.4322 10.8456 +O 4.9630 1.5612 15.0204 +H 10.5871 8.1681 10.3747 +O 6.7258 2.4154 1.0658 +H 16.1012 12.0463 2.5466 +O 7.2371 15.5733 15.0947 +H 16.4853 8.8336 3.4589 +O 12.3092 16.6201 7.1693 +H 6.4647 19.6654 6.0776 +O 1.7523 8.8715 19.6878 +H 9.5321 0.3892 9.6443 +O 15.3157 0.7283 15.9315 +H 5.2983 1.0874 14.3916 +O 5.3719 5.5439 0.1227 +H 15.5313 5.3578 17.4475 +O 8.2964 8.6812 16.3635 +H 3.6519 13.1304 13.1281 +O 6.0683 13.0104 1.0374 +H 3.2967 15.4582 6.9606 +O 7.4161 0.4072 1.0538 +H 10.9372 4.9984 0.7823 +O 3.3899 10.9583 5.8209 +H 10.6582 12.9067 1.3933 +O 5.7872 5.4900 16.0181 +H 5.3744 10.7688 18.1339 +O 8.4123 1.8871 19.2902 +H 18.1083 5.2573 5.4182 +O 19.8103 9.9739 19.7467 +H 2.6492 2.7878 17.3621 +O 13.1197 11.5192 6.1966 +H 13.9018 10.8230 11.5688 +O 16.0179 5.0097 4.6812 +H 11.3653 8.4928 3.2336 +40 20.0 20.0 20.0 +frame 199 +O 15.0943 1.0342 10.6542 +H 4.7377 13.7740 5.2356 +O 14.2344 6.9261 4.8742 +H 5.9817 15.4596 2.6963 +O 4.6508 9.5135 9.2679 +H 18.2137 11.7805 2.0198 +O 18.2066 1.9132 17.9939 +H 17.8106 2.0957 10.7992 +O 5.0607 1.4871 15.5840 +H 11.0816 8.0781 10.4104 +O 6.2941 2.7918 1.3002 +H 16.5151 11.8955 2.3747 +O 6.5748 15.3608 14.8502 +H 16.8525 8.9382 3.4151 +O 11.9584 16.4283 7.3569 +H 6.9400 19.2931 6.2310 +O 1.7256 8.9769 19.2775 +H 9.6778 0.1147 9.9050 +O 15.6592 0.9403 16.1719 +H 5.4819 1.0887 14.7053 +O 5.2451 5.8165 0.3319 +H 15.6532 5.0579 16.6260 +O 7.7259 8.9551 16.6688 +H 3.5570 13.5136 13.0997 +O 5.8194 12.6840 0.9294 +H 3.5524 15.2144 7.1226 +O 7.7947 0.6683 0.8526 +H 10.8835 4.9268 0.7777 +O 3.4227 10.5137 5.5031 +H 10.5682 13.0195 1.0769 +O 5.8028 5.7784 15.8198 +H 5.3155 10.7825 18.1948 +O 7.9754 1.7089 19.2465 +H 18.0485 5.3902 5.3894 +O 19.5740 10.0779 0.2686 +H 2.7892 3.1611 17.7562 +O 13.0046 11.9333 6.4224 +H 14.3802 11.1908 11.9723 +O 16.1462 4.9381 4.9202 +H 11.1466 8.4702 3.5465 +40 20.0 20.0 20.0 +frame 200 +O 14.8226 1.0203 10.2449 +H 4.7055 13.6641 4.6945 +O 14.1715 6.4976 5.0682 +H 5.7815 15.6949 2.2773 +O 4.7641 9.2963 9.3952 +H 18.6959 12.0926 2.2487 +O 18.3807 1.4859 17.9324 +H 17.6141 2.0536 10.5503 +O 4.8236 1.5156 16.0384 +H 11.0869 7.8425 10.0958 +O 6.4391 2.6608 1.1848 +H 16.3391 11.8517 2.6978 +O 6.9773 15.5707 14.8058 +H 16.5845 8.6002 2.9332 +O 11.8557 16.2361 7.5219 +H 7.1857 19.1630 6.8584 +O 2.1939 8.7242 19.3971 +H 9.8253 0.0281 9.7161 +O 16.0248 1.0169 16.4530 +H 5.3339 0.7068 14.9303 +O 4.8879 5.5049 0.2025 +H 16.3732 4.8606 16.5273 +O 7.6856 9.2824 16.6706 +H 3.3313 13.6090 13.3902 +O 6.3475 12.5595 0.6825 +H 3.5185 15.4899 7.2441 +O 7.9052 0.1588 1.4073 +H 11.2961 4.3059 1.0635 +O 2.9586 10.7265 5.3135 +H 10.8127 12.7506 1.3386 +O 6.1108 5.9150 15.9907 +H 5.0336 11.2586 17.8321 +O 7.9118 1.6462 18.8684 +H 18.6085 5.6823 4.8125 +O 19.9678 10.5335 0.4574 +H 2.4286 2.4393 17.8736 +O 12.5197 12.3384 6.6381 +H 13.6906 11.4286 12.1546 +O 16.2541 4.8962 4.8847 +H 11.2213 8.9937 2.8394 +40 20.0 20.0 20.0 +frame 201 +O 15.1363 1.3717 10.4867 +H 4.7729 13.6095 5.0408 +O 14.4071 6.3585 5.4766 +H 6.0358 15.8140 2.3925 +O 4.6859 9.5179 9.7422 +H 18.4495 12.1367 2.8746 +O 18.6380 1.4464 17.9485 +H 17.2078 2.0497 10.1187 +O 4.4285 1.2112 15.9264 +H 11.3270 7.3551 10.2192 +O 6.3221 3.4806 1.4037 +H 16.9883 11.6689 2.6595 +O 6.7861 15.1599 14.7414 +H 16.4249 8.3960 3.3581 +O 11.8315 16.5529 7.3845 +H 7.0150 19.0955 6.9717 +O 2.4068 8.4517 19.1476 +H 9.2887 0.2517 9.0018 +O 15.5894 0.5602 16.7922 +H 5.6064 0.7944 15.0075 +O 4.6957 5.7087 0.2438 +H 16.1628 4.8627 16.8976 +O 7.4980 9.1452 16.8983 +H 3.1738 13.4980 13.3494 +O 6.2282 12.9474 0.8709 +H 3.3013 15.5202 7.3147 +O 7.2967 0.1924 1.7946 +H 11.3831 4.2223 1.2989 +O 3.2007 10.8792 4.7839 +H 11.4787 12.5186 1.3784 +O 5.8970 6.0933 15.7412 +H 5.4296 11.0129 18.1257 +O 7.9234 1.5155 18.8577 +H 18.5300 5.8030 5.0233 +O 0.1764 10.5108 0.3398 +H 2.3482 2.8501 18.1194 +O 13.0252 12.3697 5.8433 +H 13.9021 11.3765 12.1345 +O 16.3060 5.0906 4.7911 +H 11.3349 8.8836 3.1206 +40 20.0 20.0 20.0 +frame 202 +O 14.4369 1.5611 10.3116 +H 4.9478 13.9041 4.7925 +O 14.2592 6.3075 5.7834 +H 6.2126 15.8222 2.2959 +O 5.5680 9.1687 10.0195 +H 18.2414 12.7695 2.4197 +O 18.3201 1.2974 18.1143 +H 17.6711 2.2759 9.7704 +O 3.9580 1.5793 15.8756 +H 11.0939 7.5925 10.2207 +O 6.1189 3.6250 1.4914 +H 17.3103 11.7193 2.7492 +O 6.8286 15.3454 15.0832 +H 16.9047 8.5488 3.9265 +O 11.7161 16.7344 7.5236 +H 6.9637 19.3288 6.5029 +O 2.7150 8.3601 19.7812 +H 8.7978 0.4519 8.6345 +O 15.6826 0.6732 16.7745 +H 5.5338 0.5446 15.1904 +O 5.0326 5.5996 0.1144 +H 16.0929 5.3038 17.0253 +O 7.7984 8.9548 17.0297 +H 3.0399 13.6801 13.5477 +O 5.8868 12.7040 1.1256 +H 3.6194 15.0603 7.4123 +O 7.1832 19.6558 1.6515 +H 11.3262 4.2184 1.6895 +O 3.5331 11.0601 4.5151 +H 11.2094 12.7530 1.0836 +O 6.0637 5.9428 15.4577 +H 5.0220 11.1600 17.9866 +O 7.7140 1.4466 18.9261 +H 19.0415 5.2740 5.5812 +O 0.1067 11.1030 0.0699 +H 2.3793 2.7306 17.7808 +O 13.2741 12.2821 5.9238 +H 13.4826 11.6020 12.0165 +O 16.1380 4.9304 4.9399 +H 11.8979 9.0391 3.4138 +40 20.0 20.0 20.0 +frame 203 +O 14.7878 1.8820 10.5262 +H 5.0111 13.6354 4.8306 +O 14.7141 6.7018 5.7824 +H 6.0005 15.7538 2.0902 +O 5.8553 9.2765 10.1005 +H 18.6481 13.1473 2.2610 +O 18.3146 0.8650 18.1650 +H 17.6798 2.3637 9.7833 +O 3.9972 1.7318 15.5532 +H 10.8059 7.6427 10.6350 +O 5.9622 3.7259 1.5060 +H 17.2265 11.6592 2.6054 +O 6.9436 15.5925 15.0432 +H 16.6624 8.8759 3.7406 +O 11.7018 17.0330 7.4127 +H 7.1096 19.4794 6.1527 +O 2.5708 8.3081 19.3454 +H 8.5640 0.1747 8.5633 +O 15.5512 0.0876 16.7458 +H 5.9543 0.0336 15.1133 +O 4.7372 5.8301 19.5459 +H 16.1876 5.4491 16.6621 +O 7.4215 8.3098 16.9079 +H 3.3095 13.2559 13.8052 +O 5.9686 12.7269 0.7715 +H 3.7229 15.0603 7.6586 +O 6.5255 19.6523 2.2582 +H 11.5677 3.7152 2.0085 +O 3.0881 11.7464 4.6260 +H 11.0474 13.1217 1.0189 +O 6.0125 6.0206 15.6611 +H 4.7766 11.1103 17.8568 +O 7.6482 1.7682 19.0709 +H 18.9618 5.1795 5.7882 +O 0.4244 10.7645 19.9154 +H 2.3144 2.7694 18.0718 +O 13.5258 12.1528 5.9620 +H 13.3635 11.2759 12.0028 +O 15.7574 4.4354 4.8172 +H 11.4377 9.7332 3.1504 +40 20.0 20.0 20.0 +frame 204 +O 14.8535 2.3866 10.3610 +H 4.5994 13.5641 4.4841 +O 15.3529 6.7855 5.5338 +H 5.9391 15.6825 2.1588 +O 5.2852 9.5482 10.4541 +H 18.4470 13.2595 1.8935 +O 18.3669 0.7802 18.2979 +H 17.4048 2.5362 9.5797 +O 3.8639 1.2597 15.2541 +H 10.7063 7.7986 10.8392 +O 5.1979 4.2989 1.6470 +H 17.5759 11.6723 2.3281 +O 6.8551 15.5731 14.8327 +H 17.0072 9.1531 3.7123 +O 11.2724 17.1261 7.3845 +H 7.2837 19.3364 6.1550 +O 2.3166 7.6967 19.1052 +H 8.2382 0.5841 8.6505 +O 15.7149 19.7305 16.4688 +H 6.2152 0.0718 15.0664 +O 5.1968 5.8321 19.4529 +H 16.3273 5.6380 16.7008 +O 7.3218 8.8966 17.0524 +H 3.3530 13.0744 14.5533 +O 5.8797 12.4391 1.2682 +H 3.9578 15.3083 7.1003 +O 7.1568 0.0063 1.8290 +H 10.7735 3.7793 1.7344 +O 2.6035 11.6566 5.0582 +H 11.0290 12.8385 1.3631 +O 6.2843 6.0335 15.9179 +H 4.9129 10.9910 17.9801 +O 7.5983 1.7170 19.1532 +H 19.1440 5.0235 5.7834 +O 0.5235 11.1696 19.8401 +H 2.7627 2.6177 18.3843 +O 14.0266 11.4833 5.9312 +H 13.2445 10.9654 12.4232 +O 15.5011 4.7201 4.4970 +H 11.8341 9.7556 3.0188 +40 20.0 20.0 20.0 +frame 205 +O 15.7099 1.9410 10.7121 +H 4.5361 13.8867 4.3628 +O 15.0098 7.0363 5.3899 +H 5.5811 15.6239 1.8708 +O 5.6089 9.7612 10.4201 +H 18.2404 13.6180 1.9662 +O 18.8044 0.7124 18.0865 +H 17.2243 2.0399 9.6625 +O 3.5771 1.1101 15.6092 +H 10.5262 7.9105 10.9784 +O 5.2433 4.2550 1.7625 +H 17.1086 12.0597 2.9512 +O 6.4452 15.4742 14.7214 +H 17.3311 8.8062 4.2053 +O 11.3070 17.3076 7.1489 +H 7.3283 19.6649 6.1993 +O 1.9741 7.4944 18.6664 +H 8.3246 0.7391 9.0416 +O 15.5535 19.9600 16.7585 +H 6.3471 0.0982 14.9245 +O 4.7308 5.1876 19.3310 +H 16.6622 4.9471 16.7395 +O 7.6433 8.3810 17.1817 +H 3.2011 13.4078 14.6057 +O 5.2601 12.5482 1.0738 +H 3.6695 15.1588 7.4898 +O 6.6980 0.4640 2.0681 +H 11.1564 3.4211 1.6554 +O 2.8895 11.7132 5.0568 +H 11.1624 13.1796 1.0804 +O 6.4753 6.4076 15.6788 +H 4.7746 11.0840 17.5160 +O 6.8944 1.3428 19.2276 +H 19.1739 5.4941 6.5739 +O 19.9512 11.5028 0.2253 +H 2.3237 2.6915 18.3657 +O 13.9065 11.6394 5.9261 +H 13.4470 10.4426 12.8650 +O 15.3226 3.9930 3.9908 +H 11.8534 9.8675 2.5382 +40 20.0 20.0 20.0 +frame 206 +O 15.6535 1.8394 10.5474 +H 4.2857 13.7106 4.3916 +O 15.3772 7.0051 5.1364 +H 5.2945 15.8381 2.2246 +O 5.6135 9.2875 10.0754 +H 18.5240 13.3543 1.7714 +O 18.7114 0.3459 18.1965 +H 17.0415 1.5344 9.5164 +O 3.9998 1.2889 15.4693 +H 10.6983 8.1464 10.5614 +O 5.2476 3.5146 1.5175 +H 16.7133 12.0851 2.4563 +O 6.1195 15.1295 14.1357 +H 17.6105 9.0409 3.8502 +O 11.9603 18.0242 7.0826 +H 7.6036 19.5195 6.3511 +O 2.2448 7.1899 18.3545 +H 8.1051 0.8134 8.9366 +O 14.8899 0.3162 16.6424 +H 6.2958 19.8843 15.1216 +O 4.6917 5.1347 19.1444 +H 16.6424 4.7964 17.0271 +O 8.0550 8.3893 17.2977 +H 3.8895 13.2171 14.9902 +O 5.0947 12.2744 1.3819 +H 3.3811 15.1602 7.3271 +O 6.3945 0.1738 2.1668 +H 11.2793 3.3625 1.6585 +O 3.2827 11.6082 5.1223 +H 10.9500 13.1148 0.5446 +O 6.8336 6.6158 15.5944 +H 4.6098 11.0590 17.3138 +O 6.5736 1.4540 19.5038 +H 19.0320 5.7008 6.7530 +O 19.9815 11.8164 0.3233 +H 2.3205 2.3867 18.2166 +O 13.6475 11.7372 6.0245 +H 13.7146 10.7055 12.9120 +O 15.3989 3.9222 2.8779 +H 11.5925 10.0588 2.4312 +40 20.0 20.0 20.0 +frame 207 +O 15.7772 2.3437 10.1209 +H 4.1014 13.5826 3.8836 +O 15.6380 7.1525 5.0902 +H 5.2648 16.0342 2.2651 +O 5.9443 9.4145 10.5193 +H 18.3387 13.8335 1.8837 +O 18.5241 0.9371 18.4651 +H 16.8285 1.8818 9.5918 +O 4.0791 1.3138 15.1596 +H 10.4145 8.4155 10.1929 +O 5.1517 3.4520 1.7290 +H 16.8737 12.2170 2.0185 +O 6.0743 15.1561 14.0132 +H 17.7245 9.3572 4.2462 +O 12.0229 17.8792 6.4580 +H 7.8747 18.9043 5.9068 +O 1.5657 7.1603 18.3076 +H 7.6835 0.7154 9.0899 +O 14.9773 0.4046 16.9095 +H 6.4585 0.0420 15.4193 +O 5.4021 5.1996 19.3388 +H 16.3483 5.0135 16.9858 +O 8.2165 7.9602 17.1908 +H 4.0212 12.9110 14.8861 +O 5.5153 12.5356 1.3511 +H 3.0494 14.8452 7.4255 +O 6.2834 0.1607 1.5363 +H 11.2503 3.3619 1.4846 +O 3.4684 11.1197 5.0906 +H 10.5720 13.1618 0.2844 +O 7.0904 6.3250 15.3756 +H 4.6560 11.2503 17.1253 +O 6.6332 1.8015 19.3673 +H 19.1363 5.6442 6.8871 +O 0.0034 11.8524 0.1895 +H 2.0619 2.3223 17.8939 +O 13.6657 11.4831 5.3370 +H 13.0381 10.0002 13.0597 +O 15.1716 4.1128 3.3762 +H 11.6711 9.5961 2.2749 +40 20.0 20.0 20.0 +frame 208 +O 15.3911 2.4814 10.0734 +H 4.3634 13.2973 3.8427 +O 15.3544 7.6551 4.8932 +H 4.8307 16.1729 3.0160 +O 5.6177 9.4489 10.0804 +H 17.6290 14.3135 1.9218 +O 18.6476 0.6935 18.1455 +H 17.2002 1.7529 8.9747 +O 3.7476 1.5892 15.4075 +H 10.8549 8.6511 10.6094 +O 4.8834 3.6858 1.5849 +H 16.1311 11.7506 2.0851 +O 6.4980 15.3398 14.1256 +H 17.0352 9.0654 4.1218 +O 12.2644 17.9273 6.5454 +H 7.7591 19.2261 5.6009 +O 2.0207 7.5191 17.8888 +H 7.8213 0.6720 8.8304 +O 14.9618 0.9537 16.9040 +H 6.2613 19.9064 15.4700 +O 5.3075 4.9068 19.7973 +H 16.1982 4.7121 16.9691 +O 8.9393 7.9143 17.4806 +H 3.8216 13.1557 14.7043 +O 5.3550 12.2754 1.6318 +H 2.7756 15.5236 7.7617 +O 6.7188 19.6416 1.2790 +H 10.9571 3.0877 1.2707 +O 3.9819 11.3136 5.5168 +H 10.4364 13.1300 0.4127 +O 7.3052 6.1205 14.9519 +H 4.6972 11.3124 17.2823 +O 6.7433 1.5362 19.6846 +H 19.5320 5.7157 6.6467 +O 19.6666 12.4058 19.9833 +H 2.7510 2.2234 18.1882 +O 13.4426 11.3367 5.1206 +H 12.9436 9.9160 12.7186 +O 15.5509 3.8284 3.3186 +H 12.1548 9.4486 2.3881 +40 20.0 20.0 20.0 +frame 209 +O 15.5944 2.7417 10.2334 +H 4.8474 13.4821 3.4462 +O 15.4569 7.6894 4.8811 +H 5.5583 16.8221 3.1394 +O 5.4792 9.0170 10.0866 +H 17.9243 14.0727 1.5725 +O 18.2014 1.0685 17.7816 +H 17.3091 1.6185 9.4054 +O 3.2813 1.5672 15.4697 +H 11.0716 8.5568 11.0691 +O 4.7887 3.4392 2.0607 +H 16.3655 12.0226 1.8550 +O 6.4246 15.9010 14.2295 +H 17.0022 8.8322 3.8986 +O 11.6392 17.7253 6.4293 +H 7.0319 19.3895 5.7267 +O 2.3804 7.0862 17.9402 +H 8.0986 1.1051 8.9097 +O 14.6899 1.3707 16.8751 +H 5.8746 19.0379 15.7511 +O 4.9490 4.6984 19.4086 +H 15.8990 4.3898 16.4233 +O 8.7995 8.0102 17.1707 +H 4.4368 13.4424 14.7696 +O 4.6223 11.9582 1.9015 +H 2.5432 15.4918 8.6143 +O 7.0736 19.5321 1.4068 +H 11.0195 2.9723 1.7458 +O 3.3732 11.3227 5.4129 +H 10.8343 13.2092 0.5097 +O 7.0222 5.9472 14.7432 +H 4.5106 11.2058 17.6575 +O 7.0078 1.5627 19.7547 +H 18.7814 6.0095 6.5988 +O 19.8603 12.8014 0.1311 +H 2.8861 2.8578 18.1899 +O 13.2396 11.4736 5.3475 +H 13.1821 9.6996 12.3996 +O 15.3865 3.8217 3.5771 +H 12.1988 9.5507 2.5214 +40 20.0 20.0 20.0 +frame 210 +O 15.7701 2.9510 9.5630 +H 5.0330 13.6704 2.8699 +O 15.3669 7.7635 4.8367 +H 6.0730 16.6398 3.2164 +O 5.3349 9.0474 10.4305 +H 17.7326 14.4580 1.0700 +O 18.6262 0.7518 17.7413 +H 17.5528 1.8778 9.1177 +O 3.7068 1.5173 15.7128 +H 10.9001 8.1966 11.3469 +O 5.2200 3.6310 2.1458 +H 16.3716 12.1666 2.1367 +O 6.2716 15.9577 13.6038 +H 17.2328 8.7470 3.7832 +O 11.6051 17.4411 6.8723 +H 6.8930 19.0520 5.7991 +O 2.4176 6.8766 18.5119 +H 7.6838 1.3690 9.0949 +O 14.2093 1.3199 16.3932 +H 5.5750 19.4707 15.8051 +O 5.0725 5.0224 19.6587 +H 15.9194 4.6736 16.2671 +O 9.1909 8.3182 17.1596 +H 4.3948 13.4490 14.9572 +O 4.7505 11.8564 1.8979 +H 2.5170 15.8530 8.6764 +O 7.4731 19.9172 1.3039 +H 11.1483 3.2123 2.0277 +O 3.3040 11.4884 5.7206 +H 10.9186 12.9193 0.3556 +O 7.7545 6.1161 14.5519 +H 5.0578 11.0682 17.8155 +O 7.1150 1.6230 19.6492 +H 18.3332 5.9640 6.0842 +O 19.6827 13.1887 0.3812 +H 3.2244 2.8255 18.7490 +O 12.9630 11.5720 4.8830 +H 13.2784 9.8643 12.3902 +O 15.3842 3.5263 3.3042 +H 12.2629 9.6752 1.9551 +40 20.0 20.0 20.0 +frame 211 +O 15.7804 2.8212 10.0178 +H 4.9602 13.9024 2.7516 +O 15.2947 7.9069 4.2246 +H 6.1175 16.6825 3.4920 +O 5.1759 8.3086 10.9779 +H 17.6452 14.3262 0.4395 +O 18.0773 0.9994 18.1736 +H 17.5958 2.1411 9.5102 +O 3.0987 1.5555 15.7103 +H 10.8378 7.9867 11.3921 +O 4.7823 3.8482 2.0282 +H 16.3892 12.3097 2.4635 +O 6.3157 16.1090 13.8164 +H 16.8951 8.2369 3.3346 +O 12.3145 16.7525 7.0564 +H 6.9110 19.2745 5.9588 +O 2.2461 6.7866 18.4754 +H 7.3521 1.3161 8.8785 +O 14.4436 1.3419 16.6509 +H 5.4092 19.7380 15.7948 +O 5.4294 5.2319 19.2858 +H 15.6473 4.4087 16.2514 +O 9.1252 8.7542 17.4241 +H 4.9361 13.3732 15.0138 +O 4.8908 11.4518 1.5459 +H 2.5010 15.7027 8.6083 +O 7.7641 19.9006 1.3303 +H 11.1513 3.3050 2.1573 +O 3.3521 11.5930 5.6614 +H 10.9312 13.0656 0.6683 +O 7.7337 6.6540 14.7671 +H 4.7518 11.7335 17.5729 +O 7.5278 1.7149 19.3623 +H 18.5303 6.0792 5.9806 +O 19.9933 13.2626 0.8468 +H 2.9657 2.6017 19.0629 +O 13.5870 10.7490 5.2475 +H 12.8301 9.7217 12.5267 +O 15.7587 3.8877 3.3003 +H 12.5063 9.7059 1.7271 +40 20.0 20.0 20.0 +frame 212 +O 15.8987 2.5776 9.8061 +H 4.8481 13.4760 2.4378 +O 15.2065 8.0065 4.3209 +H 5.6670 16.5373 3.4655 +O 5.5497 8.2534 11.0078 +H 17.1593 14.4330 0.3852 +O 17.8400 1.1778 18.1453 +H 17.7774 2.0450 9.8848 +O 2.5950 0.7282 15.8067 +H 10.8688 8.2769 11.5038 +O 4.6460 3.9139 2.0029 +H 16.2699 12.8759 2.1758 +O 6.2827 16.1313 13.3880 +H 17.1586 8.2368 3.2599 +O 12.3010 16.5279 6.6898 +H 6.4803 19.5415 6.2245 +O 1.8746 6.5834 18.9455 +H 7.3118 1.2288 8.4489 +O 14.2783 1.5877 16.4597 +H 5.4961 19.8467 15.7464 +O 5.2642 4.9433 19.3693 +H 15.9462 4.8418 16.3156 +O 9.2608 8.8951 17.3784 +H 5.4584 13.2382 14.8784 +O 4.9153 11.3276 1.7447 +H 2.5189 15.4264 8.9255 +O 7.9970 19.6233 1.7935 +H 11.0345 3.0846 2.2666 +O 2.7263 11.6632 5.3211 +H 10.9147 12.7652 0.4444 +O 7.5655 6.7736 14.8579 +H 4.3837 11.8347 17.3740 +O 7.2320 1.5875 0.0325 +H 17.9877 5.9103 6.3063 +O 19.9709 13.5711 1.2611 +H 2.8696 2.1084 19.1898 +O 13.2544 10.4457 5.0960 +H 13.1274 9.3115 11.8331 +O 15.8816 3.7577 3.0640 +H 12.5310 9.2763 1.7360 +40 20.0 20.0 20.0 +frame 213 +O 15.9127 2.9341 10.0895 +H 4.4860 13.2639 2.4840 +O 15.7839 8.0514 4.6188 +H 5.8774 16.8759 3.3830 +O 5.7192 8.5198 10.5253 +H 17.0399 14.5196 0.2589 +O 18.2070 1.2295 18.0819 +H 17.8139 1.8273 9.7526 +O 2.8669 0.9501 16.1209 +H 10.5294 8.3890 11.3993 +O 4.3457 3.8163 1.6338 +H 16.5310 12.3462 2.2655 +O 6.2678 15.9305 13.2447 +H 17.4221 7.8212 3.1532 +O 12.5405 15.7680 6.8375 +H 6.2243 19.4913 6.2681 +O 1.6325 6.4659 19.0428 +H 7.3422 1.6481 8.4670 +O 14.2596 1.6716 16.4271 +H 5.7159 19.7139 15.1432 +O 5.1049 4.7036 18.6759 +H 16.0935 5.2567 16.4961 +O 9.0563 9.0831 17.5559 +H 5.1598 12.7502 14.7000 +O 5.0132 11.1930 1.9094 +H 2.4514 15.1405 8.1664 +O 8.2720 19.1866 1.0877 +H 11.4562 3.1490 2.0554 +O 2.7483 11.8594 4.7523 +H 11.0901 13.0716 0.0809 +O 7.5191 6.8530 15.2273 +H 4.7622 11.6479 17.5766 +O 7.5301 1.7406 0.5065 +H 17.7999 6.3557 7.1318 +O 19.8424 13.9031 1.2018 +H 2.3771 2.3201 18.9637 +O 12.5592 10.3175 4.8971 +H 13.3315 9.6135 12.1221 +O 15.7881 3.5624 3.0171 +H 12.6639 9.0953 1.6332 +40 20.0 20.0 20.0 +frame 214 +O 15.7880 2.9753 10.1203 +H 4.4633 12.7180 2.4096 +O 15.8749 8.4295 4.6945 +H 5.6312 16.5703 3.2036 +O 5.8106 8.1933 10.7818 +H 16.8691 14.4456 0.1526 +O 18.3215 1.2833 17.4719 +H 17.4786 1.3179 9.6569 +O 2.9882 1.2131 16.6126 +H 10.7151 8.4884 12.0002 +O 4.3150 3.8069 2.3786 +H 16.2862 12.5035 2.1094 +O 5.5346 15.9179 13.2855 +H 17.4788 7.6836 3.6289 +O 12.7250 15.3534 7.1235 +H 6.3617 19.8410 6.2089 +O 1.7528 6.4089 18.8674 +H 7.3936 1.7280 8.4851 +O 14.2509 1.6328 16.2323 +H 5.7254 19.7745 14.8557 +O 5.2492 4.6635 18.6306 +H 15.5635 5.1965 15.9894 +O 9.1698 9.2595 17.5552 +H 5.8493 12.1724 14.7547 +O 5.4054 11.8658 2.0245 +H 2.4007 14.6784 7.8846 +O 8.3614 19.4423 0.9146 +H 10.9948 3.4140 1.9581 +O 2.4093 11.4343 4.5762 +H 10.5496 13.2808 19.7896 +O 7.5922 6.6794 15.0947 +H 4.4617 11.8961 17.8199 +O 7.3251 1.6455 0.4148 +H 18.2202 6.7272 7.4289 +O 19.5779 13.4080 0.7836 +H 2.5643 1.8607 19.1105 +O 12.3872 10.2708 4.9870 +H 13.2694 9.1819 12.2044 +O 16.0203 3.6274 3.0985 +H 12.2530 9.8944 1.8061 +40 20.0 20.0 20.0 +frame 215 +O 15.7471 3.4492 10.1003 +H 4.8229 12.9192 2.8465 +O 15.8417 8.2622 4.9814 +H 5.3616 16.1938 3.3427 +O 5.9139 8.2980 10.2693 +H 17.4313 14.2674 0.5362 +O 17.7522 1.0282 18.0820 +H 17.2981 1.1642 10.1213 +O 2.9989 1.7836 16.9214 +H 11.2094 8.0874 11.9212 +O 4.0223 4.0917 2.5819 +H 16.1233 12.1707 1.7289 +O 5.3667 16.0367 13.0861 +H 17.7920 8.1566 3.6836 +O 12.5160 14.9370 6.4914 +H 6.4296 19.8187 6.0706 +O 1.7731 6.2084 19.2622 +H 7.7052 1.7603 8.5571 +O 14.3602 1.7919 16.0421 +H 6.1120 0.2840 14.6457 +O 5.3510 4.7005 19.2419 +H 15.5008 5.2375 16.2041 +O 9.1272 8.9994 17.1400 +H 5.5908 11.9791 15.2030 +O 5.4837 12.6355 2.1835 +H 2.1605 14.7312 8.4483 +O 8.6505 19.5232 0.9484 +H 10.8619 3.7159 1.9761 +O 2.0756 11.7371 4.5384 +H 10.1555 13.4878 19.8051 +O 7.3734 6.8855 15.6444 +H 4.2908 11.6618 17.5757 +O 7.6961 1.3023 0.6465 +H 17.7649 6.7020 7.6340 +O 19.9295 13.1693 0.8067 +H 2.2950 1.6395 18.9509 +O 12.2192 10.5646 5.5427 +H 13.1415 9.2339 12.3464 +O 16.3384 4.1120 2.4392 +H 12.0918 9.7354 1.4054 +40 20.0 20.0 20.0 +frame 216 +O 15.2509 3.2059 10.2377 +H 4.9174 12.3276 2.8358 +O 16.0713 8.7710 5.1053 +H 5.2344 15.9676 3.6005 +O 6.0574 8.6625 10.4529 +H 17.3867 14.3424 0.5336 +O 18.0495 1.5406 17.7736 +H 17.4517 1.1753 10.5874 +O 3.0930 1.8615 16.5715 +H 11.2843 8.2843 11.8804 +O 4.0407 4.9178 2.6685 +H 16.2411 11.9259 1.4320 +O 5.3723 16.0165 13.3581 +H 17.4759 8.0644 4.0141 +O 12.5238 15.1197 6.6822 +H 6.5410 0.0099 6.2193 +O 1.7103 5.8692 19.9292 +H 7.8006 1.6907 8.1066 +O 13.9727 1.5311 16.1583 +H 6.7524 0.4932 14.7291 +O 5.5070 4.8555 19.3058 +H 14.5676 5.0572 16.2687 +O 8.5775 8.7316 17.2712 +H 5.9004 12.0587 15.1117 +O 4.7882 12.8275 2.0428 +H 2.0314 15.2165 8.4200 +O 8.7142 19.8406 1.5167 +H 11.0007 3.6353 1.7894 +O 2.2849 11.3149 4.6947 +H 10.1671 13.0717 19.7585 +O 6.9056 7.7989 15.5557 +H 4.1093 11.9057 17.8369 +O 7.2565 1.6476 0.7081 +H 17.6293 6.6299 7.6114 +O 19.6809 12.8846 0.4276 +H 2.1823 0.8439 18.6002 +O 12.2768 10.3317 5.6673 +H 13.5257 9.6648 12.1132 +O 16.2783 4.1762 2.2427 +H 12.0017 9.2248 1.4544 +40 20.0 20.0 20.0 +frame 217 +O 14.9384 3.0516 9.8236 +H 5.2779 11.9510 2.7511 +O 15.8471 8.7015 4.9962 +H 5.6451 16.3019 3.6516 +O 5.9591 8.9637 10.7213 +H 17.7070 14.0475 0.2618 +O 17.4779 1.6651 17.4625 +H 17.4053 0.5310 10.0251 +O 3.1484 1.8352 16.9695 +H 11.2836 8.8358 11.5872 +O 4.2055 5.0519 1.9704 +H 16.1526 12.0559 1.9474 +O 5.5343 16.3378 13.7048 +H 17.4723 8.8951 4.2182 +O 13.0591 14.7626 6.6187 +H 6.2697 0.0681 6.2126 +O 1.8134 6.0602 19.5165 +H 8.1965 1.4972 8.8224 +O 13.7402 1.4260 16.2887 +H 6.2788 0.8260 14.9144 +O 5.6638 5.1457 19.6140 +H 14.4855 4.9489 16.3685 +O 8.4023 8.9208 16.9614 +H 6.0668 12.4516 15.1092 +O 5.0110 13.0048 2.0607 +H 2.0172 15.0291 8.8872 +O 8.7305 19.8995 1.3202 +H 11.1270 3.4514 1.2805 +O 1.9942 11.0257 4.7176 +H 10.5885 13.7757 19.9037 +O 7.0680 8.2581 15.4264 +H 3.9963 12.1938 18.1837 +O 6.8608 1.4390 1.0618 +H 17.4369 7.3904 7.6091 +O 19.6650 12.8232 0.8157 +H 2.2420 1.0444 18.2059 +O 12.5938 9.9008 5.4398 +H 13.3959 9.9782 12.2873 +O 16.4251 4.4104 2.2313 +H 12.4579 9.4218 1.2008 +40 20.0 20.0 20.0 +frame 218 +O 14.9303 3.0839 10.0786 +H 5.1137 11.4103 2.2063 +O 15.3680 8.6464 5.3219 +H 6.1179 16.1409 3.9797 +O 5.8108 9.2576 10.5271 +H 18.0134 13.7487 0.8811 +O 17.9341 1.2968 17.4351 +H 17.5114 0.4557 10.3899 +O 2.8254 1.7467 16.9773 +H 11.4249 9.1719 11.7584 +O 4.0291 5.1115 1.8046 +H 16.4463 11.9205 1.6118 +O 5.3124 15.7493 13.2611 +H 17.1664 8.5360 3.6298 +O 13.0514 14.2586 7.2135 +H 6.1079 0.1285 5.5216 +O 1.8608 6.4097 19.4242 +H 7.3606 0.8031 8.2608 +O 14.0566 1.7767 15.5521 +H 6.3172 1.0057 14.7785 +O 5.9716 5.1339 19.7168 +H 14.5500 4.8866 15.7808 +O 8.7203 9.0713 16.5983 +H 6.1918 12.5962 15.2472 +O 4.4981 12.7443 1.9544 +H 2.6749 14.5782 9.3174 +O 9.0868 19.5877 1.2919 +H 11.1966 3.3498 1.0279 +O 2.1201 11.2129 4.7614 +H 10.5184 13.9464 19.8229 +O 6.6976 8.2051 16.0933 +H 3.5088 12.1584 18.2774 +O 6.9723 1.3248 1.1937 +H 17.6002 7.8059 7.3676 +O 0.0250 12.7183 0.2851 +H 2.3577 1.1148 18.0659 +O 12.9651 10.0613 5.0651 +H 12.9977 10.0968 12.4266 +O 16.3630 4.1307 1.9343 +H 12.5864 9.2592 1.2927 +40 20.0 20.0 20.0 +frame 219 +O 14.8286 3.2759 9.4030 +H 5.7457 11.5126 1.9550 +O 15.0357 8.6439 5.0677 +H 5.6483 16.1352 3.8051 +O 5.6566 8.7018 10.6455 +H 18.1364 13.4355 1.0498 +O 17.8493 1.3799 17.4767 +H 17.3400 0.1503 10.3645 +O 2.2751 1.7236 16.8350 +H 11.5370 9.7299 11.2595 +O 3.8441 5.1588 1.7420 +H 16.1092 12.0920 1.5064 +O 5.8501 15.6309 13.6499 +H 17.0997 9.1018 3.0294 +O 12.9592 14.0041 7.0866 +H 6.0995 0.3611 5.6722 +O 2.2427 6.2988 19.4784 +H 7.6003 1.3572 8.2454 +O 13.8917 2.0533 15.4887 +H 5.9621 1.3443 14.0316 +O 6.3676 4.9781 0.0807 +H 14.3458 5.0872 16.0098 +O 8.7404 9.3232 16.4882 +H 5.8892 11.9335 15.1373 +O 4.1728 12.6181 2.3034 +H 2.3807 15.3239 9.1464 +O 9.2907 19.6649 1.5272 +H 11.2349 3.4875 0.8821 +O 2.1217 10.8642 5.5306 +H 10.5339 14.4015 19.5742 +O 7.0122 8.4564 16.0513 +H 3.8384 12.1143 18.4092 +O 6.6711 1.5334 1.2087 +H 17.5590 7.8733 7.6029 +O 0.3722 12.7849 0.5280 +H 2.2232 1.6511 18.0715 +O 12.9436 9.9004 4.8192 +H 13.0369 10.4266 11.9212 +O 16.0092 4.3862 1.7124 +H 12.4743 8.8117 0.9946 +40 20.0 20.0 20.0 +frame 220 +O 14.9354 3.3102 9.7023 +H 5.9349 11.8952 1.8415 +O 14.5564 8.3556 5.1191 +H 5.5882 16.3560 3.6824 +O 6.5523 8.5580 10.5044 +H 18.7904 13.2176 0.9833 +O 17.9817 1.3373 17.9506 +H 17.4195 19.6019 10.7387 +O 2.3357 1.3339 17.0054 +H 11.4146 9.5230 11.0993 +O 3.8536 4.7730 1.8838 +H 15.6956 11.9746 1.2391 +O 5.5250 16.2042 13.4189 +H 17.0787 9.1195 3.0653 +O 12.7311 14.0438 7.0210 +H 6.0193 0.6634 6.1020 +O 2.3983 6.2849 19.5052 +H 7.9686 1.5889 8.3404 +O 13.1420 2.0971 14.8130 +H 5.9137 1.9406 14.0436 +O 5.7003 5.7384 0.1324 +H 14.0681 4.8364 15.4662 +O 9.0384 8.8501 16.6178 +H 6.1961 11.6688 15.0842 +O 4.2209 13.0875 1.9581 +H 2.6829 15.6388 8.7186 +O 9.1371 19.2346 1.8438 +H 11.6716 3.7744 1.2049 +O 1.9347 10.6052 5.4253 +H 10.3588 14.3278 19.4428 +O 7.0521 7.9585 16.1783 +H 3.6292 11.5374 18.8878 +O 6.7905 1.6952 1.4369 +H 17.3542 7.9284 7.5779 +O 0.1025 12.4866 0.7798 +H 2.7714 1.5414 18.1977 +O 12.9979 9.9174 4.3333 +H 12.9230 10.6443 12.2444 +O 16.0926 4.4541 1.8352 +H 12.5472 8.5929 0.8464 +40 20.0 20.0 20.0 +frame 221 +O 15.0129 4.0665 9.5923 +H 6.2051 12.0148 2.1285 +O 14.5460 9.0057 4.6957 +H 5.8050 16.4319 3.9716 +O 6.0951 8.3487 10.6823 +H 18.8795 13.0481 1.2308 +O 18.2614 1.2417 18.2177 +H 17.3361 19.7829 11.0418 +O 2.0935 1.6579 16.8484 +H 12.0401 9.3903 10.7543 +O 3.5859 4.8885 2.2410 +H 16.3372 12.2814 1.0441 +O 5.3825 16.4331 13.9559 +H 17.3872 9.1382 3.0053 +O 12.6784 13.5065 7.5180 +H 6.1207 0.9056 6.2204 +O 2.4818 5.9184 19.5012 +H 7.5544 2.0127 8.3535 +O 13.0639 2.6945 14.3597 +H 6.2270 2.5692 13.6244 +O 5.6827 5.6830 0.3302 +H 14.0040 5.1372 15.4680 +O 9.1564 9.2762 16.6504 +H 6.7417 11.3554 14.8563 +O 4.3138 13.1744 1.8419 +H 2.6233 15.7839 8.6638 +O 8.7854 19.5305 1.4396 +H 11.9392 4.1813 0.6053 +O 2.0043 10.8505 5.3288 +H 10.9103 14.2712 19.1058 +O 7.1373 8.1201 15.8476 +H 3.8704 11.3488 18.8468 +O 7.3489 1.1427 0.9270 +H 17.5085 7.3909 8.1849 +O 0.3867 12.1976 0.4911 +H 2.9669 1.2258 18.2121 +O 13.3567 9.8774 4.5608 +H 13.3484 10.8470 12.5982 +O 16.1690 4.9762 1.7903 +H 12.1215 8.8716 0.9286 +40 20.0 20.0 20.0 +frame 222 +O 15.5637 4.3494 9.9534 +H 6.2628 12.1392 2.2824 +O 14.6260 8.7003 5.1446 +H 5.7422 16.8568 4.1822 +O 5.6763 8.0090 10.4794 +H 18.9152 12.4832 0.6388 +O 18.3728 1.2304 18.1739 +H 17.8905 0.0291 11.0662 +O 2.0104 1.7645 16.7859 +H 11.7885 9.2349 10.8886 +O 3.6241 5.1302 1.9939 +H 16.6007 12.6725 1.0613 +O 5.3696 16.1153 13.9345 +H 17.3871 9.2086 2.8192 +O 12.6408 13.1406 7.3616 +H 6.4912 0.8288 6.5017 +O 2.3006 5.7837 19.7961 +H 7.4493 2.4679 8.4382 +O 13.4520 2.3505 14.7159 +H 6.2343 2.7082 13.7825 +O 6.2013 5.6950 0.3817 +H 14.2656 5.1268 15.6094 +O 9.4250 9.3850 16.5691 +H 6.9924 10.9794 14.8705 +O 4.1815 13.6780 1.4171 +H 2.7885 15.9404 8.7399 +O 9.5686 19.6705 1.5406 +H 11.7878 4.3455 0.4363 +O 2.3985 10.7428 5.8780 +H 11.0454 14.3735 18.9827 +O 7.1636 8.4757 14.9360 +H 3.3144 11.6893 19.2571 +O 7.4230 1.1484 0.8287 +H 17.6098 7.3977 8.0318 +O 0.9698 12.2500 0.6648 +H 2.9403 1.1461 18.6454 +O 13.2959 9.9795 4.5000 +H 13.5762 11.0167 12.8062 +O 15.8517 5.2224 1.7450 +H 12.2274 8.9302 0.7521 +40 20.0 20.0 20.0 +frame 223 +O 15.6181 4.4082 9.8251 +H 5.7690 12.1593 2.1172 +O 14.3761 8.5417 5.1978 +H 5.7021 16.9201 4.0077 +O 5.8543 7.7524 10.5994 +H 19.1304 12.1074 0.5721 +O 18.0659 0.9327 18.1182 +H 17.9069 19.5658 10.5927 +O 1.7013 2.0644 16.6287 +H 11.6633 9.2219 10.7294 +O 3.5008 5.4084 1.6619 +H 16.6460 12.7039 1.7610 +O 5.4354 16.5997 14.2778 +H 17.4926 9.1444 2.8782 +O 13.1389 13.4725 7.3095 +H 6.7623 0.9423 6.3460 +O 2.5675 5.9707 19.8562 +H 7.5886 2.1938 8.4558 +O 13.6720 1.5124 14.7088 +H 6.1983 2.8124 13.8026 +O 6.6250 5.8968 0.0183 +H 14.3631 5.4935 15.2753 +O 8.8156 9.2581 16.7089 +H 6.8553 10.8409 14.6276 +O 4.7456 14.1581 1.7138 +H 2.8753 15.4918 8.8567 +O 9.3829 19.4764 1.3986 +H 11.8828 4.5561 0.0299 +O 2.6136 10.9617 5.7317 +H 10.8074 14.5355 19.8531 +O 6.8363 9.0239 14.5784 +H 3.0040 11.6134 18.8723 +O 7.4884 0.6288 0.7662 +H 17.6713 7.2950 8.1930 +O 1.3244 12.3353 0.8593 +H 2.9011 1.1817 19.0103 +O 13.6383 10.4971 4.0134 +H 13.7844 11.2318 12.3138 +O 15.8167 5.1110 1.4086 +H 12.4021 9.3138 1.0349 +40 20.0 20.0 20.0 +frame 224 +O 15.5521 3.9591 9.4037 +H 5.7470 11.9172 1.9994 +O 13.8680 8.3988 4.9675 +H 6.0959 16.5869 4.0245 +O 6.3401 7.6775 10.4944 +H 19.4630 13.0281 0.7471 +O 18.1770 1.0513 18.6274 +H 17.7091 0.2659 10.5826 +O 1.8574 1.9916 17.1688 +H 11.7769 9.0410 10.4680 +O 3.4960 5.0294 1.7230 +H 16.9251 12.3768 1.6879 +O 4.9808 17.1646 14.6045 +H 17.3836 8.9095 2.8747 +O 13.4499 13.4395 7.2669 +H 6.5199 1.0826 6.5796 +O 2.5740 6.1995 19.8410 +H 7.5055 2.0573 8.0097 +O 13.9960 1.3322 15.1730 +H 6.1601 3.2561 13.7473 +O 6.7214 5.8242 0.2664 +H 13.9420 5.1746 15.3736 +O 8.8602 9.5154 16.5160 +H 6.9033 11.1405 14.6546 +O 5.1175 14.3650 2.1091 +H 2.6769 15.4202 8.4424 +O 9.4970 19.5552 1.5928 +H 11.6080 4.5484 0.3891 +O 2.9752 11.1177 5.1362 +H 10.8765 14.7170 0.2620 +O 7.2533 8.8866 14.2002 +H 2.9740 11.0791 18.7381 +O 7.6558 0.4287 1.2153 +H 17.9191 7.3566 8.5328 +O 1.0546 12.1962 0.7728 +H 3.5266 0.9977 18.8497 +O 14.0301 10.2954 3.2304 +H 13.9192 11.7768 11.9782 +O 16.4095 4.4295 1.2090 +H 12.4477 8.9009 1.2377 +40 20.0 20.0 20.0 +frame 225 +O 15.4314 4.0656 9.7214 +H 5.4007 11.6380 2.0126 +O 13.7170 8.8501 5.6524 +H 5.8889 17.5203 4.4588 +O 6.4248 7.5584 10.4190 +H 0.1197 13.5780 0.9685 +O 17.7147 1.2595 18.5520 +H 17.6475 0.4073 10.5719 +O 2.2100 2.7551 17.4225 +H 11.7022 9.0003 10.5314 +O 3.3373 5.4192 1.9062 +H 17.3528 12.8572 1.7469 +O 5.0903 17.1339 14.6678 +H 17.9039 9.0412 2.8699 +O 13.6570 13.8359 6.7964 +H 6.1382 1.2105 6.7721 +O 3.3245 6.2095 0.2055 +H 7.1367 1.7988 8.5267 +O 13.6188 1.5106 15.1340 +H 6.2137 3.5351 14.0549 +O 6.8162 5.7967 0.2428 +H 14.2000 5.5721 15.3273 +O 9.6793 9.0072 16.6607 +H 6.7511 11.5894 14.5897 +O 4.8596 14.4125 2.1026 +H 2.8468 14.8395 8.8652 +O 9.4654 19.3450 1.2131 +H 11.3446 4.2621 0.3877 +O 2.8315 11.5155 4.8721 +H 10.2083 14.3053 0.1428 +O 7.0506 8.7385 13.8517 +H 3.1065 11.3989 18.2823 +O 7.1039 0.3850 1.5759 +H 18.2236 7.6182 8.6046 +O 1.3994 12.1886 0.3845 +H 3.1153 0.5015 19.2075 +O 14.0358 10.2319 3.0436 +H 14.1506 11.2987 11.9487 +O 16.0623 4.5493 1.5448 +H 13.0462 8.9877 0.9229 +40 20.0 20.0 20.0 +frame 226 +O 15.3406 3.8403 9.8291 +H 5.2224 11.9495 2.0679 +O 13.0413 9.2768 5.5444 +H 5.2271 16.9711 4.3665 +O 6.2661 7.7991 11.1049 +H 19.7900 14.0478 0.9093 +O 17.9641 0.9532 18.7306 +H 17.2634 0.0043 10.3273 +O 1.6983 2.6343 17.1794 +H 11.8972 8.7383 10.6661 +O 3.4026 4.9774 1.9434 +H 17.5682 12.4749 1.8239 +O 5.3466 17.2144 14.9128 +H 17.6639 9.0315 2.2407 +O 14.1395 13.5104 7.0704 +H 6.1409 0.6224 6.5175 +O 3.5259 6.2913 0.5457 +H 7.6011 1.7721 8.7277 +O 13.1339 1.6474 15.1554 +H 6.6485 3.4526 13.8542 +O 6.8809 5.6005 0.2398 +H 14.0304 5.3877 15.3749 +O 9.7242 8.7572 16.5518 +H 6.8651 11.2438 14.9216 +O 5.0706 14.4437 1.5188 +H 3.9026 14.8200 9.3874 +O 9.0507 19.0928 0.7065 +H 11.1639 4.0002 0.2489 +O 2.8715 11.2371 4.6822 +H 9.8736 14.5966 0.3432 +O 6.5763 8.5776 13.6171 +H 2.8983 11.3091 17.6903 +O 6.8285 0.2741 1.5387 +H 17.7831 7.4859 8.7136 +O 1.2797 12.6080 0.3740 +H 3.2235 0.5523 19.8933 +O 14.1806 10.1600 3.2766 +H 14.2718 11.5370 11.9715 +O 16.4733 4.3935 1.4089 +H 12.7938 9.1971 0.6735 +40 20.0 20.0 20.0 +frame 227 +O 15.3628 3.9206 9.4096 +H 5.3215 11.4426 1.7162 +O 13.5843 9.2996 5.7079 +H 5.3984 16.9957 3.9189 +O 6.1889 8.5121 11.0191 +H 19.4971 14.0633 0.6158 +O 17.7717 0.2672 18.7552 +H 17.4636 19.8758 10.8752 +O 1.5767 2.8877 17.2906 +H 11.5163 8.9625 10.8747 +O 3.4196 5.0855 1.7360 +H 17.9535 12.2611 1.8260 +O 5.5740 16.7631 14.8885 +H 17.3442 8.9652 2.3023 +O 14.4053 13.3358 7.2475 +H 5.8472 0.9459 6.4757 +O 3.4383 6.5135 0.6409 +H 7.9555 2.2854 8.9677 +O 13.2755 1.9453 15.9336 +H 6.4376 3.4177 13.8390 +O 7.0291 5.3993 0.5731 +H 13.9899 5.8982 15.5361 +O 9.6372 8.4211 16.5525 +H 7.2607 11.6613 15.0446 +O 5.6303 14.9311 1.7495 +H 4.5020 14.7015 9.4187 +O 8.6116 19.1224 0.5857 +H 11.0106 4.3439 19.9049 +O 2.8379 11.5506 4.9759 +H 10.2367 14.5924 0.3270 +O 6.4167 8.8718 13.3521 +H 3.0796 11.1105 18.1462 +O 6.6032 19.9209 1.3198 +H 17.6905 7.7181 8.5401 +O 1.3522 12.4782 0.3170 +H 3.8962 0.7723 0.3421 +O 13.8218 10.1904 3.2642 +H 14.6812 11.2158 11.7606 +O 16.0669 4.6126 1.6628 +H 13.2344 9.4408 0.6723 +40 20.0 20.0 20.0 +frame 228 +O 15.3059 3.4865 8.8884 +H 5.4421 10.8529 1.6877 +O 13.4597 9.4965 5.8228 +H 5.3280 16.9727 3.5357 +O 6.0861 8.7373 10.6453 +H 19.2830 14.3475 0.7045 +O 18.3944 0.3838 19.2745 +H 17.3950 19.7067 11.1434 +O 2.3610 2.8822 17.3762 +H 11.5238 8.5877 10.7498 +O 3.1233 5.1882 2.1079 +H 18.5641 12.3867 1.4984 +O 5.1402 16.0508 14.9758 +H 17.8514 8.8644 1.9506 +O 14.1713 13.4109 7.2253 +H 5.7204 0.9144 6.9189 +O 3.7399 6.2825 0.7696 +H 8.0265 2.1628 9.4361 +O 13.0676 2.3122 16.2423 +H 6.7435 3.6213 14.2648 +O 6.9986 4.9665 0.3483 +H 13.9986 5.6815 14.9729 +O 9.6816 8.0965 16.8233 +H 6.9573 11.5681 14.9123 +O 5.2918 14.7153 1.7790 +H 4.5403 15.0443 9.2437 +O 8.5824 19.1123 0.2895 +H 11.4390 4.2558 0.5562 +O 2.3160 11.5488 5.0550 +H 10.2146 14.8941 19.9958 +O 6.6714 8.9123 13.4997 +H 3.5832 11.7165 17.8692 +O 7.1254 19.7217 1.1829 +H 17.6667 7.5853 7.6970 +O 1.6009 12.4861 0.2432 +H 3.9867 0.9689 0.3442 +O 13.5636 10.2588 3.3369 +H 14.1341 11.2903 11.7338 +O 15.8614 5.3924 1.7430 +H 13.0467 9.1470 0.6783 +40 20.0 20.0 20.0 +frame 229 +O 15.6838 3.5235 8.7925 +H 5.3066 11.3241 1.2836 +O 13.7517 9.6574 5.6385 +H 5.0236 16.9901 3.5010 +O 5.8278 8.6479 11.3377 +H 19.6926 13.8829 0.4211 +O 18.4336 0.0938 19.0186 +H 17.7456 19.4212 11.0765 +O 1.9078 3.2836 17.5301 +H 11.6538 8.1539 10.9751 +O 2.8487 5.1236 2.0990 +H 18.5422 12.9090 1.5767 +O 5.0485 16.2480 15.1959 +H 18.0194 9.1537 1.6064 +O 14.1786 13.4848 7.7782 +H 5.8926 0.5117 6.8377 +O 3.9888 6.9058 0.9323 +H 7.8467 2.2352 9.2102 +O 12.9976 1.7556 16.3473 +H 6.8211 3.1000 14.0520 +O 7.2749 5.0265 0.2373 +H 13.6408 5.3854 15.2231 +O 9.3360 8.2175 16.5862 +H 7.7475 11.5697 14.9766 +O 5.1644 14.8107 1.4439 +H 4.4321 15.1080 8.6601 +O 8.5452 18.8080 0.3001 +H 11.1040 4.3517 0.3525 +O 2.2435 11.2614 4.9652 +H 10.1317 14.9453 0.3489 +O 6.5957 9.2366 13.6060 +H 3.6262 11.9737 17.9068 +O 7.1316 0.4392 1.3270 +H 17.5309 8.2378 7.8964 +O 2.1011 12.4661 0.4764 +H 3.6667 1.3976 0.5523 +O 13.4743 9.9321 3.6157 +H 14.3626 11.3796 11.3911 +O 15.8262 5.1483 1.6212 +H 13.5450 8.4057 0.2352 +40 20.0 20.0 20.0 +frame 230 +O 15.6310 3.2576 8.6550 +H 5.5847 11.3293 1.3575 +O 13.7494 9.7490 6.2669 +H 4.7724 16.9412 3.9116 +O 6.0236 8.5064 10.6482 +H 19.6783 14.0267 0.6219 +O 18.2297 0.2266 19.3588 +H 17.6806 19.6137 11.0472 +O 2.3933 3.5100 17.2241 +H 11.4947 8.3835 10.5340 +O 2.8805 4.4710 2.2849 +H 18.6865 12.5757 1.9675 +O 4.8870 16.4191 15.1126 +H 18.0959 9.4790 1.9412 +O 13.7569 13.7345 8.0380 +H 5.9560 0.3890 7.0193 +O 3.9076 7.2279 0.5945 +H 7.4259 2.1952 9.6209 +O 12.7186 2.1944 16.0404 +H 6.9629 3.2010 13.9485 +O 6.7318 4.9401 0.7388 +H 14.3176 5.1134 15.1281 +O 9.1854 8.1115 16.7035 +H 7.5767 11.7976 14.5834 +O 5.1367 15.0660 1.3073 +H 4.5536 14.6944 8.6798 +O 8.5011 19.0814 0.0817 +H 10.7226 4.5099 0.5666 +O 2.3585 11.0139 4.7217 +H 9.6602 15.4048 0.9287 +O 6.0755 9.6551 13.7109 +H 2.9879 11.4250 17.7107 +O 7.4901 0.0340 0.8736 +H 17.3840 8.4376 8.0766 +O 2.1564 11.9995 0.5643 +H 3.4773 1.6740 1.3034 +O 13.0352 9.4605 2.9624 +H 14.8092 11.2622 10.7785 +O 15.4195 5.1905 2.0501 +H 13.2659 8.6598 0.2934 +40 20.0 20.0 20.0 +frame 231 +O 15.7103 3.5526 8.7217 +H 5.1261 11.5899 1.9033 +O 14.2920 10.0386 6.2575 +H 4.9318 16.8860 3.7862 +O 6.3056 8.7093 10.1895 +H 19.8167 13.6351 0.8400 +O 18.3852 0.4782 19.5345 +H 17.4341 19.4220 11.2597 +O 2.0613 3.5018 17.4714 +H 11.9779 7.8578 10.9008 +O 2.5734 4.3992 2.5325 +H 18.6141 12.6497 2.0835 +O 5.0828 16.3503 15.2848 +H 17.9981 9.1546 2.3129 +O 13.5561 13.4366 7.7715 +H 6.1155 0.2681 6.7812 +O 3.2216 6.7239 0.1551 +H 7.6765 1.6987 9.7936 +O 12.5672 1.8735 15.9546 +H 7.2081 3.1582 13.9643 +O 6.7518 4.8631 1.0550 +H 14.2592 5.2846 15.0220 +O 9.1515 8.1104 16.6756 +H 7.6572 11.7659 15.1067 +O 4.9277 14.3042 0.9850 +H 4.0219 14.6597 8.8796 +O 8.9821 19.4688 0.3604 +H 11.0037 4.6243 0.5441 +O 2.5566 10.8181 4.1907 +H 9.9307 15.3757 1.1514 +O 6.1456 9.7821 13.6164 +H 2.9987 11.3957 18.1211 +O 7.4007 0.0620 1.1949 +H 17.4744 8.7721 7.5583 +O 2.4278 11.5801 0.1038 +H 3.9862 1.3750 1.3285 +O 12.8571 9.1305 2.7260 +H 14.6162 11.4601 10.9404 +O 15.6233 5.7034 2.3539 +H 13.4499 8.5697 0.0957 +40 20.0 20.0 20.0 +frame 232 +O 15.4819 3.6045 9.0021 +H 5.0175 11.3522 1.6256 +O 14.1193 10.1295 6.0100 +H 5.1720 16.8985 3.5619 +O 6.4075 8.6800 10.2492 +H 19.8936 13.7993 0.6110 +O 18.5311 1.0246 0.0805 +H 17.2524 19.6674 11.4076 +O 2.0205 3.9562 17.7874 +H 12.5420 8.3508 10.4082 +O 2.6608 3.9555 2.4104 +H 18.3652 12.7880 2.1350 +O 5.2360 16.8194 15.1357 +H 18.1432 9.6989 2.4470 +O 13.8908 13.4850 7.9863 +H 6.0632 0.2393 6.5718 +O 3.3055 6.4338 19.5186 +H 8.2891 1.5510 9.8865 +O 13.0168 1.5444 16.0463 +H 7.0307 3.2212 13.6288 +O 7.2125 4.3619 1.1103 +H 13.9520 5.1669 15.2683 +O 8.7517 8.3100 16.6957 +H 7.6834 11.8051 15.3110 +O 5.0345 14.5101 0.5932 +H 3.9403 14.5168 8.9935 +O 8.8828 19.4028 0.2608 +H 10.8837 5.1503 0.2337 +O 2.6860 10.4795 4.2382 +H 10.1844 15.8635 0.7449 +O 6.1568 9.7902 13.9107 +H 2.6055 11.1710 17.6960 +O 7.6916 0.0390 1.2702 +H 17.4654 9.2024 7.4754 +O 2.8524 11.3358 19.9972 +H 3.8952 1.2022 0.9165 +O 12.4667 9.1465 2.7188 +H 14.5781 11.1160 10.6115 +O 15.4633 5.9085 2.5317 +H 13.4096 8.7840 19.8451 +40 20.0 20.0 20.0 +frame 233 +O 15.6668 3.5515 8.8612 +H 4.8548 11.1264 1.1178 +O 14.2519 10.7457 5.9290 +H 5.1944 16.3627 3.4890 +O 6.5494 8.4315 9.9007 +H 19.3804 14.0884 0.6445 +O 18.4317 1.4197 0.2549 +H 17.0766 19.4496 11.6140 +O 1.9290 3.7053 17.7866 +H 12.1876 8.5595 10.4222 +O 2.7217 4.5234 2.3505 +H 18.0883 12.9114 2.3123 +O 5.3168 17.0853 14.7582 +H 17.9688 9.4730 2.6219 +O 14.2067 13.4122 7.7630 +H 5.8544 0.6777 6.9728 +O 3.1361 6.6337 19.2398 +H 8.1893 1.0672 9.9405 +O 12.8834 1.4480 15.8832 +H 7.0839 2.9202 13.6703 +O 7.7643 4.0915 1.2198 +H 14.1311 5.4621 15.1134 +O 9.3517 7.9896 16.8493 +H 8.0675 11.9838 15.0075 +O 3.8093 15.1309 0.5890 +H 3.9479 14.9924 8.7381 +O 9.2320 19.1377 19.9992 +H 10.5638 5.0744 19.4321 +O 3.0767 10.2289 4.5095 +H 10.3944 15.7250 0.3321 +O 6.0708 10.1210 13.7464 +H 2.6070 10.7089 17.8837 +O 8.0832 0.0525 1.3348 +H 17.6977 9.2064 7.4329 +O 2.8613 11.2958 0.3608 +H 3.9815 1.1397 1.3460 +O 12.4976 9.2484 2.5557 +H 13.9851 10.8828 10.0667 +O 15.5245 5.5344 2.7566 +H 13.4519 8.6990 0.2487 +40 20.0 20.0 20.0 +frame 234 +O 16.1933 3.4523 8.8026 +H 4.8250 11.5485 0.6843 +O 14.4709 10.6485 5.9169 +H 5.2080 16.0743 3.5723 +O 6.8530 8.3216 9.7174 +H 18.9507 13.8637 0.9196 +O 18.5702 2.5652 0.4217 +H 17.0519 0.1664 12.0354 +O 2.5830 3.8776 17.9441 +H 11.5802 8.2494 10.3096 +O 2.1248 4.3059 2.0337 +H 18.5704 12.7286 2.1287 +O 5.5240 16.6768 14.7289 +H 17.8928 10.0213 2.6865 +O 13.9661 13.4007 7.9421 +H 5.3539 0.5374 7.2423 +O 3.7253 6.2325 18.8720 +H 7.9783 1.0053 10.0712 +O 13.0181 1.4957 15.9708 +H 7.3512 2.7284 13.9790 +O 8.2750 3.9404 1.5735 +H 13.7712 5.5593 14.9755 +O 9.0957 8.6483 17.1151 +H 8.6837 12.5930 15.2541 +O 4.2810 15.2970 0.6686 +H 4.0082 15.1212 8.6780 +O 8.9876 19.2849 0.5095 +H 10.6570 5.0627 19.5407 +O 2.9677 10.3684 4.1412 +H 10.2566 15.8462 0.3616 +O 5.8835 9.8244 14.1575 +H 2.8591 10.4969 17.7291 +O 7.7340 19.8303 2.4849 +H 17.0318 9.7239 7.0882 +O 2.2405 11.3422 0.7295 +H 4.2891 1.3366 1.8318 +O 12.9460 9.5153 3.0466 +H 13.7754 10.8508 10.7609 +O 15.0742 5.2444 2.2392 +H 13.4407 8.4458 19.9922 +40 20.0 20.0 20.0 +frame 235 +O 15.9494 3.6947 8.6862 +H 4.5816 11.5925 0.5464 +O 14.0776 11.1555 5.5701 +H 5.1870 16.5713 3.1634 +O 6.6286 8.9449 9.7726 +H 19.2187 14.2487 1.1536 +O 18.5517 2.7402 0.6338 +H 16.9333 0.5628 12.3678 +O 2.2146 3.9737 17.5479 +H 11.6804 8.1143 9.6832 +O 1.7851 4.2337 1.6827 +H 19.0284 12.4105 2.9103 +O 5.2999 16.7214 14.6428 +H 18.0860 10.2773 2.4457 +O 14.2148 13.0444 8.1868 +H 4.9839 0.7471 7.6433 +O 3.7401 6.1019 18.9738 +H 8.4916 1.0361 10.2028 +O 12.8362 1.5488 15.6756 +H 7.4032 2.6618 13.9986 +O 8.1163 3.8020 1.4991 +H 13.8257 5.2235 14.4062 +O 8.9557 8.5816 17.4523 +H 9.1458 12.4501 15.2651 +O 4.0666 14.8159 0.7759 +H 3.8919 14.8526 9.3328 +O 8.2678 18.8659 0.9851 +H 10.7584 5.0327 19.8934 +O 3.3784 10.8084 4.1378 +H 10.2801 15.9052 19.6519 +O 5.3067 10.1902 13.4030 +H 2.9187 10.4645 17.6852 +O 7.8963 0.1097 2.0159 +H 16.5460 9.3670 6.9324 +O 1.8825 11.2829 0.3932 +H 4.4534 2.0457 1.5684 +O 12.8922 9.2837 2.9978 +H 13.4622 10.7569 10.4895 +O 15.0234 5.2700 2.3417 +H 13.2316 7.9251 19.5393 +40 20.0 20.0 20.0 +frame 236 +O 16.0243 3.5964 9.0153 +H 4.4397 12.1896 0.6897 +O 13.8143 11.2000 5.5103 +H 5.3016 16.8102 2.9370 +O 6.3846 9.4724 10.5243 +H 18.9944 14.2945 1.4166 +O 18.3060 2.7904 0.8633 +H 16.9820 0.1451 12.6061 +O 2.2621 4.0335 17.7530 +H 11.6739 8.2290 9.3036 +O 1.9921 4.2790 1.8256 +H 19.1595 12.5550 2.6715 +O 5.7426 16.3923 14.7682 +H 17.4492 10.4339 2.2293 +O 14.3288 12.8402 7.6972 +H 4.9476 0.4681 7.3782 +O 3.7206 6.0431 18.6417 +H 8.7026 0.9192 10.5145 +O 12.7403 1.2264 15.3884 +H 7.2327 2.8413 14.1563 +O 8.0125 3.4974 1.6627 +H 13.9108 5.0062 14.7014 +O 9.3062 8.9446 18.0221 +H 9.1049 12.6013 15.3258 +O 3.4294 14.7629 0.7787 +H 3.8945 14.9003 8.9761 +O 8.2544 18.6239 1.0409 +H 10.6359 4.7830 19.8858 +O 3.6573 10.9363 4.2017 +H 10.5028 15.9338 19.2840 +O 5.2638 9.6006 13.5258 +H 2.6673 10.5831 17.6987 +O 8.1487 0.0196 1.5960 +H 15.8659 9.1730 7.4694 +O 2.0913 11.3489 0.5867 +H 4.7622 1.5985 2.0867 +O 12.7743 9.1558 2.9432 +H 13.5727 10.8404 10.3549 +O 15.4605 4.8061 1.9957 +H 12.9976 8.0058 19.4821 +40 20.0 20.0 20.0 +frame 237 +O 16.0353 3.6110 8.7151 +H 4.7933 12.3121 0.7613 +O 14.0167 11.1300 5.5907 +H 4.7913 16.3477 3.2898 +O 6.1082 9.8488 10.6088 +H 18.8563 13.8323 1.5749 +O 18.6688 2.6061 0.8849 +H 16.9746 19.9131 12.8041 +O 1.6830 4.0425 17.4843 +H 12.0728 7.6594 9.4619 +O 2.0045 4.5877 1.6575 +H 18.7687 12.0305 2.7455 +O 5.7943 16.2825 14.7677 +H 17.3322 10.3252 2.6156 +O 13.7644 12.3463 7.4090 +H 5.0388 1.0603 7.5218 +O 3.6725 6.1093 18.7833 +H 8.3030 1.3640 10.7326 +O 12.8753 1.5235 15.3526 +H 6.5159 2.9733 13.6531 +O 8.1558 4.0033 1.7746 +H 13.4079 5.0986 14.6806 +O 9.3934 8.7503 18.4074 +H 9.0689 12.4907 16.0394 +O 3.2829 14.9750 1.3058 +H 3.3460 14.3705 8.8499 +O 7.7914 18.8648 0.4677 +H 10.8437 5.2881 19.9984 +O 3.5299 10.8032 3.9849 +H 10.3591 15.8137 19.4259 +O 4.9015 9.6753 13.1431 +H 2.4634 10.2864 18.2258 +O 7.8273 19.7308 1.9569 +H 15.7886 9.6783 7.8528 +O 2.1834 11.8465 1.3830 +H 4.4145 2.0128 1.8226 +O 12.8908 9.2944 3.6368 +H 13.3110 10.6685 10.3542 +O 15.8003 4.7343 2.1192 +H 12.8982 8.8145 18.6902 +40 20.0 20.0 20.0 +frame 238 +O 15.7071 3.6668 8.5955 +H 4.9571 12.4828 0.5581 +O 14.3459 10.7516 5.7705 +H 4.3168 16.0144 2.5883 +O 5.8682 9.6961 11.1423 +H 19.1581 14.0914 1.6337 +O 18.7140 2.5717 0.0304 +H 16.8469 19.5544 12.7531 +O 1.7946 4.1179 17.4541 +H 12.1403 7.5290 9.7625 +O 2.0968 4.8926 1.4396 +H 18.8714 11.4555 3.0347 +O 5.5606 16.4325 15.1303 +H 17.0188 10.9063 2.2677 +O 14.1978 12.8638 7.5371 +H 5.0941 1.1019 7.3952 +O 4.0197 5.9810 18.6716 +H 8.3429 1.7100 10.6115 +O 12.6245 1.4513 15.3212 +H 6.8118 2.4003 14.2841 +O 7.9302 3.1342 1.8800 +H 13.2332 5.2090 15.0324 +O 9.2170 8.8642 18.1613 +H 8.7451 12.4147 16.0383 +O 3.6093 14.3013 1.5544 +H 3.5225 13.8384 8.7658 +O 7.6486 19.0384 0.3052 +H 11.0535 4.9713 0.0463 +O 3.6705 11.4352 4.1600 +H 9.9943 15.8752 19.5305 +O 4.8379 9.4552 12.9063 +H 2.6936 10.8185 17.9039 +O 8.1703 0.3052 1.2031 +H 15.6298 9.7623 7.8338 +O 2.3913 11.7403 0.9847 +H 4.2229 2.4939 1.8680 +O 12.3323 8.7921 3.9629 +H 13.1498 10.6613 10.6582 +O 16.4841 4.9387 1.8389 +H 13.3522 9.1156 18.0119 +40 20.0 20.0 20.0 +frame 239 +O 15.8038 3.7030 8.4059 +H 5.2963 12.3933 0.3122 +O 14.0992 10.9988 6.0443 +H 4.3838 15.9328 2.3746 +O 6.2523 9.3535 10.8333 +H 18.8041 14.2381 1.7534 +O 18.9588 2.4595 19.8321 +H 16.7912 19.1412 13.0228 +O 1.6928 3.7457 17.8091 +H 11.7718 7.0006 9.8254 +O 2.1114 4.7336 1.6552 +H 19.3797 11.5636 3.4105 +O 5.4584 16.4032 15.0517 +H 16.9550 10.9336 2.4379 +O 14.5618 12.5617 7.6310 +H 4.9688 0.8821 7.0370 +O 4.1644 5.5320 18.1085 +H 8.4147 1.7532 10.3978 +O 12.3968 1.0109 15.5271 +H 6.5893 2.8149 14.0351 +O 7.9936 3.7979 1.7812 +H 13.4803 4.8138 15.1579 +O 9.0433 8.4270 17.6089 +H 8.5709 12.8252 15.7518 +O 3.5486 13.9395 1.5127 +H 3.7613 13.4479 9.2278 +O 7.6410 18.9457 0.2820 +H 10.9221 4.7963 0.1344 +O 3.5789 11.5396 4.3461 +H 10.0414 15.6355 19.5893 +O 5.0560 9.1823 12.5851 +H 2.9063 10.5420 17.7504 +O 8.2581 0.2895 1.0520 +H 15.6932 10.0157 8.4202 +O 2.5328 11.5089 19.9373 +H 4.5212 2.2870 1.6653 +O 12.2653 8.7517 4.1535 +H 13.3570 10.1204 10.5987 +O 17.2498 4.8931 2.2005 +H 13.3647 9.1372 18.1441 +40 20.0 20.0 20.0 +frame 240 +O 15.5764 3.0452 8.4391 +H 5.0757 12.2859 0.5133 +O 14.3539 11.4229 6.1115 +H 4.4492 15.8294 2.6346 +O 6.2145 9.5325 10.8457 +H 19.1170 14.3943 1.9286 +O 19.2991 2.2057 19.8712 +H 17.0214 18.9644 12.6371 +O 1.7263 3.5582 17.3355 +H 11.8238 6.5750 9.7777 +O 2.4037 4.5621 1.9466 +H 19.4312 11.6282 2.8299 +O 5.5991 16.6043 14.8456 +H 17.0003 10.8950 3.0673 +O 14.7126 12.7409 7.2206 +H 4.9908 0.6456 7.1031 +O 4.6104 5.5494 17.4310 +H 8.2748 1.6748 10.1415 +O 12.1292 0.6327 14.9499 +H 6.5935 2.6210 13.7936 +O 7.9358 3.9372 1.8953 +H 13.4942 4.6003 14.7174 +O 8.8427 9.0829 17.5274 +H 8.1651 12.3868 16.1247 +O 3.5020 13.7353 1.9978 +H 4.0145 13.3809 9.1017 +O 7.6462 19.1589 0.2863 +H 10.5393 5.0640 19.7948 +O 3.6312 11.3341 4.2830 +H 10.1772 16.2225 19.2520 +O 4.4828 9.0023 12.5322 +H 3.1847 11.0912 17.6948 +O 8.0054 19.6617 0.6357 +H 16.0845 10.1066 8.0511 +O 2.2225 11.8062 0.3296 +H 4.6465 2.2142 1.6146 +O 12.5546 8.9156 3.8547 +H 13.4526 9.9735 11.0744 +O 17.6298 4.8841 2.7043 +H 13.5288 8.7687 18.3449 +40 20.0 20.0 20.0 +frame 241 +O 15.1836 2.8754 8.6583 +H 5.1561 12.1202 0.3295 +O 14.0906 11.4007 5.8641 +H 4.7515 16.5233 2.5076 +O 6.5501 9.1242 10.8057 +H 18.7245 14.5902 2.1127 +O 19.4579 2.4660 19.6107 +H 16.5352 18.9870 12.9877 +O 1.6318 3.4886 17.4487 +H 11.9481 6.9393 9.6487 +O 2.2432 4.7908 2.4630 +H 19.3394 11.3872 3.0595 +O 5.9448 16.6506 14.8520 +H 17.2414 11.2727 2.9200 +O 14.7676 12.7187 7.0257 +H 4.6037 0.3858 7.4831 +O 4.9177 5.4245 17.8822 +H 8.2021 1.6322 10.0878 +O 12.2310 0.5427 15.0873 +H 6.1684 2.4375 13.7707 +O 7.9958 4.0525 1.9653 +H 13.3742 4.7574 14.6403 +O 8.2882 8.7346 17.9495 +H 8.3535 11.6579 16.0754 +O 3.2626 13.5976 2.1625 +H 4.2385 12.8085 8.9084 +O 7.6595 19.0084 0.3064 +H 10.2339 5.0640 19.7936 +O 4.2523 11.2564 4.2668 +H 10.7613 16.4601 19.6873 +O 4.4176 8.9391 12.5725 +H 3.5969 11.0026 17.4705 +O 8.1873 19.8530 0.4985 +H 16.1617 10.5873 7.6982 +O 1.5018 11.7287 0.4115 +H 4.6560 2.5005 1.6568 +O 12.5769 8.8254 3.8187 +H 13.3689 10.3342 11.2096 +O 17.4128 4.4010 2.9040 +H 13.2523 8.7120 18.7401 +40 20.0 20.0 20.0 +frame 242 +O 15.1866 3.2302 8.6082 +H 5.1072 11.7841 0.5437 +O 14.4647 11.5573 6.0889 +H 4.2141 17.0897 2.1344 +O 6.0236 9.3058 10.9636 +H 18.3511 14.8803 1.9265 +O 19.5133 2.6134 19.4905 +H 16.7939 18.5875 12.6835 +O 1.5569 3.1352 17.5288 +H 11.7283 6.9741 9.4681 +O 2.1759 4.8011 2.4031 +H 19.8344 11.7079 3.2634 +O 5.7400 16.7457 15.1014 +H 17.0456 11.4555 2.9336 +O 14.4385 12.6653 6.9913 +H 5.0834 0.8539 7.2198 +O 4.9552 5.3467 18.0390 +H 8.1981 1.8049 10.0472 +O 13.0035 0.4262 15.2270 +H 6.4434 2.7080 13.6148 +O 8.4319 3.9239 2.0734 +H 13.0441 4.6187 14.3181 +O 8.2757 8.4201 18.0823 +H 8.0154 11.9816 16.1829 +O 3.5187 13.6063 2.1859 +H 3.6974 12.6769 8.4577 +O 7.9450 19.3991 0.5502 +H 10.3866 4.9218 19.5983 +O 4.1333 11.3041 4.8338 +H 10.6899 16.4736 19.8717 +O 4.2177 9.0191 13.2052 +H 3.8442 10.6171 17.7420 +O 8.3655 0.0437 0.3295 +H 16.0168 10.7179 7.7043 +O 1.1774 11.6296 0.2785 +H 4.7075 2.4565 1.3183 +O 12.8693 8.9349 3.5390 +H 13.2292 10.4750 11.0361 +O 17.1190 3.9859 2.5176 +H 12.2217 8.3576 18.7556 +40 20.0 20.0 20.0 +frame 243 +O 15.3540 3.3463 8.8777 +H 4.9552 11.4963 0.6114 +O 14.6217 12.0859 5.8420 +H 4.5223 17.5081 2.3927 +O 5.6540 9.4661 11.4466 +H 18.6356 15.2238 1.7263 +O 0.1470 2.9963 18.7456 +H 16.9026 18.9566 12.9060 +O 1.5676 3.2812 17.7294 +H 11.8024 6.8914 9.7821 +O 1.8941 4.4985 2.5323 +H 19.6698 11.7163 3.5423 +O 5.7803 16.6432 14.7615 +H 16.8161 11.2109 2.7681 +O 14.1925 12.8601 6.8128 +H 5.0907 0.6293 6.4829 +O 5.1418 5.2643 17.8261 +H 7.4072 1.7115 10.1212 +O 13.4550 0.4125 14.9325 +H 6.6639 2.6383 13.2975 +O 8.6845 3.6135 1.7097 +H 13.2117 4.2222 13.8941 +O 8.2404 8.6296 18.3538 +H 7.6121 12.1094 16.4621 +O 3.1321 14.0458 2.2877 +H 3.7580 12.6110 8.8213 +O 8.1774 19.4898 0.1610 +H 10.8161 4.8497 19.6507 +O 4.6024 11.8596 5.5030 +H 10.8722 16.5202 19.6787 +O 3.9740 9.2526 12.6991 +H 3.5408 10.7121 17.8560 +O 8.5602 19.7310 0.2094 +H 16.4237 11.2167 7.5922 +O 1.2318 11.6817 0.5186 +H 4.3279 2.6778 1.2797 +O 13.2013 8.9074 3.3540 +H 12.7483 10.7267 10.6897 +O 18.1544 4.2349 2.7240 +H 12.2670 8.6582 18.6477 +40 20.0 20.0 20.0 +frame 244 +O 15.1649 3.9321 9.0454 +H 5.1711 11.1133 1.2126 +O 14.6946 11.6626 6.0463 +H 4.5305 17.5628 2.4471 +O 5.4007 9.7318 11.7558 +H 18.4415 15.0518 2.0813 +O 19.7846 3.3014 18.4452 +H 16.7245 19.4086 13.3311 +O 1.3013 2.9081 17.2461 +H 11.0842 6.6749 9.8384 +O 1.8324 4.8378 3.0185 +H 0.1645 11.5901 2.8594 +O 5.8518 16.9662 14.5574 +H 17.5546 10.6225 2.6132 +O 14.3623 12.3474 7.2108 +H 4.5410 0.9813 6.4463 +O 5.2309 4.9915 18.1710 +H 8.0504 1.4420 10.3020 +O 13.2903 0.1121 15.0827 +H 6.7813 2.8418 13.5611 +O 8.7575 3.6551 2.0545 +H 13.8175 4.0844 14.1369 +O 8.4218 8.6104 18.2031 +H 7.4798 12.0351 16.4340 +O 2.7750 13.9371 1.8654 +H 3.8138 12.6994 8.3387 +O 8.1737 19.5295 19.9233 +H 10.6362 4.8888 19.5544 +O 4.2339 11.9207 5.7872 +H 10.5430 16.4108 19.6705 +O 4.0680 9.3631 12.4830 +H 3.4065 10.2657 18.3046 +O 8.5040 19.9644 19.6582 +H 16.0121 11.3476 8.1467 +O 1.4010 11.6725 0.1299 +H 4.2577 3.2495 1.0396 +O 13.2247 8.7899 3.1836 +H 12.3887 10.5695 10.7247 +O 17.6275 4.5835 3.3748 +H 12.3052 8.6986 18.8023 +40 20.0 20.0 20.0 +frame 245 +O 14.9510 3.7561 9.2902 +H 5.5793 11.8973 0.9983 +O 14.8761 11.7327 6.5548 +H 4.3241 17.6388 2.2709 +O 5.6690 9.5341 11.9976 +H 18.6609 15.0496 2.2158 +O 19.2830 3.4234 17.9444 +H 16.7575 19.5788 12.9779 +O 1.3140 2.6794 16.8248 +H 10.7912 6.7963 9.6180 +O 1.7073 4.5529 2.8984 +H 0.0376 11.6933 2.7671 +O 5.6610 16.9333 14.4937 +H 17.1779 10.2632 2.5379 +O 14.6247 12.1809 6.7729 +H 4.4871 1.0760 6.4202 +O 5.3126 5.1129 18.1105 +H 7.7910 1.4632 10.4169 +O 13.7763 0.3516 15.4585 +H 6.6246 3.1239 13.4214 +O 8.9030 3.9675 2.2441 +H 13.8257 3.3589 14.3871 +O 8.3891 8.3318 18.1344 +H 7.2812 12.3238 16.6143 +O 2.9621 13.5998 1.5648 +H 3.2026 12.6476 8.3465 +O 8.2999 19.7060 0.2183 +H 10.9368 5.3191 19.9712 +O 4.5998 11.6041 6.0091 +H 10.3486 16.7604 19.4098 +O 3.4993 9.6537 12.0916 +H 3.3821 9.8113 18.3915 +O 8.5171 0.0861 19.8273 +H 16.0894 12.1104 7.7104 +O 1.2193 12.4397 0.1633 +H 4.5421 3.3587 0.6873 +O 13.5924 8.4066 2.9611 +H 12.2385 10.2390 10.6838 +O 17.6077 5.1060 2.8677 +H 12.5890 8.7645 18.3182 +40 20.0 20.0 20.0 +frame 246 +O 14.5003 4.2766 9.5628 +H 5.0688 11.8569 0.9191 +O 14.7821 11.7604 6.5312 +H 4.2154 17.8422 2.0778 +O 5.7966 9.3065 11.9206 +H 18.6373 15.0889 2.6199 +O 19.1842 3.5529 17.9110 +H 16.8729 19.7284 13.3063 +O 1.6281 2.9469 16.9699 +H 10.5015 6.4696 10.0589 +O 1.4129 4.8254 3.1366 +H 0.5134 11.9257 2.3257 +O 5.5904 17.1706 13.9438 +H 16.3175 10.3299 2.9777 +O 14.4468 11.6105 7.0845 +H 4.3053 1.4823 6.7769 +O 5.2824 5.7984 18.4302 +H 7.5185 1.6319 10.1202 +O 13.6027 0.7038 15.9390 +H 7.0091 3.3995 13.3057 +O 9.0105 3.4160 2.1396 +H 13.8043 3.3700 14.3082 +O 8.6366 8.4152 18.0243 +H 7.2180 12.1360 16.7040 +O 3.1932 13.3238 1.4175 +H 3.4747 12.4519 8.1133 +O 8.0939 19.3329 0.0861 +H 10.9829 5.0077 19.7211 +O 4.3163 11.8494 5.8072 +H 10.0236 17.2082 18.9702 +O 3.7675 9.5092 11.9499 +H 3.4325 10.1635 18.4615 +O 8.4274 0.0492 19.6649 +H 15.7655 12.4013 7.5920 +O 1.0053 12.4481 0.3054 +H 4.2792 3.8256 1.0321 +O 13.6879 8.4892 2.8107 +H 12.3106 10.2369 10.9208 +O 17.6118 5.4089 3.0669 +H 12.4518 8.3165 18.8667 +40 20.0 20.0 20.0 +frame 247 +O 14.9171 4.6524 9.2546 +H 4.3966 11.7200 1.0495 +O 14.8034 11.5687 6.0709 +H 4.2912 17.9093 1.6376 +O 5.2700 9.3813 11.3205 +H 18.3293 14.7362 2.6454 +O 19.4965 3.1117 17.7449 +H 16.9156 19.5401 13.8992 +O 1.5153 3.0372 17.3589 +H 10.8586 6.7211 10.1059 +O 1.4765 5.2644 2.5815 +H 0.6351 11.7234 2.5117 +O 5.4179 17.2414 13.6692 +H 16.3846 10.4881 2.7595 +O 14.2311 11.4974 7.1523 +H 4.5873 1.2229 6.9871 +O 6.3236 6.3016 19.4450 +H 7.2990 1.5911 9.9370 +O 13.8022 0.7337 16.1173 +H 6.9007 3.4168 13.1736 +O 9.3377 3.0767 2.2894 +H 13.8270 3.2805 14.2927 +O 8.7425 8.1442 17.7811 +H 7.5237 12.0066 17.0853 +O 3.2734 13.4545 1.6352 +H 3.4630 12.3571 7.7224 +O 8.2876 19.1948 0.3551 +H 10.9081 5.3852 0.2070 +O 4.5147 12.0387 5.3163 +H 10.0284 17.1442 19.0530 +O 4.0010 8.9043 11.2949 +H 3.2071 10.5804 18.2866 +O 8.5496 19.7064 19.5715 +H 15.7833 12.0092 7.0937 +O 0.8903 12.1220 0.0479 +H 4.0916 3.6002 1.3682 +O 13.4719 8.3792 3.0164 +H 12.3985 10.4705 11.1211 +O 17.8427 5.2666 2.9730 +H 12.5699 8.6862 18.8011 +40 20.0 20.0 20.0 +frame 248 +O 14.6795 4.8935 9.7824 +H 4.0730 12.0072 1.2339 +O 14.6991 12.1908 5.8617 +H 4.3681 18.2587 2.0074 +O 5.3110 9.3715 11.7840 +H 18.5566 14.6761 3.0082 +O 19.4589 3.1439 17.7518 +H 16.6313 19.8575 13.7617 +O 1.2171 2.7031 17.8333 +H 10.3401 6.4540 10.1479 +O 2.0319 5.2050 1.8067 +H 0.8619 12.0286 2.6266 +O 5.8212 16.5769 13.1672 +H 16.0549 10.3818 2.5156 +O 14.0650 11.7581 6.9028 +H 4.4848 0.7180 7.0149 +O 6.6281 6.9645 19.7813 +H 7.3584 1.8074 10.1254 +O 13.9399 1.3208 16.1312 +H 6.7935 3.2571 13.6633 +O 9.4844 2.4642 2.7998 +H 13.7288 3.4605 14.3895 +O 8.6441 7.9514 17.6078 +H 7.8365 11.9459 16.9141 +O 3.2250 13.1495 1.6161 +H 3.6757 12.6661 7.4616 +O 8.5057 19.2296 0.4611 +H 10.7863 5.4478 0.5795 +O 4.8445 12.4894 5.3825 +H 9.8515 17.5536 18.7131 +O 4.5946 8.5385 11.1199 +H 3.0949 10.3343 17.9318 +O 8.5912 0.1834 19.8221 +H 15.4604 11.8099 6.7552 +O 0.9045 12.0583 19.8393 +H 3.7038 3.5965 0.6176 +O 13.9361 8.4912 3.3986 +H 12.4290 10.6257 10.8124 +O 17.3383 5.1425 3.1431 +H 12.6522 8.8581 18.7937 +40 20.0 20.0 20.0 +frame 249 +O 14.6536 4.1848 10.1992 +H 4.0061 11.5608 1.0675 +O 14.9471 12.7653 6.1802 +H 4.4296 18.3107 1.5837 +O 4.9828 8.7757 11.9756 +H 18.5416 15.2538 2.7285 +O 19.6652 3.0309 17.9933 +H 16.4966 19.9701 13.7931 +O 1.1069 2.7036 17.7449 +H 9.7967 6.6470 10.7037 +O 2.6355 4.8717 1.6849 +H 1.1931 11.7699 2.9277 +O 6.1815 16.1689 13.0493 +H 16.3820 9.8925 2.5991 +O 13.9720 11.1936 7.2395 +H 4.4840 0.7335 6.9683 +O 6.3534 6.4982 19.5332 +H 7.6690 1.8136 10.3444 +O 13.8713 1.0602 15.9768 +H 7.0773 3.1977 13.7264 +O 9.9015 3.0130 2.8234 +H 14.0919 3.9346 14.2774 +O 8.4749 8.1922 17.7293 +H 7.6999 11.7928 17.3492 +O 3.1339 13.6137 2.0647 +H 3.0789 13.2223 7.0011 +O 8.6675 19.3408 0.3027 +H 10.8452 5.2545 0.6428 +O 5.2263 12.7200 5.4282 +H 9.7115 17.8557 18.7317 +O 4.8342 8.6232 11.3332 +H 2.8769 10.4078 17.2890 +O 8.7563 0.6004 19.9323 +H 15.3223 11.3535 6.7336 +O 1.0764 11.8999 19.7436 +H 3.6407 3.9983 0.5018 +O 13.6862 8.7993 3.3102 +H 12.4351 10.6957 10.7683 +O 17.8840 5.3941 3.0820 +H 12.5284 8.3695 18.7860 +40 20.0 20.0 20.0 +frame 250 +O 14.4416 4.0389 10.4354 +H 4.3613 11.1575 0.8040 +O 15.0628 12.6811 6.2693 +H 4.2588 17.9670 1.8150 +O 5.1661 8.4890 12.7000 +H 18.3595 15.2039 3.0316 +O 19.3907 2.8059 18.1983 +H 16.5626 19.8846 13.6812 +O 0.8093 2.5835 18.0280 +H 9.9184 6.3037 10.9613 +O 2.6944 4.9165 1.9303 +H 1.2238 11.8241 2.4576 +O 6.6758 16.1033 13.2666 +H 16.3036 9.5096 2.7755 +O 13.8408 10.7051 7.5272 +H 4.6073 1.1960 7.1713 +O 6.2675 6.0765 19.9087 +H 7.6229 1.5609 10.6109 +O 14.0111 1.0204 15.9716 +H 7.0436 3.0551 14.1178 +O 9.7067 2.8256 2.9041 +H 14.2229 3.8606 14.4607 +O 8.4985 8.1526 17.7079 +H 7.3832 12.3523 17.4766 +O 3.0783 13.7632 2.5779 +H 3.1433 13.5630 6.5361 +O 8.4005 19.5767 0.0288 +H 10.3313 5.5726 0.4228 +O 5.2374 12.7796 5.7766 +H 9.6115 18.0639 18.9285 +O 5.1090 8.9955 11.5710 +H 2.5386 10.9116 17.1676 +O 8.6021 0.6724 19.9770 +H 15.6048 11.1564 6.4982 +O 0.9111 11.9491 0.3630 +H 3.9586 3.7349 0.6363 +O 13.9741 8.9389 3.7059 +H 12.7380 9.9628 10.6284 +O 17.7591 5.8221 2.9140 +H 12.0800 8.7015 19.1704 +40 20.0 20.0 20.0 +frame 251 +O 13.8901 4.0387 10.3857 +H 4.5024 11.3563 0.4903 +O 14.7079 12.5599 5.9410 +H 4.5618 17.9122 1.8982 +O 4.9617 8.7730 12.5628 +H 18.5606 15.2971 2.7423 +O 19.2729 2.8085 18.1017 +H 16.3742 0.0095 13.5272 +O 0.6610 2.2462 18.1203 +H 9.6000 6.8207 10.7463 +O 2.5801 4.8280 1.9693 +H 0.8763 11.4344 2.5264 +O 7.4216 16.3866 13.1554 +H 15.9455 9.3834 2.9697 +O 13.4696 10.5274 7.8298 +H 4.7043 1.0820 7.1280 +O 6.3355 6.0000 19.8560 +H 6.8609 1.5421 10.6195 +O 15.0099 1.5056 16.4751 +H 7.3968 3.3494 14.1327 +O 9.5697 2.2827 2.9117 +H 15.2546 3.8546 14.4803 +O 8.5163 7.9051 17.8974 +H 7.3565 12.6197 17.4736 +O 2.6915 13.8271 2.3130 +H 2.6283 13.2364 6.2454 +O 8.3703 0.0282 19.9430 +H 9.8232 5.6399 0.5635 +O 5.1614 12.3266 5.4271 +H 9.2860 18.3620 18.6291 +O 4.7498 8.9803 11.3669 +H 2.5525 11.0144 17.2823 +O 9.0594 0.8545 0.2483 +H 15.4791 11.0318 7.1485 +O 0.6099 12.1803 19.7525 +H 4.0420 4.2880 0.7069 +O 14.0254 9.3211 3.7867 +H 12.8304 9.8530 10.4849 +O 17.6003 5.8057 2.4133 +H 12.7392 8.1010 18.7308 +40 20.0 20.0 20.0 +frame 252 +O 13.7354 4.4290 10.1576 +H 4.3871 11.7593 0.4780 +O 14.1765 12.7765 5.9013 +H 4.2661 17.9627 2.0486 +O 4.8373 8.3810 11.8897 +H 19.1262 15.8418 2.4160 +O 19.1642 2.3922 18.3166 +H 16.3649 0.4516 13.7157 +O 0.6910 2.5221 18.0866 +H 9.5158 6.4858 10.7241 +O 2.4820 5.0068 1.7303 +H 0.8086 11.0230 2.0273 +O 7.5784 16.0620 13.5321 +H 15.8292 8.7360 3.5158 +O 13.3580 10.6349 7.3940 +H 4.4467 0.9435 7.2080 +O 6.0287 5.6005 19.9684 +H 6.3951 2.1643 10.3476 +O 14.4366 1.2936 16.2062 +H 7.3900 2.9751 13.4147 +O 9.2764 2.0356 2.9525 +H 15.7925 3.6664 14.5989 +O 8.7251 8.7561 17.6268 +H 7.5591 12.2700 17.2461 +O 2.8429 13.9303 2.0318 +H 2.4140 13.6764 6.0807 +O 8.4913 19.6891 0.4252 +H 9.4884 5.5488 0.1928 +O 5.3011 12.3518 5.3651 +H 9.5980 18.3406 18.9624 +O 4.8524 9.3916 11.7878 +H 2.3769 10.9776 17.1026 +O 8.9394 0.8471 0.4775 +H 15.2811 10.8737 7.0122 +O 0.6502 12.2254 19.8352 +H 4.1058 4.3638 0.4047 +O 13.8033 9.0866 3.5616 +H 12.7256 10.1201 10.9563 +O 17.9905 6.1376 2.3400 +H 12.8141 7.9697 18.4579 +40 20.0 20.0 20.0 +frame 253 +O 14.1471 4.6041 10.2414 +H 4.4181 12.0769 0.1231 +O 14.2007 13.4816 5.2821 +H 4.0714 17.6094 1.9065 +O 4.9377 8.4619 12.3526 +H 18.8000 15.0835 2.4102 +O 19.0178 2.5170 18.4702 +H 16.0027 0.3639 13.7731 +O 0.0679 2.0925 17.9780 +H 9.2110 6.2978 10.7312 +O 2.6638 4.3004 1.9702 +H 0.7307 10.4461 2.0572 +O 7.2417 16.8349 13.2523 +H 15.7631 8.6564 3.6799 +O 13.0851 10.6945 8.1540 +H 4.0557 0.8874 6.9935 +O 6.1715 6.0543 19.3569 +H 6.2434 2.3058 10.7342 +O 14.6631 1.1704 15.8376 +H 7.3476 2.3915 13.5868 +O 9.5836 2.0715 3.0062 +H 15.9936 3.9723 14.4117 +O 9.1441 9.1708 17.7954 +H 7.8874 12.2802 17.5171 +O 2.5500 13.8594 2.2888 +H 2.4663 13.3628 6.3537 +O 8.5687 19.7686 0.4516 +H 9.4073 5.3769 0.3290 +O 5.0354 12.1330 5.6302 +H 9.5332 17.6867 19.0293 +O 5.1360 9.5210 12.2655 +H 2.6399 10.9721 17.2673 +O 9.1482 0.8447 0.3921 +H 14.9664 10.7466 7.2049 +O 0.9510 11.9570 19.5994 +H 3.9260 3.9496 0.3723 +O 13.8017 9.2984 3.2781 +H 12.4544 10.4840 10.6235 +O 18.0628 6.0367 2.3111 +H 12.9331 7.8870 18.5937 +40 20.0 20.0 20.0 +frame 254 +O 13.5920 4.6547 10.1130 +H 4.9869 12.0016 19.9279 +O 14.1611 13.6439 4.8466 +H 4.0661 17.3126 1.4627 +O 5.2194 8.5015 12.2426 +H 19.1794 14.7535 2.2632 +O 19.2486 2.0601 18.1890 +H 16.2743 19.8936 13.9851 +O 19.7046 1.8372 18.2430 +H 9.1554 6.3769 10.5123 +O 3.2943 3.6271 2.0961 +H 0.8217 10.2619 2.0204 +O 7.6095 16.3870 13.5070 +H 15.5476 8.2591 3.4727 +O 13.3868 10.8035 8.2198 +H 3.8459 1.2204 6.8566 +O 6.5515 5.6623 19.2822 +H 6.0157 2.4985 10.7518 +O 15.0891 0.9827 15.5426 +H 7.3892 2.2682 13.6888 +O 9.6762 1.4752 3.2901 +H 15.6008 4.0422 15.1091 +O 8.8723 9.7594 18.2435 +H 7.3978 12.3981 17.4648 +O 2.3510 14.0386 2.0890 +H 2.2999 13.2035 6.5066 +O 8.2221 19.4870 0.7199 +H 9.1463 5.2528 0.4041 +O 4.7368 11.6684 5.9918 +H 9.3197 17.6319 18.9682 +O 5.9109 9.4296 12.0087 +H 2.8763 11.2304 16.8316 +O 9.4122 0.7556 0.2597 +H 14.5766 10.5611 7.4305 +O 0.6746 12.0255 0.0707 +H 3.9740 3.8105 19.6708 +O 14.0742 9.5008 2.9566 +H 11.9538 10.0902 10.7105 +O 17.9435 6.2478 1.9457 +H 12.5605 8.3061 19.0088 +40 20.0 20.0 20.0 +frame 255 +O 13.4708 4.3016 10.1053 +H 4.3535 11.8560 0.5868 +O 14.1227 13.7520 4.7407 +H 3.7931 17.6930 1.6252 +O 5.4731 8.6759 12.9225 +H 18.6278 15.1772 1.8845 +O 19.8586 2.3657 18.1544 +H 15.9807 19.5844 14.4176 +O 0.0575 2.3801 18.3663 +H 8.6632 5.9807 10.9669 +O 3.1809 3.2738 1.8819 +H 0.9570 10.3561 2.6393 +O 7.1388 16.1615 13.8617 +H 15.6461 7.8890 3.1914 +O 13.5930 10.5587 8.4767 +H 4.0322 1.1178 6.8620 +O 6.7378 5.4387 19.0741 +H 6.2166 2.4089 10.4144 +O 14.8473 0.2669 16.1346 +H 6.7834 1.9249 12.9235 +O 9.8652 1.5717 3.5678 +H 15.2381 4.1734 15.0932 +O 8.9276 10.1867 18.3980 +H 7.2650 12.4784 16.9728 +O 2.5145 13.5275 2.4256 +H 2.5789 13.8042 6.8061 +O 8.1997 0.0531 19.8806 +H 9.0484 5.3730 19.8332 +O 4.7486 11.6304 6.1023 +H 9.6341 17.6135 18.9286 +O 5.8896 9.8730 12.0154 +H 2.9279 11.5702 16.8421 +O 9.2319 0.8099 0.3666 +H 14.7215 10.2255 7.4638 +O 0.7463 12.8457 19.5941 +H 3.9076 3.5801 18.5486 +O 13.5639 9.5623 2.5134 +H 12.2497 10.0732 10.6448 +O 18.2366 6.1848 1.6696 +H 12.5312 8.1396 19.3242 +40 20.0 20.0 20.0 +frame 256 +O 13.6550 4.0877 10.1607 +H 4.0039 12.1559 0.0008 +O 13.8562 13.5160 5.0571 +H 3.3688 17.7588 1.6801 +O 5.5944 8.2616 12.9298 +H 18.7581 14.8656 2.5151 +O 0.1912 1.9673 18.0506 +H 15.6580 19.5908 14.8846 +O 19.7889 2.3555 18.4324 +H 8.6813 5.8352 10.5420 +O 3.1352 3.2676 2.2066 +H 0.7419 10.2497 2.8150 +O 7.0281 16.1408 13.9306 +H 16.2598 7.5496 3.1649 +O 13.5746 10.8849 8.6785 +H 3.9383 1.4259 6.5177 +O 6.0461 5.9174 19.1255 +H 6.2534 2.1043 10.4715 +O 14.7611 19.4363 16.1977 +H 6.9290 2.3337 12.9524 +O 9.9298 1.8204 3.8648 +H 15.4392 4.4836 15.0369 +O 8.7263 10.1463 18.5457 +H 7.0529 12.3064 16.4252 +O 2.5590 13.3669 2.1318 +H 3.0340 13.8683 6.8310 +O 8.1969 0.3407 19.5526 +H 9.2986 5.2569 19.8455 +O 4.4524 11.3443 6.4482 +H 9.3782 17.8064 18.9041 +O 6.0011 9.6180 12.3785 +H 2.5161 11.3963 17.3202 +O 9.1265 0.6843 0.6850 +H 14.4192 10.5543 7.3151 +O 1.0253 12.9267 19.5308 +H 4.1773 3.5608 18.6770 +O 13.9387 9.5960 2.8890 +H 12.3385 10.2269 10.0231 +O 18.2326 6.2817 1.6544 +H 12.4345 8.1373 19.4411 +40 20.0 20.0 20.0 +frame 257 +O 13.4004 3.9136 10.2713 +H 3.8258 11.9263 19.3883 +O 13.8987 13.2282 5.0967 +H 3.3875 17.7310 1.9717 +O 5.9506 8.3548 12.9977 +H 18.7950 15.4072 2.9809 +O 19.8067 2.6262 18.1072 +H 15.5440 19.4244 14.7727 +O 19.8461 2.2680 18.1230 +H 8.4106 5.9305 10.5194 +O 3.4365 2.9009 2.8947 +H 0.9331 10.2153 3.2248 +O 6.9223 16.3281 14.4602 +H 16.3925 7.8971 3.0143 +O 13.9608 10.6105 8.0410 +H 3.9210 1.4080 6.5543 +O 5.7341 5.9921 19.7977 +H 6.4913 2.1201 10.8331 +O 14.1850 19.4989 15.9310 +H 6.8586 2.4978 12.9127 +O 9.9442 1.8299 4.1178 +H 15.3823 4.4069 15.8302 +O 8.9860 10.0655 18.9672 +H 6.9596 12.4623 16.5433 +O 2.1986 13.5710 2.1981 +H 2.6471 14.0962 7.4040 +O 7.8075 0.4369 19.4628 +H 9.5153 5.4375 0.3770 +O 4.4656 10.9685 6.7022 +H 10.1967 18.4926 18.9819 +O 5.8095 9.5330 12.3731 +H 1.6386 11.6644 16.9608 +O 9.0226 1.3762 0.4414 +H 14.0609 10.6135 7.6010 +O 0.8537 13.1203 19.9670 +H 4.1089 2.9321 18.3236 +O 14.1013 9.2710 2.4958 +H 12.5683 10.0768 10.1330 +O 18.1666 6.2922 1.1617 +H 11.9816 8.3314 19.3081 +40 20.0 20.0 20.0 +frame 258 +O 13.2748 4.2911 10.1814 +H 4.1595 11.9106 19.4169 +O 14.0826 13.1771 5.1329 +H 3.1924 17.5819 2.0388 +O 5.8130 8.4113 12.6323 +H 19.2310 15.2582 3.1009 +O 19.5457 1.9855 18.2015 +H 15.8907 19.9116 14.5618 +O 0.0901 1.2062 18.4858 +H 8.7948 5.8181 10.4726 +O 3.5394 3.0778 3.6287 +H 1.0905 10.1671 2.7533 +O 6.9489 16.4345 13.6353 +H 15.9767 8.0200 3.0199 +O 14.1262 10.5576 8.0292 +H 4.3857 1.1241 6.6363 +O 6.2330 6.9298 19.8867 +H 6.5423 2.1047 10.5759 +O 14.3612 19.1151 16.1092 +H 6.7582 2.5642 12.8954 +O 9.7976 1.7669 4.2551 +H 15.5776 4.4081 15.8143 +O 9.4797 10.2361 19.0925 +H 6.7231 12.6258 16.2540 +O 1.9841 13.6235 1.9640 +H 2.5917 14.3961 7.3476 +O 7.3616 0.2789 19.5623 +H 9.4909 6.1387 0.0274 +O 4.0195 10.8620 6.6217 +H 10.4736 18.4960 18.8347 +O 5.7211 9.8128 11.8816 +H 1.9705 11.7109 17.5722 +O 8.8822 1.3494 0.6148 +H 13.5931 10.2375 7.3100 +O 0.9009 13.5130 19.8611 +H 4.4317 2.4754 18.0996 +O 13.7680 8.8971 2.4128 +H 13.1490 10.1698 10.1520 +O 18.2087 6.3026 0.9388 +H 12.1684 8.3480 18.7384 +40 20.0 20.0 20.0 +frame 259 +O 12.8617 4.1689 10.2776 +H 4.5749 12.4179 19.6684 +O 13.9896 13.8405 5.0337 +H 2.9402 17.1962 2.2097 +O 5.6249 8.1082 12.6456 +H 19.2204 15.7668 3.5467 +O 19.3620 2.1885 18.2047 +H 16.2478 19.8649 14.4959 +O 0.2050 0.5158 18.6662 +H 8.6836 6.3142 10.6995 +O 3.7034 3.8787 3.5190 +H 1.5894 10.2595 3.0984 +O 6.5574 17.2466 13.7622 +H 16.0083 8.2019 3.0205 +O 14.0444 10.8467 7.7961 +H 4.0227 0.7633 7.0749 +O 5.8862 6.7422 19.7723 +H 6.6075 2.0444 11.0428 +O 13.9651 19.1435 15.9107 +H 6.6646 2.2217 12.0470 +O 9.6472 1.4084 4.3413 +H 15.9382 4.4281 15.3107 +O 9.5142 10.5063 18.4514 +H 6.5542 12.2709 16.5970 +O 1.7565 13.7435 1.8716 +H 1.6391 14.4035 7.2017 +O 7.1098 0.1929 19.8595 +H 9.2505 6.1630 0.3330 +O 3.8495 11.0035 6.4305 +H 10.4331 18.2054 19.0843 +O 5.4560 9.5173 11.6324 +H 2.0290 11.4971 17.5179 +O 8.9965 1.1398 0.7691 +H 13.3345 9.6028 7.6511 +O 0.7476 13.6567 19.9893 +H 4.4005 2.1774 18.4266 +O 13.9241 8.9728 1.5856 +H 13.1465 10.4383 10.2308 +O 18.3610 5.7462 0.9908 +H 11.6052 8.3939 18.9577 +40 20.0 20.0 20.0 +frame 260 +O 13.0836 3.8489 9.8898 +H 4.5066 12.1756 19.2230 +O 13.7343 13.6374 4.9082 +H 3.0093 16.7518 2.5247 +O 5.4111 8.5094 12.6026 +H 19.1655 15.7663 3.4075 +O 19.4459 2.0575 18.2998 +H 16.3931 19.7559 13.9337 +O 19.8052 0.2172 18.3446 +H 8.6940 6.1517 11.2311 +O 3.6268 3.5863 3.1988 +H 1.6195 9.9763 2.8671 +O 6.4390 16.7817 14.2269 +H 15.9988 8.3839 3.2607 +O 14.1623 11.6917 7.7549 +H 4.1026 0.7692 7.0944 +O 6.2334 6.7494 19.7524 +H 6.8462 2.2853 11.0553 +O 13.7618 19.2437 15.7103 +H 6.4256 2.0102 12.4483 +O 9.7440 1.1964 3.8494 +H 15.6186 4.2553 15.2290 +O 10.0179 10.5839 18.5406 +H 5.7907 12.3067 17.0289 +O 2.2348 13.4492 2.0111 +H 1.6147 13.9441 7.3559 +O 7.3910 19.8206 0.3792 +H 9.2820 6.1377 0.6863 +O 3.7207 10.5347 6.2743 +H 10.4365 18.8155 18.9046 +O 5.2938 8.8771 12.1111 +H 2.2613 11.6438 17.7848 +O 8.4054 1.2814 1.0951 +H 13.4967 9.6199 7.7873 +O 0.7633 13.8556 19.7425 +H 4.2345 2.0955 18.4476 +O 14.4710 8.6609 2.1067 +H 13.4070 10.5997 10.3942 +O 17.8188 6.0256 1.4889 +H 11.5141 8.3408 0.0166 +40 20.0 20.0 20.0 +frame 261 +O 13.2024 3.8646 9.5337 +H 4.6820 12.1172 19.5969 +O 13.8757 13.4378 5.0967 +H 2.6642 16.8885 2.3065 +O 5.2043 8.4995 12.3647 +H 19.1387 15.6961 3.6037 +O 19.8120 2.1478 18.6099 +H 16.5289 0.0858 14.4693 +O 19.6829 0.5176 18.3121 +H 9.0223 5.6622 10.8633 +O 3.9203 3.6949 3.6188 +H 1.1180 9.8877 2.7389 +O 6.7131 17.2165 14.0588 +H 16.0404 8.5646 3.1545 +O 13.8182 11.6692 7.6377 +H 4.2912 0.7397 6.8415 +O 6.1676 6.1328 0.1307 +H 7.2043 2.5550 10.5846 +O 13.9251 19.2483 16.0697 +H 6.3278 2.2464 12.4626 +O 9.6558 1.3808 3.8672 +H 15.7675 4.5387 15.0450 +O 10.0592 10.4150 18.6393 +H 6.2904 12.3644 17.3512 +O 2.0383 13.9815 2.3208 +H 1.8543 13.7168 7.0829 +O 7.4458 19.4947 0.7770 +H 9.3341 5.6683 1.1186 +O 4.2983 9.9338 5.7196 +H 10.4284 19.1837 18.3193 +O 5.1057 9.6066 12.6134 +H 1.7301 11.8386 17.6498 +O 8.3328 0.9819 1.2340 +H 13.8004 9.9111 7.7276 +O 0.6743 13.4204 19.5416 +H 3.8945 2.6728 18.7704 +O 14.2900 8.6838 2.3012 +H 13.1307 10.6103 10.6221 +O 17.6053 5.7033 1.5344 +H 11.7559 8.5389 19.8588 +40 20.0 20.0 20.0 +frame 262 +O 12.9454 4.0388 9.7700 +H 4.9631 12.2299 19.8815 +O 13.7536 13.2424 5.2008 +H 2.1958 16.2620 2.0747 +O 5.3180 8.3271 12.6243 +H 19.1263 15.8825 3.8849 +O 19.4296 1.6038 18.7277 +H 16.5153 0.5453 13.9511 +O 19.7190 0.0615 18.3616 +H 9.4537 5.5410 11.0238 +O 4.0274 3.6651 3.4140 +H 0.8524 9.4654 2.4853 +O 6.4390 17.3612 14.3539 +H 16.1403 8.4270 3.3761 +O 13.8738 11.0638 7.7435 +H 3.6914 0.7152 7.1875 +O 6.1389 6.5648 0.3675 +H 7.3524 2.2191 10.1746 +O 13.7912 18.6934 16.1303 +H 6.2172 2.5990 12.1819 +O 9.7211 1.2834 3.8427 +H 15.8844 4.7347 15.1358 +O 10.5700 10.5637 18.3625 +H 7.0838 11.7361 17.2781 +O 1.6524 14.0138 2.6962 +H 2.4308 13.6584 6.9847 +O 6.5927 19.3280 0.3169 +H 8.2934 5.4862 0.8052 +O 4.1956 9.7876 5.6014 +H 10.5619 19.1831 17.7758 +O 5.2779 9.7548 12.3169 +H 1.8627 11.2911 17.2902 +O 8.0877 0.9448 1.1796 +H 13.7418 10.2441 7.8781 +O 1.0090 13.5825 19.9098 +H 3.8352 2.1906 18.6835 +O 14.1963 8.4610 2.1697 +H 13.2669 10.6354 10.7516 +O 17.7890 5.9822 1.5795 +H 11.5199 8.6080 0.0319 +40 20.0 20.0 20.0 +frame 263 +O 13.0887 4.0111 9.6403 +H 5.1987 12.0545 19.9675 +O 13.5867 13.3667 5.2821 +H 2.1765 15.8916 1.8704 +O 5.1739 8.1221 13.0633 +H 19.7620 15.5546 3.6769 +O 19.3062 1.7486 18.3611 +H 16.3073 1.0747 12.8521 +O 19.6589 19.9637 17.9258 +H 9.5340 5.4448 10.8985 +O 3.4992 3.6686 2.9456 +H 0.9281 9.5737 2.4533 +O 6.3332 16.9016 14.0069 +H 16.5793 8.2957 3.4118 +O 13.8416 11.1333 7.6845 +H 4.0808 0.4341 7.1340 +O 6.6023 6.6448 0.3144 +H 7.7227 2.3000 10.1116 +O 14.1859 18.7080 16.4375 +H 5.8474 2.9123 12.1056 +O 9.3671 1.5702 3.4647 +H 16.3929 4.5971 15.2416 +O 10.4702 10.6363 18.7576 +H 6.6531 12.1473 17.3848 +O 1.5785 14.1135 2.8602 +H 2.7795 13.0879 7.6062 +O 5.7759 19.5570 19.7517 +H 8.7662 5.9351 1.1358 +O 4.4590 9.8740 5.7283 +H 10.0508 18.8729 17.3302 +O 4.7501 9.5647 12.4102 +H 1.8240 11.3229 17.9574 +O 7.8607 0.7493 1.5475 +H 13.7659 10.5911 7.8428 +O 1.1599 13.6682 0.3303 +H 3.7214 2.4651 18.9457 +O 14.0440 8.3762 1.8923 +H 13.1578 10.9102 11.0010 +O 17.9616 6.1321 1.3986 +H 11.7922 8.5793 19.9965 +40 20.0 20.0 20.0 +frame 264 +O 13.1022 3.6547 9.2396 +H 5.8307 11.7367 19.9612 +O 13.6015 13.8336 5.7400 +H 2.7177 15.6844 1.7134 +O 5.4904 7.9740 13.4907 +H 0.0306 15.8019 3.4579 +O 19.3113 2.1959 18.2471 +H 16.8908 1.4224 12.8180 +O 19.2434 19.7752 17.5659 +H 9.9120 5.4764 10.2853 +O 3.3025 3.9971 2.6813 +H 0.7459 9.4297 2.3743 +O 6.9039 17.1913 14.8317 +H 16.8271 8.2345 3.6767 +O 14.1609 10.5296 7.8390 +H 3.8308 0.2976 6.7624 +O 7.0071 6.3182 0.7344 +H 7.4466 1.9671 10.4921 +O 14.2685 18.5301 16.5786 +H 6.1447 2.7880 11.9899 +O 9.3643 1.4005 3.7623 +H 16.0950 4.7822 15.2347 +O 11.2206 10.7988 18.9881 +H 6.5755 11.6670 17.3753 +O 1.9860 14.2529 3.0423 +H 2.9176 13.3132 7.8780 +O 6.2385 19.1892 19.4363 +H 8.4593 5.8081 0.8413 +O 3.9919 9.9698 5.4756 +H 9.8544 18.6077 16.6187 +O 4.4399 9.5439 12.7579 +H 1.9413 11.2158 17.6319 +O 7.7277 0.2248 1.4795 +H 14.0710 10.8004 7.9895 +O 0.5302 13.7172 0.1789 +H 3.6229 2.5109 18.9881 +O 14.4543 8.7626 2.4123 +H 13.0106 11.3657 10.9590 +O 18.1878 6.1514 1.2832 +H 11.8007 8.3421 0.2316 +40 20.0 20.0 20.0 +frame 265 +O 13.1680 3.8912 9.3758 +H 6.3990 12.1080 0.0546 +O 13.6242 13.8412 5.6795 +H 2.4476 16.2842 1.4682 +O 5.0378 7.3676 13.8347 +H 0.2998 15.9341 3.6612 +O 19.3829 2.6190 18.5093 +H 16.8058 1.7274 13.5084 +O 19.6397 19.6575 18.1718 +H 10.7539 5.5911 10.2222 +O 3.6170 3.4625 2.9961 +H 0.9159 9.4706 2.2377 +O 6.8854 17.2568 14.5234 +H 17.1362 8.3391 4.0353 +O 13.6806 10.5723 7.7331 +H 3.8816 19.6605 6.4095 +O 7.4128 6.3894 0.3592 +H 7.1262 2.0575 10.5332 +O 14.7005 18.8548 16.6875 +H 6.3476 2.8842 11.5944 +O 9.2126 1.2425 3.9499 +H 16.1431 4.7481 15.4359 +O 11.4760 10.9915 18.3805 +H 6.2316 11.6349 17.2484 +O 2.1639 14.7672 3.2665 +H 3.1347 12.9713 7.5522 +O 6.1951 19.3721 18.6633 +H 8.6060 5.6386 1.3359 +O 3.7831 9.7612 5.6690 +H 9.8040 18.6459 16.9322 +O 4.3941 9.3705 12.9489 +H 1.7821 11.6128 17.7889 +O 8.0515 19.9679 1.6939 +H 14.4097 10.6406 7.8652 +O 0.5521 13.7115 0.2764 +H 3.4405 2.8330 18.8828 +O 13.7346 9.3712 2.2587 +H 12.7379 10.9340 11.1444 +O 18.1930 6.0026 1.2129 +H 11.6828 8.3222 0.4507 +40 20.0 20.0 20.0 +frame 266 +O 13.0345 3.5716 8.9227 +H 6.7460 11.6693 0.5887 +O 14.4026 14.1619 5.5920 +H 2.4536 16.6592 1.3998 +O 5.6778 6.7785 14.5378 +H 0.6354 15.9555 3.7382 +O 19.2725 3.0615 18.3894 +H 16.8807 1.8163 13.1837 +O 19.3511 0.1470 17.7443 +H 10.9297 5.8111 10.3658 +O 3.8889 3.3916 3.4201 +H 1.0923 9.3044 2.3662 +O 6.1111 17.4572 14.3923 +H 17.4362 8.8318 3.9263 +O 13.3263 10.5744 7.7583 +H 3.9523 19.0840 6.4700 +O 7.2384 6.6837 0.3948 +H 7.3867 1.7153 10.5499 +O 14.3732 18.8920 16.3633 +H 6.1104 2.5207 11.0283 +O 9.3914 1.4668 3.5980 +H 15.9840 4.9021 15.3028 +O 10.9921 11.5718 18.3006 +H 6.1978 11.6093 17.1713 +O 2.0159 14.8760 3.1749 +H 2.8557 12.9913 7.6114 +O 6.5558 19.0619 18.4887 +H 8.5789 5.6132 1.0463 +O 4.0060 9.7371 5.6654 +H 9.8183 19.0601 16.9268 +O 4.3713 9.0687 13.0111 +H 1.6038 11.6534 17.4632 +O 7.6470 0.1169 1.8346 +H 13.7507 10.8672 7.8562 +O 0.7616 13.7548 0.3409 +H 3.7345 2.8921 19.3186 +O 13.5687 8.8431 2.2688 +H 12.7691 11.2585 11.7751 +O 18.4857 5.9272 1.5810 +H 11.5437 7.9595 0.2994 +40 20.0 20.0 20.0 +frame 267 +O 12.4772 3.0467 8.9243 +H 6.7035 11.7661 0.8439 +O 14.4238 14.1738 5.5821 +H 2.9635 17.1374 1.4019 +O 5.6296 6.8822 14.5304 +H 0.4098 15.6087 3.9999 +O 18.9870 3.1304 18.6262 +H 16.8890 1.9162 12.9292 +O 19.2096 19.8193 17.5453 +H 10.9242 5.6831 10.4272 +O 3.7082 3.0296 3.2724 +H 0.4702 9.1175 2.1584 +O 6.1803 17.2980 14.3174 +H 17.7582 8.8132 3.8283 +O 13.2873 10.3433 8.0380 +H 4.4981 19.6414 7.1812 +O 7.6223 6.8274 0.5886 +H 7.1975 2.1179 10.2958 +O 14.5441 18.9346 16.6048 +H 6.1319 2.4281 10.1916 +O 8.8658 1.3826 2.7537 +H 16.3588 4.5619 15.3777 +O 10.3063 11.2987 18.7148 +H 5.5648 11.5165 17.5494 +O 1.9335 14.8510 3.5653 +H 3.1284 13.7208 7.7466 +O 6.7942 19.5368 18.2935 +H 8.1796 5.1221 0.8813 +O 3.6761 9.9515 5.9811 +H 9.5263 19.0835 16.9941 +O 4.3908 9.0456 12.7667 +H 1.4848 12.1042 17.2930 +O 7.2631 0.5832 2.1773 +H 13.4340 11.4845 8.0088 +O 0.5155 13.9583 0.5313 +H 3.9038 3.0507 19.2974 +O 13.5642 9.2541 2.7481 +H 12.9460 11.2474 11.4114 +O 18.6830 5.9447 1.6186 +H 11.7775 8.0761 0.6865 +40 20.0 20.0 20.0 +frame 268 +O 12.4602 3.2542 9.2488 +H 6.6768 12.1488 0.8131 +O 14.9697 14.5140 5.7562 +H 3.3607 16.7533 1.8530 +O 5.2459 6.5396 14.2778 +H 0.6401 15.3079 4.0566 +O 18.7995 3.8677 18.2297 +H 17.2441 2.1277 12.9352 +O 19.6883 19.3954 17.5324 +H 11.1899 5.3981 9.9989 +O 3.4286 3.7052 3.5392 +H 0.9618 8.9320 2.0458 +O 5.5263 17.1675 14.2713 +H 17.7184 8.9650 3.6263 +O 13.4163 10.0616 7.9892 +H 4.9385 19.9269 6.8944 +O 7.0405 6.8358 1.0030 +H 6.9645 2.1123 10.1160 +O 14.4236 19.2349 16.5811 +H 6.2189 2.7305 10.1269 +O 8.7897 1.3068 2.8542 +H 16.9027 4.9046 15.1291 +O 10.5428 11.5759 18.9816 +H 6.0108 11.4792 17.4118 +O 2.0281 15.0275 4.3084 +H 3.2997 13.5261 7.8282 +O 7.3358 19.1042 18.6636 +H 8.1581 5.1303 0.4636 +O 3.1669 10.0756 6.3684 +H 9.4292 19.0615 17.2964 +O 4.5062 9.1836 12.3746 +H 1.5998 12.0933 17.6363 +O 7.2993 0.8263 2.8011 +H 13.9911 11.2787 8.0284 +O 0.7461 14.2633 0.4298 +H 3.6602 3.3452 19.1675 +O 13.4056 9.0707 2.9354 +H 12.2290 11.1841 11.1849 +O 18.7232 6.0596 1.8363 +H 11.6392 8.0922 0.5512 +40 20.0 20.0 20.0 +frame 269 +O 12.8208 3.1232 9.8527 +H 6.7728 12.0978 1.1170 +O 14.8547 14.7108 5.6427 +H 3.5481 16.3419 1.8320 +O 5.4419 6.2969 14.1415 +H 0.1549 15.4501 4.2230 +O 18.5374 4.5486 18.0725 +H 17.3965 2.2150 12.6905 +O 19.6587 19.7947 17.6848 +H 11.5734 5.3974 10.3806 +O 3.4412 3.6170 3.1405 +H 0.9071 8.6491 2.2164 +O 5.6441 17.0942 14.6318 +H 17.7400 9.2011 3.4048 +O 13.6590 9.5916 7.2013 +H 4.7701 19.7846 6.5697 +O 6.7676 7.1829 1.0290 +H 6.7730 2.0012 10.3704 +O 14.3802 19.3937 16.8069 +H 5.5805 2.1916 9.9020 +O 8.5587 0.7431 2.8107 +H 16.7185 4.8643 14.7818 +O 10.9773 11.5067 18.9480 +H 5.9862 11.7155 16.9486 +O 1.8855 14.9575 4.2826 +H 3.4408 13.4969 7.7559 +O 6.8752 19.1435 18.8640 +H 7.9492 5.0103 0.6608 +O 2.9082 10.1608 6.2754 +H 9.6292 18.9063 17.5784 +O 4.6380 9.0986 12.3870 +H 1.8377 12.3871 18.1593 +O 7.3363 0.5134 2.3204 +H 13.9147 11.0555 7.8635 +O 0.7279 14.7235 0.2000 +H 4.0566 3.3682 19.0196 +O 13.0472 9.5271 2.6181 +H 12.2332 11.4345 11.2106 +O 18.5382 5.9218 1.4676 +H 11.6087 7.3779 0.4915 +40 20.0 20.0 20.0 +frame 270 +O 12.6418 2.9111 9.9240 +H 6.8415 12.2811 1.2311 +O 14.9659 14.7544 5.4649 +H 3.2165 15.8664 1.2274 +O 5.4446 6.6280 14.0016 +H 0.3021 15.5226 4.9397 +O 18.7801 4.4862 17.4766 +H 17.0129 2.1115 12.8328 +O 19.2678 0.0135 18.0954 +H 10.9580 5.0100 10.0911 +O 4.1693 3.6221 3.1774 +H 0.9877 9.1149 2.9226 +O 6.0952 16.6960 14.4901 +H 18.5293 9.4111 3.4943 +O 13.9548 9.7608 7.2514 +H 4.5567 0.3610 6.1908 +O 6.3001 7.5887 0.8073 +H 6.6792 2.0798 10.0508 +O 13.8621 19.4000 16.4543 +H 5.9496 2.7840 9.7807 +O 8.3972 0.7508 3.2253 +H 16.3818 4.7645 14.5181 +O 11.1084 11.4510 19.5148 +H 5.9693 11.6704 16.9422 +O 2.2011 15.6380 4.3702 +H 3.5163 13.1643 8.0981 +O 7.4072 19.1325 18.8640 +H 7.5831 5.0104 0.0304 +O 3.2950 10.3887 6.4603 +H 9.3816 19.2188 17.3225 +O 4.4206 9.6901 12.4167 +H 1.7190 11.7601 18.0278 +O 7.4858 0.4367 1.9288 +H 13.8600 10.7127 7.2871 +O 0.3878 14.6530 0.5621 +H 3.9661 3.7198 18.6515 +O 13.1090 9.6224 2.6662 +H 11.8855 11.7421 11.5016 +O 18.0156 6.3068 1.3555 +H 11.9698 7.9202 0.2853 +40 20.0 20.0 20.0 +frame 271 +O 12.0890 2.6771 9.7360 +H 6.7545 12.3247 1.2735 +O 14.8342 14.3230 5.7887 +H 3.0994 15.7134 1.6143 +O 5.2957 6.3597 13.4479 +H 0.3426 15.2232 4.7192 +O 18.5495 4.5798 16.9311 +H 17.5878 1.9657 12.8625 +O 18.9020 0.2930 17.9390 +H 10.8923 5.2578 10.1171 +O 3.9539 3.4936 2.7387 +H 0.8310 9.0470 2.7397 +O 6.2451 16.5664 14.6481 +H 18.8218 9.1512 3.3598 +O 13.4678 9.6233 7.1665 +H 4.3486 0.7798 5.9578 +O 6.5155 7.9929 0.3863 +H 6.8627 1.8449 10.1766 +O 13.1262 19.5820 16.5923 +H 6.1061 2.5196 10.0175 +O 8.8054 0.7361 3.0543 +H 16.8000 4.3273 14.3945 +O 11.1732 11.4768 19.4899 +H 6.0737 11.1115 16.7064 +O 2.6944 15.6087 4.5105 +H 3.3169 13.2041 7.8475 +O 7.2564 19.0823 19.0084 +H 7.2628 5.3138 19.5986 +O 3.4908 9.6283 6.3683 +H 9.5334 19.1544 17.4581 +O 4.6409 9.6936 12.0029 +H 1.9596 11.4817 17.9778 +O 7.3439 1.0491 1.7269 +H 13.9053 10.5359 7.1614 +O 0.3020 14.7709 0.4733 +H 3.7319 3.4638 18.5770 +O 13.5408 10.0681 2.6350 +H 11.7911 11.1991 11.4463 +O 17.9052 6.4116 1.5583 +H 11.8129 8.1032 19.9601 +40 20.0 20.0 20.0 +frame 272 +O 11.9164 3.4811 9.6279 +H 6.8673 12.4615 1.5651 +O 14.9236 14.2975 5.9977 +H 2.8920 15.9241 1.8121 +O 5.1361 6.7056 13.2675 +H 0.5217 15.2927 4.4792 +O 18.3382 4.8912 16.7373 +H 17.5739 2.3213 12.9436 +O 19.1781 0.3200 17.8473 +H 11.0298 5.5155 10.2043 +O 3.8654 3.7137 2.8286 +H 0.7833 8.3017 2.5676 +O 6.5729 16.6142 14.6269 +H 18.8750 9.6744 3.5856 +O 13.4093 9.3990 7.1486 +H 4.1828 0.8582 5.7787 +O 6.6462 7.8587 0.3205 +H 6.9314 0.9273 9.9327 +O 13.1484 19.4818 16.3314 +H 6.3051 3.2538 10.1112 +O 8.9597 0.7102 2.6299 +H 16.5730 4.1940 14.2284 +O 11.1709 11.5552 19.4171 +H 6.1948 10.8759 16.4782 +O 2.6722 16.0169 4.6128 +H 3.7966 12.4421 7.3135 +O 7.1480 19.1093 19.0804 +H 7.4245 5.3023 18.8621 +O 3.2349 9.5269 6.6189 +H 9.1936 19.6643 17.1426 +O 4.5893 9.8911 11.8083 +H 2.2617 11.4418 17.8386 +O 7.0898 1.0707 1.2469 +H 13.8010 11.3401 7.4687 +O 0.7254 14.5571 0.3323 +H 3.9769 3.6164 18.0921 +O 13.1838 10.2228 1.8878 +H 11.5161 11.6602 12.2784 +O 18.0705 6.3460 1.4576 +H 11.3103 7.5269 19.7522 +40 20.0 20.0 20.0 +frame 273 +O 11.5802 3.2061 9.6465 +H 6.7938 12.0652 1.6314 +O 15.6301 13.6833 5.1448 +H 3.2642 15.6860 2.1633 +O 5.3856 6.5729 13.5965 +H 0.3266 15.0480 4.0638 +O 18.0461 5.0887 17.3788 +H 17.4245 1.9332 12.8839 +O 18.8408 0.1679 17.1983 +H 11.7369 5.3545 10.5505 +O 3.8381 3.3836 3.1637 +H 0.3430 8.4601 2.6996 +O 6.5928 16.7629 15.0444 +H 19.5413 9.7090 3.3555 +O 13.3650 9.3738 7.6979 +H 4.0980 1.2738 6.0726 +O 6.1164 8.0214 0.1480 +H 7.0782 1.3973 9.9620 +O 13.3136 19.5723 16.5093 +H 5.5637 3.0526 10.1648 +O 8.7648 0.4295 2.7202 +H 15.9263 4.0619 13.7545 +O 11.2236 11.7981 19.5850 +H 5.9433 10.4120 16.6003 +O 2.3029 15.6947 4.7034 +H 3.3368 12.6934 7.4467 +O 7.2803 19.6046 19.1435 +H 7.3154 5.4528 18.9264 +O 3.2585 9.9673 6.4263 +H 9.5588 19.3749 17.1458 +O 4.8119 9.5555 11.7779 +H 1.6739 11.5407 17.8289 +O 7.3471 1.0197 1.5501 +H 13.4771 11.2932 7.1943 +O 0.8130 14.6791 0.4977 +H 3.6375 3.6504 18.1950 +O 13.6610 10.0230 1.3710 +H 11.4779 11.7728 12.4488 +O 18.4497 6.4821 1.1523 +H 11.1678 7.7017 19.7599 +40 20.0 20.0 20.0 +frame 274 +O 10.6718 3.6510 9.6609 +H 6.9015 11.5042 1.6612 +O 15.6393 14.0764 4.8733 +H 4.0388 15.4121 2.1185 +O 6.0504 6.2503 13.8126 +H 0.0547 15.4788 3.8779 +O 18.4387 5.2176 17.3820 +H 17.4923 2.3747 12.9154 +O 19.1960 0.3830 17.2222 +H 11.9414 4.9445 10.5822 +O 3.6921 3.2661 3.2953 +H 19.8453 8.5765 3.0908 +O 6.4049 16.6598 14.8790 +H 19.6422 10.1526 3.3457 +O 13.4808 9.2959 7.5433 +H 3.7565 1.1248 6.5263 +O 6.1722 7.2285 19.6081 +H 6.5070 1.5150 9.8139 +O 12.9588 18.8377 16.5459 +H 5.4662 3.0658 10.3722 +O 9.2903 0.9031 3.1073 +H 16.1233 3.9987 13.8249 +O 10.9775 11.7931 19.6512 +H 6.3145 10.6331 16.8056 +O 2.5055 15.5487 4.9399 +H 3.4610 12.9698 7.5021 +O 7.6197 19.4769 18.7753 +H 7.5444 5.5259 19.3432 +O 3.3866 9.6717 6.2698 +H 9.2800 19.0034 17.0730 +O 4.9730 9.6919 11.9437 +H 1.4831 11.0530 17.7427 +O 7.2454 1.2797 1.3955 +H 13.7160 11.6119 7.3376 +O 1.4958 14.6337 0.5920 +H 3.0631 3.9940 18.5170 +O 13.5516 10.1309 1.2428 +H 11.5257 12.0754 12.7116 +O 18.6348 6.6378 1.2885 +H 10.7521 7.7773 19.6926 +40 20.0 20.0 20.0 +frame 275 +O 10.4674 3.4235 10.0205 +H 6.3447 12.0628 1.2547 +O 15.5222 14.1703 4.8486 +H 4.0679 15.4643 2.3571 +O 5.8941 6.0343 14.4694 +H 0.6068 15.0720 3.9612 +O 18.3452 5.3715 17.2609 +H 17.7533 2.2065 12.9492 +O 18.9763 19.9631 17.4469 +H 12.4445 4.7655 10.5589 +O 3.5708 3.6416 3.7223 +H 19.5631 8.7015 2.7839 +O 6.6420 16.5891 14.9566 +H 19.4368 10.5562 3.3329 +O 13.0065 10.2123 7.9533 +H 3.4211 0.3436 6.5125 +O 6.3703 7.5492 19.7390 +H 6.4679 1.0945 9.5909 +O 12.4793 18.2799 16.7166 +H 5.7530 2.9502 10.3533 +O 9.4385 0.8431 3.0298 +H 16.5268 4.4408 14.4607 +O 11.0890 11.5296 19.2029 +H 6.3835 11.1799 16.8369 +O 2.3862 15.4289 5.1091 +H 2.9196 13.2287 7.7608 +O 7.2564 19.6219 18.4588 +H 7.1553 5.6571 19.2033 +O 3.8437 9.6646 6.2862 +H 9.2969 18.6159 17.0550 +O 5.2202 9.3442 11.9666 +H 1.9057 11.1543 18.0196 +O 7.2198 1.3942 1.7346 +H 13.8906 11.7136 7.6246 +O 1.3818 15.0730 0.2331 +H 3.2391 3.4446 18.0591 +O 13.8551 9.9308 1.1645 +H 11.7158 12.1378 12.4240 +O 18.5833 6.2051 1.2158 +H 10.6816 7.3064 0.5406 +40 20.0 20.0 20.0 +frame 276 +O 10.7748 3.2071 9.4915 +H 6.5991 11.9694 1.3169 +O 15.2766 14.0081 4.5429 +H 4.2584 15.3567 2.1273 +O 6.3176 6.4545 14.3270 +H 1.0492 15.1173 3.9795 +O 18.9525 4.8570 17.1002 +H 17.3437 2.2298 12.6286 +O 18.6243 19.6808 16.8816 +H 12.3880 5.0572 10.5585 +O 3.5893 3.4536 3.7142 +H 19.4333 8.9044 3.4174 +O 6.6221 16.3226 15.2076 +H 19.6175 10.6887 3.5761 +O 12.4708 10.0767 8.0600 +H 3.4657 0.3174 6.5985 +O 6.4904 7.2715 0.1123 +H 6.5952 0.9626 9.8498 +O 12.3008 17.9552 16.7506 +H 5.6560 3.1075 10.3132 +O 9.1902 0.6902 3.5550 +H 16.6267 5.1148 15.0929 +O 11.1163 11.0925 19.3167 +H 6.0022 11.0610 17.0618 +O 2.6722 15.1271 5.0032 +H 3.3465 13.1631 7.7395 +O 7.6276 18.7909 18.7865 +H 7.1990 5.7639 19.1917 +O 3.7304 9.8655 6.4218 +H 9.1097 19.0484 16.8293 +O 5.6379 9.3860 12.0643 +H 2.0924 10.9350 17.7009 +O 7.2181 1.5530 1.6882 +H 14.4559 11.6008 7.8593 +O 1.5798 15.3034 0.2292 +H 2.9709 3.4777 18.2350 +O 13.9058 9.5929 1.4409 +H 11.4861 11.8953 12.3803 +O 18.1307 5.9024 1.2356 +H 11.4362 7.4938 0.2714 +40 20.0 20.0 20.0 +frame 277 +O 11.1388 2.9739 9.6687 +H 6.4007 11.9934 1.3288 +O 15.3801 13.6918 4.2513 +H 4.4616 15.4014 1.7931 +O 5.8789 6.3252 13.7999 +H 1.2894 15.1402 4.6729 +O 19.0283 4.8595 17.2347 +H 17.2838 1.9815 12.3677 +O 18.3521 19.3917 16.7456 +H 12.8584 5.4429 10.7071 +O 3.7992 3.2990 4.4243 +H 19.5539 8.4626 3.4105 +O 6.2904 15.9932 15.3545 +H 19.8495 10.6838 3.8946 +O 12.1073 9.8287 7.9188 +H 3.5344 0.4718 6.5456 +O 6.5371 6.7711 19.5274 +H 7.4108 1.1144 9.5671 +O 11.7634 17.9246 16.9083 +H 5.7354 2.8282 10.1468 +O 9.0325 0.8910 3.3466 +H 16.3834 5.2798 15.0927 +O 11.1962 10.7610 19.3050 +H 6.1968 10.8751 16.9028 +O 2.8847 15.3662 4.9698 +H 3.2596 13.3599 7.6413 +O 7.4199 18.6866 18.7933 +H 7.0651 6.2646 18.5451 +O 3.7621 9.9203 6.3208 +H 9.5021 19.0635 16.5796 +O 5.8989 9.4825 12.1753 +H 1.5778 10.8042 17.0016 +O 6.8870 1.4947 1.7216 +H 14.5744 11.9766 7.6853 +O 1.2260 14.5820 0.0224 +H 3.3685 3.2824 17.9957 +O 13.6094 9.5367 2.0700 +H 11.2187 11.6056 12.6806 +O 18.3475 5.7336 0.9056 +H 11.7307 7.1819 0.0751 +40 20.0 20.0 20.0 +frame 278 +O 11.0975 2.8047 9.6622 +H 6.2601 12.1751 1.4759 +O 15.4088 13.5893 4.4239 +H 4.1885 15.1620 1.9173 +O 6.6671 5.8398 13.7793 +H 1.1507 15.0250 4.5010 +O 18.9857 5.0404 17.1651 +H 17.0626 1.8787 12.7960 +O 18.6947 18.6398 17.1152 +H 12.7650 5.7380 11.3959 +O 4.0924 3.4025 3.9948 +H 19.4063 8.3937 3.0121 +O 6.4154 16.1434 15.7975 +H 19.8668 10.8325 3.8548 +O 11.5170 9.8423 7.7685 +H 4.0655 0.0595 6.3327 +O 6.8289 7.1069 19.3511 +H 6.9527 1.4409 9.6187 +O 11.4518 17.7036 17.1898 +H 5.9647 2.6649 9.6670 +O 9.0511 0.9257 3.3266 +H 16.2632 5.0668 14.9828 +O 11.1901 10.8075 18.9630 +H 5.9612 10.7187 16.8132 +O 3.5231 15.9406 5.1298 +H 3.0670 13.2041 7.9515 +O 7.5135 18.7302 18.4360 +H 6.9417 6.0207 18.7471 +O 3.4532 9.7544 6.3792 +H 9.5075 19.1812 16.7687 +O 5.4754 9.2957 12.0294 +H 1.0619 10.2972 16.9263 +O 6.9589 1.4194 1.4594 +H 14.5712 11.2148 7.6633 +O 1.3819 14.4887 0.3146 +H 3.4813 3.1218 18.2549 +O 13.4965 9.8274 2.0769 +H 10.9779 11.5239 12.3412 +O 18.5663 5.7033 0.8829 +H 11.5311 7.2098 0.1926 +40 20.0 20.0 20.0 +frame 279 +O 11.0347 2.2924 9.2531 +H 6.7455 11.8032 1.0970 +O 15.8116 14.0948 3.7700 +H 3.8547 15.2860 2.0735 +O 6.5557 6.0605 13.8470 +H 1.3929 14.5617 4.6405 +O 19.1116 4.6316 17.2213 +H 16.6347 1.5573 13.0199 +O 17.9291 18.2231 17.0521 +H 12.7176 5.3692 11.4167 +O 4.0884 2.8480 4.4152 +H 19.0406 8.3302 3.3920 +O 6.5121 16.4191 15.8016 +H 19.5884 11.1946 4.1692 +O 11.5943 9.3800 7.8559 +H 4.0980 19.8640 6.2501 +O 6.9842 7.2706 18.8653 +H 6.7931 1.6750 9.2108 +O 11.3349 17.5147 16.7139 +H 5.9936 2.5908 9.6518 +O 9.1563 0.9549 3.5355 +H 15.8876 5.0892 15.2421 +O 10.9779 10.8309 18.8533 +H 6.0549 10.3988 16.5937 +O 4.2653 16.1542 5.2359 +H 3.4086 13.0590 8.2163 +O 7.7481 18.5877 18.3722 +H 7.0933 5.9793 19.2654 +O 3.3870 9.6852 6.4459 +H 9.0406 19.8810 17.0645 +O 4.8952 9.5564 12.2578 +H 1.7366 9.9450 16.7230 +O 7.1003 1.7011 1.3303 +H 14.6144 11.0422 7.5989 +O 1.2430 14.4896 0.0069 +H 3.0118 3.4980 18.1601 +O 13.1288 10.3715 2.2620 +H 10.3909 11.9161 12.6046 +O 18.4452 5.6544 0.8799 +H 11.0274 7.4267 19.9283 +40 20.0 20.0 20.0 +frame 280 +O 11.1204 2.8485 9.4934 +H 6.4406 11.3847 1.1907 +O 15.9266 13.7994 3.6756 +H 4.0966 14.9731 1.8978 +O 6.2033 5.7804 13.7588 +H 1.2273 14.3389 4.8448 +O 19.1168 4.2136 17.2274 +H 16.5115 1.1497 12.8373 +O 18.2479 18.1101 17.5631 +H 12.7947 5.7286 11.7594 +O 4.5084 3.0450 4.8031 +H 18.2114 8.5408 3.5058 +O 6.6103 16.7037 15.7028 +H 19.7746 10.8789 4.0295 +O 11.2469 9.0696 7.6871 +H 4.3353 0.4335 6.1681 +O 6.8929 6.9854 18.9113 +H 7.1755 1.6365 9.3608 +O 10.8100 17.7269 16.7775 +H 5.8753 2.6738 9.5081 +O 8.8236 0.7282 3.5027 +H 16.0645 4.9569 15.0604 +O 11.2488 10.3618 18.7256 +H 5.6196 10.1772 16.3591 +O 4.7412 16.5066 5.1472 +H 3.3440 12.9869 7.6842 +O 7.9685 18.4917 17.9782 +H 7.1766 5.7713 19.2929 +O 3.2576 9.5158 6.2144 +H 9.5548 19.4000 17.4213 +O 4.9766 9.5529 12.5456 +H 2.2415 10.2211 16.9624 +O 6.9577 2.0562 1.0588 +H 14.5729 11.0468 7.9284 +O 1.3464 14.1260 0.1266 +H 3.0824 3.5006 18.4471 +O 12.8027 10.7449 1.9943 +H 10.6344 11.5889 12.7952 +O 18.4906 5.8910 0.8599 +H 11.1461 7.2914 19.9763 +40 20.0 20.0 20.0 +frame 281 +O 11.1906 2.3519 9.3827 +H 6.1476 11.1323 1.0884 +O 16.0921 13.7633 3.7586 +H 4.1368 15.0608 2.3201 +O 5.9338 5.7570 13.3140 +H 1.1049 13.9350 5.0694 +O 19.1691 3.4859 16.9957 +H 16.8166 1.5762 13.0537 +O 18.4972 18.1710 17.4001 +H 12.7539 5.2823 11.6602 +O 4.3916 3.6869 5.0841 +H 17.9152 8.8954 3.1584 +O 6.8151 17.0801 15.9809 +H 19.5574 10.9305 3.7925 +O 10.9567 8.9672 7.3097 +H 4.2755 19.5936 7.1062 +O 6.8159 6.7687 18.7803 +H 7.2257 1.9361 9.3277 +O 10.5123 17.9747 16.4194 +H 5.6311 2.9278 9.4981 +O 8.6118 1.0327 3.6597 +H 15.8744 5.3521 14.7826 +O 11.4056 10.1218 19.0472 +H 5.5503 10.8168 16.6219 +O 4.7115 16.6510 5.0533 +H 3.2521 13.1487 7.6595 +O 7.6433 18.5100 18.3166 +H 6.7833 5.5207 19.2385 +O 3.2357 9.6719 6.4758 +H 9.6191 19.0300 17.3078 +O 4.9713 9.4873 12.3633 +H 2.2260 10.1589 17.1583 +O 6.7036 1.9240 1.2757 +H 14.1487 11.6969 7.9929 +O 1.1759 14.2828 0.4544 +H 3.0589 3.5668 18.6372 +O 12.9429 10.8466 1.8600 +H 10.2204 11.2123 13.0486 +O 18.4227 5.7783 0.9395 +H 11.4341 7.6387 0.0900 +40 20.0 20.0 20.0 +frame 282 +O 11.7670 2.5427 9.5336 +H 6.3600 10.8534 1.4319 +O 16.0134 13.9112 3.7547 +H 4.6833 15.3613 2.6733 +O 5.9830 5.9690 13.0966 +H 1.1925 13.4517 5.1295 +O 19.0473 3.5043 17.2630 +H 16.7953 0.9084 12.6133 +O 18.7223 18.4516 17.4739 +H 12.8258 5.4620 11.8054 +O 4.2890 3.3517 5.2834 +H 18.0557 9.0677 3.4423 +O 7.0820 16.5895 15.8556 +H 19.6217 10.8511 4.2268 +O 11.4427 9.3129 7.0319 +H 4.3717 19.4352 7.3282 +O 6.5723 6.9070 19.7188 +H 7.0542 1.8836 9.3981 +O 10.1950 17.8979 16.1499 +H 5.5938 3.0581 9.5520 +O 8.8867 1.1894 3.6992 +H 15.6740 5.6250 14.7235 +O 11.2582 9.4433 18.8285 +H 5.2604 11.3331 16.4324 +O 4.5698 17.3679 5.3518 +H 2.8858 12.5120 7.3769 +O 8.2892 18.8138 18.4726 +H 6.5032 5.8957 19.2437 +O 3.4330 9.6996 6.2322 +H 9.8597 18.7455 17.5215 +O 5.0292 9.4789 12.0086 +H 2.2790 9.8771 17.1230 +O 6.8144 2.0251 1.4014 +H 14.6171 11.2092 8.1316 +O 1.2424 14.2637 0.4768 +H 3.8317 3.4457 18.7312 +O 12.9373 11.2375 1.8497 +H 10.7034 11.0857 13.0025 +O 18.2913 5.5550 1.1885 +H 11.5878 7.3411 19.8330 +40 20.0 20.0 20.0 +frame 283 +O 11.8856 2.2234 10.0592 +H 6.2273 11.0597 1.6700 +O 15.3753 13.9082 4.3325 +H 4.9529 15.5596 2.0799 +O 6.4278 5.7718 13.4939 +H 0.9014 13.8670 5.9565 +O 19.2226 3.3278 17.3913 +H 16.9605 0.9487 13.2024 +O 18.6142 18.5362 17.3126 +H 12.9618 5.1147 11.8874 +O 3.8043 3.5848 4.8969 +H 18.2260 9.1385 3.4635 +O 6.6735 16.9114 15.8031 +H 19.9386 10.8996 3.9715 +O 12.0592 9.5811 6.9156 +H 4.4588 19.1135 7.2451 +O 5.8077 6.9408 19.9929 +H 7.4131 1.9914 10.1119 +O 10.1835 18.4493 16.1582 +H 5.7727 3.4687 9.2832 +O 9.5481 1.0334 3.6627 +H 15.1023 5.8368 14.4811 +O 10.9295 9.4243 19.4259 +H 5.6485 10.7612 16.5108 +O 4.2744 17.8133 4.9017 +H 2.0985 12.7103 7.4743 +O 8.1512 18.4846 18.6717 +H 6.6242 5.1740 18.6523 +O 3.3723 9.8319 6.2566 +H 9.6082 18.6476 17.4248 +O 4.9480 9.5623 11.8933 +H 2.2478 10.4072 16.9992 +O 7.1822 2.1254 1.4441 +H 14.3510 10.8299 7.8389 +O 1.3016 14.1607 0.2625 +H 3.7483 3.2302 18.8405 +O 12.5135 11.3926 1.7135 +H 10.9351 10.9646 13.1487 +O 18.3240 5.2599 1.0993 +H 11.6906 7.0915 19.3282 +40 20.0 20.0 20.0 +frame 284 +O 11.5786 2.1867 10.2224 +H 6.4025 11.3188 1.4028 +O 15.2667 14.1934 3.9600 +H 4.8158 15.2980 2.0380 +O 6.8665 5.6565 13.0611 +H 0.7886 13.8827 6.0458 +O 19.1920 3.9409 17.5367 +H 17.3727 0.9619 13.2771 +O 18.6456 18.4122 17.3563 +H 13.4204 5.1693 11.7116 +O 4.3250 3.4582 5.1432 +H 18.2215 9.2064 4.0257 +O 6.8517 17.1352 16.1904 +H 19.8954 10.7456 3.5051 +O 12.0352 10.0065 7.1332 +H 5.0196 19.0985 6.9385 +O 5.7010 6.7800 0.0685 +H 7.8223 1.9557 10.0436 +O 9.9406 18.8167 16.1814 +H 5.3711 3.6977 9.2544 +O 9.1540 1.3181 3.5286 +H 14.6648 5.3527 15.2253 +O 11.0000 9.3075 19.6683 +H 5.7142 10.8599 17.0423 +O 4.0041 17.5877 4.7520 +H 1.6911 12.2202 7.7635 +O 7.8409 18.7995 18.4585 +H 6.6166 6.0953 18.2524 +O 3.4278 10.2001 6.3448 +H 10.2074 18.9015 17.3500 +O 4.9012 9.4191 11.7189 +H 2.2407 10.0782 16.8971 +O 6.5388 2.3325 1.8057 +H 14.1284 10.7108 7.5367 +O 1.2745 14.1146 19.9732 +H 3.8410 3.3025 18.4556 +O 12.2033 11.4264 1.7661 +H 11.2939 10.9298 12.8334 +O 18.3533 5.0609 1.4460 +H 12.0045 7.4303 19.3070 +40 20.0 20.0 20.0 +frame 285 +O 11.7297 2.0640 10.2673 +H 6.7657 11.3895 2.0871 +O 15.0538 13.7981 4.1078 +H 4.0940 15.4092 1.7110 +O 6.9869 5.6614 13.2026 +H 0.8284 13.8052 6.0033 +O 19.2344 3.5830 17.4851 +H 16.7249 0.8214 13.4988 +O 18.4809 18.2423 17.2317 +H 13.7677 4.8387 11.6825 +O 4.2372 3.4448 5.2956 +H 18.1852 9.0532 4.6131 +O 7.0045 16.7119 15.6394 +H 19.8596 10.7645 3.4537 +O 12.0600 9.8009 6.6206 +H 5.3876 18.9419 6.9969 +O 5.5453 6.5864 0.4568 +H 7.4979 1.8197 9.9467 +O 9.7158 18.8143 16.0405 +H 5.1330 3.3999 9.1809 +O 8.8910 1.1711 3.3507 +H 14.5768 4.8826 15.2099 +O 11.5178 9.3155 19.2461 +H 5.9130 10.6535 17.1768 +O 4.1932 17.1371 4.7085 +H 1.8643 12.1535 7.4093 +O 8.2444 18.8666 17.8592 +H 7.0415 6.1896 18.4954 +O 3.4372 10.3200 6.2283 +H 10.6729 19.0895 17.5696 +O 5.0202 8.8051 11.6965 +H 2.5351 10.5167 16.9862 +O 6.8010 2.2873 2.0803 +H 14.1216 10.4127 7.0776 +O 1.2037 14.0376 0.0041 +H 4.2844 3.4286 18.5283 +O 12.2347 11.0187 2.0539 +H 11.0254 10.8462 13.1546 +O 18.2809 4.8791 1.0189 +H 12.3388 7.6951 19.8267 +40 20.0 20.0 20.0 +frame 286 +O 11.5048 2.2032 9.9463 +H 6.9601 10.7743 2.1126 +O 14.6604 13.6107 4.7085 +H 4.5344 15.4165 2.1483 +O 6.7289 5.5155 13.2180 +H 0.3918 13.2161 6.0479 +O 18.9837 3.4091 17.3970 +H 16.2430 1.1067 13.0488 +O 18.4755 18.2511 16.9773 +H 13.1586 5.1073 11.7803 +O 3.9146 3.6559 5.0502 +H 17.6515 8.5397 4.4677 +O 7.1619 17.2547 15.8393 +H 19.5703 10.5591 3.4236 +O 12.3780 9.7897 6.6177 +H 5.1456 19.1246 7.0765 +O 5.2982 6.8419 0.6590 +H 7.6215 1.3717 9.6676 +O 9.3047 18.8153 15.9074 +H 5.3566 3.5688 9.1668 +O 9.2931 1.3982 3.8215 +H 14.6475 5.1746 15.1603 +O 11.4576 9.3616 18.6535 +H 6.0308 10.7562 17.2220 +O 3.6373 17.2177 4.4583 +H 1.9165 11.6490 6.9662 +O 8.2981 19.0859 17.8802 +H 6.7242 6.0811 18.6926 +O 3.6652 10.5756 5.8390 +H 10.5840 19.5209 17.4237 +O 5.0250 8.7930 11.2872 +H 3.0427 10.2699 16.9227 +O 6.8869 2.1702 1.9849 +H 13.6709 10.5657 7.0102 +O 1.3562 14.1787 0.1296 +H 3.8704 3.0898 18.6911 +O 12.3808 10.7181 2.3165 +H 10.8534 11.1946 13.5673 +O 18.4155 4.5940 1.1276 +H 12.9928 7.5606 19.7362 +40 20.0 20.0 20.0 +frame 287 +O 11.4816 2.0004 9.8419 +H 7.2050 10.7327 1.8215 +O 14.3831 13.5792 4.8259 +H 4.2928 15.5700 2.5477 +O 6.7097 5.4906 13.1721 +H 0.3689 13.6184 6.3333 +O 19.2454 3.2503 17.7063 +H 16.2785 1.2059 12.9939 +O 18.4513 17.7136 17.4055 +H 12.9916 5.3859 11.3468 +O 3.5235 3.7267 4.8965 +H 17.6782 8.3493 4.6696 +O 7.3258 17.6098 15.7141 +H 19.9600 10.5391 3.5023 +O 12.0990 9.6491 7.0661 +H 5.3700 19.2858 6.7708 +O 5.0347 6.9400 0.5213 +H 7.2810 1.1423 9.9983 +O 9.3055 18.9867 16.7854 +H 5.5103 3.5722 9.0276 +O 9.1351 1.8389 3.7890 +H 14.6962 5.3448 15.0578 +O 11.6841 9.3335 18.6694 +H 6.1781 11.3855 16.9317 +O 3.9293 17.2834 4.2296 +H 2.1865 10.8288 7.1621 +O 8.1174 18.9446 17.9262 +H 6.2448 5.7852 18.4354 +O 3.5662 10.5758 5.6477 +H 10.6315 19.6905 17.3935 +O 4.5684 8.4479 11.5699 +H 2.9561 10.4609 17.3612 +O 6.9910 2.2862 1.8907 +H 14.0783 10.2866 6.9513 +O 1.3088 14.2584 0.2892 +H 3.8873 3.3320 19.1666 +O 12.5546 10.7627 1.7918 +H 10.8422 10.5279 13.3827 +O 19.1708 4.2571 1.2304 +H 12.6292 7.7103 19.9150 +40 20.0 20.0 20.0 +frame 288 +O 11.3624 1.9195 9.3723 +H 7.6536 10.9463 1.7653 +O 14.3560 13.5646 5.0656 +H 3.8481 14.9871 2.6580 +O 7.2971 5.6027 13.3081 +H 19.7301 13.3031 6.5778 +O 19.6537 3.1838 18.0677 +H 16.7351 1.1145 13.1806 +O 18.4173 17.9754 16.8673 +H 13.0945 5.1458 11.6476 +O 3.3057 4.0569 5.1577 +H 17.6675 8.5298 4.5954 +O 7.2181 17.9552 15.9490 +H 0.0876 10.6997 3.5331 +O 12.5353 9.3538 7.4706 +H 5.2942 18.3748 6.6193 +O 5.3963 7.0362 0.5938 +H 7.2065 1.1559 10.3337 +O 9.2305 18.9968 16.9063 +H 5.5390 3.7687 9.4615 +O 9.4940 1.9832 3.6404 +H 14.6911 5.1848 15.1660 +O 11.9996 8.9603 18.7566 +H 6.0542 11.5398 16.6053 +O 3.4645 17.1574 4.4869 +H 2.0052 10.6961 7.1621 +O 7.6430 18.5563 18.1026 +H 5.8902 5.7026 18.4865 +O 3.2923 10.9637 5.6385 +H 10.7599 0.4234 17.4259 +O 4.5162 7.8242 11.6068 +H 2.3283 10.5814 17.2663 +O 6.9043 1.9370 2.2318 +H 14.0393 10.7976 6.8434 +O 1.4211 13.6668 0.5735 +H 3.9256 3.9474 19.1940 +O 12.5528 10.6376 2.3313 +H 10.6419 10.2480 13.2185 +O 19.8727 4.4523 1.1977 +H 12.7017 7.0892 19.4830 +40 20.0 20.0 20.0 +frame 289 +O 10.9712 1.7620 9.1210 +H 7.8409 11.2208 1.9305 +O 14.4665 13.3641 5.4560 +H 3.3855 14.7620 3.0303 +O 7.3659 5.6091 13.4074 +H 19.3194 13.2907 6.5900 +O 19.6889 3.6065 18.4396 +H 16.8170 1.1434 12.9195 +O 18.8519 17.2744 16.7697 +H 13.6793 4.6716 11.5927 +O 3.5560 3.6560 4.8642 +H 17.9040 8.6828 4.9509 +O 7.2470 17.8774 15.6954 +H 0.1776 10.4896 3.9911 +O 12.7703 9.2452 7.4166 +H 5.6702 18.6110 6.6002 +O 5.6267 6.5807 0.5477 +H 7.6627 1.0670 10.3804 +O 9.7425 19.0338 16.2265 +H 5.3415 3.8320 9.4129 +O 9.1966 2.6281 3.6436 +H 14.4529 5.2925 14.4782 +O 12.0893 8.7632 18.9830 +H 6.3376 11.6544 16.8425 +O 3.5596 16.7005 4.3359 +H 1.9478 10.9736 7.0205 +O 8.1531 18.7151 18.0672 +H 5.6302 5.5586 18.4035 +O 3.1281 11.5536 5.8285 +H 11.1197 19.7332 17.3800 +O 4.7048 7.6378 11.5960 +H 2.1485 10.4869 16.9043 +O 7.1971 1.8416 2.3407 +H 13.4436 10.7203 6.6573 +O 0.9523 13.6894 1.2752 +H 3.9950 4.0199 19.2718 +O 12.5529 10.4521 2.5256 +H 10.8661 10.0870 13.1198 +O 19.9823 4.1042 1.3624 +H 13.0152 6.8662 19.5503 +40 20.0 20.0 20.0 +frame 290 +O 11.0513 1.5580 8.9931 +H 7.9013 10.8815 2.0652 +O 14.7585 13.1825 5.3112 +H 3.6957 14.5609 3.0295 +O 7.4206 5.6765 13.8804 +H 18.8987 13.6827 6.6489 +O 19.6806 3.7239 18.8349 +H 16.4799 1.0270 12.4088 +O 18.7553 17.4961 16.8239 +H 13.8835 4.9159 11.4723 +O 3.9800 3.7656 4.6114 +H 18.4435 8.5488 4.6751 +O 7.5502 17.7413 15.3824 +H 0.4191 10.6102 3.5327 +O 12.5751 9.1488 7.2089 +H 5.3624 18.7145 6.2832 +O 5.8895 6.5776 19.8256 +H 7.2741 1.0712 10.6594 +O 9.5168 19.0383 16.6525 +H 4.9588 3.8529 9.5480 +O 9.6255 2.4920 3.9510 +H 14.4886 5.1523 14.5399 +O 11.8876 9.1419 18.5100 +H 6.3509 11.3530 16.7653 +O 3.2693 17.0115 4.5165 +H 2.0834 11.5059 7.0700 +O 7.6986 18.6804 18.1388 +H 5.5099 5.6087 19.2051 +O 3.2498 11.7770 5.6191 +H 10.7021 19.6332 17.1771 +O 4.6433 7.7559 11.8947 +H 1.7930 11.0427 17.2224 +O 7.8439 1.8052 2.1626 +H 13.1253 10.3922 6.7205 +O 0.9291 13.5013 1.4732 +H 4.2528 3.7017 19.4813 +O 12.5107 11.1550 2.2713 +H 11.4087 10.1699 13.4831 +O 19.9628 4.1551 0.8784 +H 12.7792 6.7041 19.3994 +40 20.0 20.0 20.0 +frame 291 +O 11.2497 1.3821 8.8132 +H 8.2095 11.1208 2.4029 +O 15.3175 13.5631 5.1705 +H 3.7371 14.8114 3.0915 +O 7.4153 5.8899 13.6320 +H 18.6023 13.6994 6.7568 +O 19.8967 3.9740 18.7688 +H 15.6275 1.0445 12.7889 +O 18.6237 17.1238 16.8281 +H 14.0391 5.2169 11.8668 +O 4.2886 3.6381 4.3341 +H 18.1612 7.8017 4.6409 +O 7.6078 17.7984 16.0443 +H 0.7825 10.5341 3.5745 +O 12.9612 8.7251 7.0617 +H 5.2814 19.1050 6.8508 +O 5.7917 6.6834 0.0036 +H 6.7120 1.6052 10.7958 +O 10.1267 19.2885 16.9040 +H 5.3418 4.1667 9.2923 +O 9.2541 2.5802 4.5640 +H 14.8689 4.5827 14.4295 +O 11.9737 9.3942 18.5265 +H 6.3559 11.4355 16.5927 +O 2.9133 17.0702 5.2388 +H 2.4475 11.8642 7.2743 +O 7.7360 18.8792 18.9068 +H 5.9120 5.2627 19.1603 +O 3.4789 11.8788 5.6231 +H 10.6608 0.1379 17.9204 +O 4.6846 8.3033 11.9749 +H 1.8178 10.6511 16.9853 +O 8.1255 2.1536 1.9981 +H 12.7502 10.0342 7.1342 +O 1.0386 13.2593 1.4466 +H 4.2667 3.8096 19.2221 +O 12.6375 11.0292 2.3531 +H 11.0151 9.8831 13.8763 +O 19.9946 4.1574 0.7142 +H 13.1793 7.0586 18.7820 +40 20.0 20.0 20.0 +frame 292 +O 11.7869 0.9633 8.8417 +H 8.3160 10.9011 2.3113 +O 14.9168 13.1741 5.1140 +H 3.8398 14.7096 3.0950 +O 7.3557 5.3229 13.9520 +H 18.5744 13.3866 6.8109 +O 19.9863 3.7662 19.1750 +H 15.7645 1.4239 12.6112 +O 18.2864 17.1720 17.0583 +H 14.2827 5.1234 11.7007 +O 4.8761 3.4565 4.0840 +H 17.6804 7.8658 4.2662 +O 7.6171 17.7887 15.8145 +H 1.0251 10.6586 3.5462 +O 13.1355 8.7323 6.5107 +H 4.7335 19.1526 6.9633 +O 5.4173 6.3998 19.8132 +H 7.0388 1.5145 10.5064 +O 10.3874 19.4561 17.0169 +H 4.9165 4.1087 9.3123 +O 9.3432 3.0295 4.5861 +H 14.9428 4.4066 15.0304 +O 11.5401 9.1024 18.0299 +H 7.1755 11.2221 17.0978 +O 2.7897 17.0068 5.5137 +H 2.5486 11.6859 7.3646 +O 7.7082 19.2867 18.8432 +H 5.6298 5.5908 18.9254 +O 3.3918 11.7459 5.3540 +H 10.4800 0.2687 17.4999 +O 4.6508 8.4887 12.6716 +H 1.8752 10.3160 17.4517 +O 7.7893 2.5867 1.6311 +H 13.0048 9.9481 6.7925 +O 0.9974 13.4294 1.4362 +H 4.2669 3.8375 19.1157 +O 12.3256 11.2996 2.6683 +H 10.6372 10.2249 13.9777 +O 0.0273 3.8624 19.7355 +H 13.1444 6.4172 19.4473 +40 20.0 20.0 20.0 +frame 293 +O 11.9841 0.9445 9.2328 +H 7.7534 10.9152 2.1054 +O 14.8418 13.2632 4.5620 +H 4.2918 15.4785 3.0858 +O 6.7525 4.9962 14.0572 +H 18.0167 13.8386 7.0934 +O 19.8576 3.3966 18.6191 +H 16.2143 1.5162 12.6632 +O 18.6447 16.9269 17.4266 +H 13.4766 5.2307 11.7780 +O 4.4199 2.9497 4.0203 +H 17.4110 7.8904 3.9459 +O 7.2761 17.6494 15.6417 +H 1.0067 10.5945 3.4114 +O 12.9407 9.2982 6.7323 +H 4.4508 18.7778 7.1843 +O 5.3733 6.6405 0.1834 +H 6.4980 1.7931 10.5629 +O 10.2922 19.6845 17.0896 +H 4.3853 3.5957 8.6852 +O 9.5356 2.7655 4.4243 +H 14.7652 3.8294 14.8585 +O 11.1824 8.8249 17.9602 +H 7.1389 11.6538 16.8770 +O 2.4615 17.2845 5.2189 +H 2.3484 12.0502 7.4697 +O 8.2651 19.2489 18.6966 +H 5.8734 5.8777 19.3691 +O 3.0815 11.9496 5.7111 +H 10.5335 0.2258 17.6098 +O 4.9281 8.5333 12.4373 +H 1.5707 10.7909 17.6940 +O 7.9480 2.3083 1.6802 +H 12.5220 9.7355 6.8054 +O 0.7189 13.4751 1.4883 +H 4.3759 3.9678 18.5389 +O 12.3185 11.1135 2.4338 +H 10.5062 10.0851 13.8169 +O 19.8112 4.0331 19.5963 +H 13.3549 6.2641 0.2383 +40 20.0 20.0 20.0 +frame 294 +O 11.7224 1.0442 9.4446 +H 7.2267 11.1152 2.3847 +O 14.9311 13.1785 4.6847 +H 4.1743 15.0102 3.0545 +O 6.7870 4.6907 13.4561 +H 17.7503 13.5888 6.6889 +O 19.8797 3.6298 18.3442 +H 16.3830 1.4615 12.5793 +O 18.5514 17.1774 17.9619 +H 13.3506 5.1772 11.7799 +O 4.5159 2.7128 3.7986 +H 17.8173 7.7021 4.4417 +O 7.1540 17.4318 15.3222 +H 1.2240 10.4560 3.0704 +O 12.6491 9.2759 6.8624 +H 3.7867 18.8609 7.0411 +O 5.3161 6.6393 0.3898 +H 6.9973 1.5491 10.7798 +O 10.2309 19.7227 16.9492 +H 4.9124 3.6123 8.5399 +O 9.8876 3.2927 4.1051 +H 15.0756 3.8606 14.1495 +O 11.3265 8.1736 18.3127 +H 7.0169 11.1489 16.8575 +O 2.5968 17.6207 5.6819 +H 2.0824 12.6842 7.7952 +O 8.9144 19.3233 18.4170 +H 5.9164 5.8769 19.2393 +O 2.5092 11.9423 5.4162 +H 10.3719 0.0698 17.2020 +O 4.7069 8.2367 12.2583 +H 1.0075 10.9157 17.6512 +O 8.0521 2.4177 2.1721 +H 12.5045 10.0477 6.8052 +O 0.9895 13.2877 1.7593 +H 4.5311 4.5581 18.5165 +O 12.6441 11.1471 2.4756 +H 10.7657 9.4546 14.0953 +O 0.0243 4.3499 19.3204 +H 13.0753 6.2385 0.2216 +40 20.0 20.0 20.0 +frame 295 +O 12.0486 0.0881 9.5210 +H 6.9985 10.6674 2.5528 +O 15.2973 12.8786 4.6382 +H 3.8321 15.3403 3.0679 +O 7.1027 4.6911 14.0096 +H 17.8514 14.1851 6.8838 +O 19.8355 4.1427 18.3819 +H 16.5899 0.9782 12.2511 +O 18.7331 17.8243 18.2701 +H 13.8085 4.7873 11.6014 +O 4.7494 2.6597 3.9851 +H 18.1184 7.7362 4.2392 +O 6.8560 17.1566 15.3920 +H 1.4099 10.5299 2.9764 +O 12.3675 9.5406 6.3928 +H 3.8943 18.6418 7.5698 +O 5.4381 6.5142 0.3901 +H 6.7156 1.4019 10.1484 +O 10.3870 19.6913 17.3151 +H 4.3609 2.6532 8.5671 +O 9.3582 3.4638 4.1408 +H 15.5050 3.9395 13.4778 +O 11.5721 8.0497 18.6951 +H 6.7880 11.7844 16.7048 +O 2.8193 17.5512 6.0513 +H 2.3638 12.7164 8.0156 +O 9.1744 19.8104 18.8804 +H 6.3675 5.7885 19.7238 +O 2.5332 12.2104 5.1344 +H 10.1379 0.1357 16.7715 +O 4.5905 8.5282 12.7194 +H 1.0880 10.7585 17.5845 +O 8.8746 3.0343 2.2301 +H 12.8998 9.9268 6.6926 +O 0.7976 13.0022 1.8634 +H 4.4343 4.4874 18.9907 +O 12.7146 11.1691 2.8261 +H 10.1768 9.4357 14.4028 +O 19.4182 4.1072 19.6606 +H 13.2789 5.7833 19.9474 +40 20.0 20.0 20.0 +frame 296 +O 12.4734 0.5763 9.5136 +H 7.0266 11.1859 2.6639 +O 15.1493 13.0439 4.7186 +H 4.3473 15.5944 2.7711 +O 6.8880 4.7650 13.8475 +H 17.5836 14.2972 7.3429 +O 0.3527 4.6486 18.5716 +H 16.0275 1.2347 12.4236 +O 18.2825 17.8783 17.9579 +H 14.3611 4.7664 11.8116 +O 4.8129 3.2090 3.5398 +H 18.4132 8.1761 4.6151 +O 6.8272 17.0358 15.4607 +H 1.2788 9.9329 3.0749 +O 12.3272 9.8243 6.6730 +H 3.9845 18.6916 7.2794 +O 4.9977 5.8121 0.6254 +H 6.4006 1.3445 9.7924 +O 10.2600 19.6952 16.4757 +H 4.6321 2.6629 8.4394 +O 9.4625 3.5748 4.3402 +H 15.2459 3.6682 13.1455 +O 11.5160 7.5395 18.5352 +H 6.8259 11.8327 16.5030 +O 2.6378 17.8858 6.5269 +H 2.7092 12.4436 8.1798 +O 9.4936 19.3162 18.7922 +H 6.4196 5.5394 19.9652 +O 2.4173 11.9166 5.3282 +H 10.3322 19.8602 16.6572 +O 4.4280 8.8017 12.7413 +H 1.3081 10.5169 17.8756 +O 8.6747 3.3462 2.5336 +H 12.8631 10.1779 6.6342 +O 0.5998 13.5359 1.8932 +H 4.6888 4.3479 19.2831 +O 12.1744 11.2789 3.2819 +H 10.6341 9.2738 14.5499 +O 19.3034 3.9095 19.7241 +H 13.2815 5.2013 19.9225 +40 20.0 20.0 20.0 +frame 297 +O 12.1665 0.4110 9.2800 +H 6.8305 11.1817 2.4516 +O 14.8602 13.3528 4.7542 +H 3.8210 15.6941 2.6271 +O 6.8091 4.6125 13.8899 +H 17.8623 14.5074 6.8700 +O 0.3775 4.4276 18.6526 +H 16.0491 1.2448 12.1523 +O 18.8091 17.9642 18.1944 +H 14.4129 5.0177 12.2888 +O 5.0001 3.3744 3.5440 +H 18.5533 8.1361 4.6714 +O 6.6751 16.6694 15.4444 +H 1.4454 9.8821 3.1786 +O 12.8025 9.9179 7.1969 +H 3.7272 19.0489 7.6965 +O 5.1652 5.2424 0.4757 +H 6.7511 1.4301 10.5351 +O 10.0894 19.7368 16.4346 +H 4.5574 2.6828 8.4589 +O 9.5987 3.6171 4.0688 +H 15.2056 3.7058 12.9926 +O 11.4957 7.0897 18.9023 +H 6.9270 11.2386 16.2325 +O 2.6084 17.7082 6.4704 +H 2.4065 12.4017 8.1952 +O 9.4475 19.4040 19.0199 +H 6.5926 6.0685 19.6364 +O 2.7210 12.2468 4.8862 +H 10.3180 0.2711 16.9580 +O 4.2280 9.1998 12.5130 +H 1.0931 11.0065 17.7476 +O 8.6665 3.0467 2.8585 +H 12.6385 9.5327 6.1917 +O 0.5303 13.4096 2.1746 +H 4.4908 4.3522 18.7064 +O 12.3957 11.5673 3.7287 +H 10.9689 9.3764 14.8507 +O 19.8616 4.5119 19.4633 +H 13.8217 5.4673 19.8011 +40 20.0 20.0 20.0 +frame 298 +O 12.2971 19.9225 9.2889 +H 7.1226 11.4098 2.3306 +O 14.7683 13.4344 4.1081 +H 3.8506 15.7793 3.0732 +O 7.3493 4.9692 13.6671 +H 17.1722 14.2857 7.0819 +O 0.4229 4.6620 18.5431 +H 16.3451 1.0610 12.0552 +O 18.7181 18.1949 18.3362 +H 14.1197 4.9475 12.0079 +O 4.9545 2.9624 4.4086 +H 19.1984 8.0564 4.5895 +O 6.5894 17.4287 15.1522 +H 1.5307 9.7622 3.5544 +O 13.0490 9.6570 7.0824 +H 3.9212 19.0821 7.6538 +O 5.4102 5.4048 0.4319 +H 6.2359 1.4003 10.4847 +O 10.0866 19.6516 16.3570 +H 4.2252 2.3854 8.4228 +O 9.4831 3.1120 3.9886 +H 15.7080 3.5593 12.8883 +O 12.1558 6.6446 19.0222 +H 7.0789 11.2391 16.1467 +O 2.6490 17.4969 6.7230 +H 2.4785 12.6744 8.0551 +O 9.4364 19.4559 19.4344 +H 6.0328 6.2060 0.1276 +O 2.8506 12.3800 4.9720 +H 10.4298 0.3039 16.9992 +O 4.2174 9.1672 12.6232 +H 0.9266 11.2127 17.7381 +O 8.2649 3.4481 2.4782 +H 12.4656 9.4982 6.0682 +O 0.6957 13.5695 2.7565 +H 4.7115 4.1641 18.9245 +O 12.2241 11.1334 2.9853 +H 10.3361 9.2945 15.1959 +O 0.1281 4.0300 19.4905 +H 13.9371 5.3552 19.2092 +40 20.0 20.0 20.0 +frame 299 +O 12.1751 0.3591 9.2501 +H 6.9389 11.2803 1.8439 +O 14.5968 13.5398 4.4841 +H 4.3085 16.2352 2.8367 +O 7.3910 5.0820 13.6676 +H 17.8456 14.2574 6.9885 +O 0.3917 4.4921 18.5573 +H 16.1340 0.8327 11.9880 +O 18.5125 18.1459 17.7315 +H 13.7949 5.4336 12.1770 +O 4.5870 2.7207 4.0419 +H 19.7095 8.4357 4.7361 +O 6.8568 17.0680 14.5995 +H 1.0274 9.5838 3.0752 +O 12.5652 9.2519 7.1019 +H 3.4481 19.3629 8.0675 +O 5.5828 5.1781 0.1948 +H 6.2706 1.1051 10.6533 +O 10.0646 0.0201 16.3920 +H 4.3968 1.9096 8.4231 +O 9.6355 2.6213 3.9773 +H 15.6204 2.8699 12.8793 +O 11.7766 7.0196 19.1819 +H 7.1260 11.1602 15.8675 +O 2.7013 17.2417 6.5652 +H 1.9445 12.9047 8.3576 +O 9.4900 19.0084 19.0932 +H 5.7079 6.0069 0.9065 +O 2.7730 12.5630 5.2338 +H 10.8411 19.6575 17.1730 +O 4.3536 9.3592 12.1727 +H 0.9336 11.3200 17.4793 +O 8.5440 3.4668 2.4418 +H 12.5098 9.1516 6.1306 +O 0.6530 14.2332 2.9508 +H 4.5557 4.3037 19.0977 +O 11.9737 11.2828 2.5326 +H 10.3809 9.0484 15.0450 +O 0.5844 4.0506 19.7150 +H 13.5166 5.0331 19.1299 +40 20.0 20.0 20.0 +frame 300 +O 11.9674 0.2703 8.7536 +H 6.9139 11.3777 2.0449 +O 14.3357 13.1593 4.5065 +H 4.6372 16.4047 2.7821 +O 7.1547 5.6461 13.4480 +H 17.7255 13.9558 6.7657 +O 0.6324 4.2166 18.4979 +H 15.8740 0.9092 11.8376 +O 18.9674 17.4542 17.7637 +H 13.1663 5.1549 12.5608 +O 4.8255 2.6133 3.7950 +H 19.6129 8.7278 5.0669 +O 6.9495 17.4491 14.8168 +H 1.1918 9.8815 3.2541 +O 12.8133 9.5502 7.0982 +H 3.8797 19.0623 8.0518 +O 5.5251 5.3256 0.3050 +H 6.1739 1.1311 10.4731 +O 9.6221 0.6116 16.6342 +H 4.4467 1.7408 8.7362 +O 10.1202 2.3984 3.8184 +H 16.0796 3.1461 13.2192 +O 11.7520 6.7296 19.9745 +H 7.6253 11.1209 16.1613 +O 2.8261 17.2525 6.4490 +H 1.5739 12.9846 8.2821 +O 9.4593 18.4757 19.7837 +H 6.1902 6.1122 0.9588 +O 2.7216 12.8333 5.0800 +H 10.8471 19.8927 16.9748 +O 4.4178 9.5676 11.9198 +H 0.5287 11.7956 17.1915 +O 9.0161 2.8773 2.2572 +H 12.6803 8.9436 6.4050 +O 0.8771 14.2327 2.6332 +H 4.6719 4.3170 19.1761 +O 11.8696 11.2840 2.1051 +H 10.0521 9.4783 15.1878 +O 0.7242 3.9184 19.9299 +H 13.2507 5.2435 18.9968 +40 20.0 20.0 20.0 +frame 301 +O 12.3125 0.0848 8.7086 +H 6.8434 11.3111 2.2988 +O 14.5572 13.2639 4.6308 +H 4.4404 16.2902 2.6521 +O 7.4709 5.8582 13.5254 +H 17.8163 14.0755 6.7006 +O 0.4335 3.6115 18.6384 +H 15.6391 1.0739 11.7583 +O 18.6970 16.9356 18.0080 +H 12.9460 4.9974 12.4496 +O 4.4868 2.4734 3.0092 +H 0.0498 8.3847 4.5561 +O 6.8235 17.7831 14.1315 +H 0.8725 9.9949 3.6183 +O 12.2285 9.9227 7.2173 +H 3.8677 19.2657 7.8223 +O 5.6889 5.4781 0.0222 +H 6.0430 1.5015 9.7601 +O 9.4754 0.5461 16.6522 +H 4.3311 1.3988 8.6993 +O 10.1241 2.1309 3.6817 +H 15.9823 3.4525 12.3854 +O 12.1473 6.9517 19.9549 +H 7.0893 10.9168 16.4759 +O 3.0001 17.2536 7.0226 +H 1.5432 12.9787 8.3696 +O 9.6070 18.6085 19.7446 +H 5.9206 5.8423 1.1769 +O 2.4139 12.6619 4.9666 +H 10.7592 0.0893 16.5723 +O 4.6954 10.0864 11.5189 +H 0.4306 11.4527 17.3481 +O 9.0819 2.4439 1.8168 +H 13.0891 9.0125 6.1112 +O 0.7935 14.7997 2.4259 +H 4.5062 4.4194 18.5477 +O 11.7507 11.1056 2.0917 +H 9.8439 9.7107 15.0389 +O 0.9981 4.0340 19.3503 +H 12.5919 5.7220 18.9529 +40 20.0 20.0 20.0 +frame 302 +O 12.4865 19.8046 8.7672 +H 6.7261 10.9016 2.3516 +O 14.6570 13.1253 4.4611 +H 4.8311 15.9660 2.9648 +O 7.2704 5.5602 13.9352 +H 18.2994 13.9917 6.5180 +O 19.9738 3.7589 18.6262 +H 15.4323 0.9933 11.5307 +O 18.6272 17.1935 17.9625 +H 12.5847 5.0832 12.8141 +O 4.3596 3.0164 2.5669 +H 0.4656 8.2068 4.2710 +O 6.8976 17.3520 14.5408 +H 0.3053 9.8797 4.2145 +O 12.4464 9.5913 6.5334 +H 4.3116 19.1211 7.6547 +O 5.4979 5.3724 0.3782 +H 5.8662 2.1108 10.0906 +O 9.7784 0.5299 16.8780 +H 4.7459 1.0722 8.9471 +O 10.3052 2.3035 3.7921 +H 16.1635 3.7752 12.6185 +O 11.9594 6.9121 19.5549 +H 7.1534 10.9424 16.6552 +O 3.4215 17.4393 7.1402 +H 1.3966 12.2463 8.1201 +O 9.7442 18.6971 19.2712 +H 6.0792 5.3116 1.2576 +O 2.1889 13.3556 5.2737 +H 10.6539 19.9623 16.7315 +O 4.8967 10.2744 11.8917 +H 0.9617 10.8893 16.8868 +O 9.3583 2.3381 2.0390 +H 13.5131 9.0410 6.8475 +O 0.9338 14.9761 2.8158 +H 4.2803 4.9418 18.7482 +O 11.6815 11.0707 2.7217 +H 10.1929 9.3517 15.0223 +O 0.8926 4.2332 19.3081 +H 12.0117 5.1167 19.8368 +40 20.0 20.0 20.0 +frame 303 +O 12.4608 0.0649 8.7672 +H 6.2832 10.8476 2.6238 +O 14.9900 13.1925 3.9585 +H 4.6540 15.6298 2.8450 +O 7.1585 5.3454 13.7356 +H 18.8545 13.8494 6.8524 +O 0.4510 3.0932 18.7229 +H 15.3877 1.2550 11.4681 +O 18.6338 17.0243 17.6922 +H 12.3514 5.0454 12.9122 +O 4.6223 2.7402 2.9726 +H 19.8843 8.5142 4.0405 +O 7.3229 17.6979 14.3308 +H 0.4753 9.8844 4.2819 +O 11.9989 9.3872 6.4851 +H 4.5249 19.0888 7.9034 +O 5.3306 5.2460 0.5801 +H 5.8301 2.0728 9.9869 +O 9.5460 1.5124 17.1805 +H 4.7395 0.6316 9.0178 +O 10.3234 2.5893 4.3533 +H 16.2569 3.7891 12.3757 +O 12.7248 6.8799 19.7098 +H 7.2562 10.8211 15.7907 +O 3.2416 17.1755 7.4926 +H 1.3303 12.5370 8.2640 +O 9.9323 19.2679 19.3450 +H 6.1453 5.0639 0.8437 +O 2.0883 13.7429 5.3929 +H 11.2089 0.0438 16.5782 +O 5.0267 10.4520 11.9692 +H 1.2818 10.9859 17.6586 +O 9.1733 2.1114 1.9870 +H 13.6690 8.5266 6.1059 +O 0.7373 15.0513 2.1910 +H 4.4464 5.2137 19.1958 +O 11.5572 10.8082 2.6314 +H 10.0352 9.2109 15.3456 +O 0.9894 4.0157 19.3432 +H 11.9876 4.8312 19.3628 +40 20.0 20.0 20.0 +frame 304 +O 12.8714 19.7649 8.3538 +H 6.2115 11.1770 1.9797 +O 15.0850 13.7033 4.1797 +H 4.1404 15.2694 3.2015 +O 6.8200 5.7229 13.4635 +H 18.6534 13.7406 7.6225 +O 19.9604 3.1534 18.1149 +H 15.1189 1.3218 11.5294 +O 18.2178 17.0623 18.0213 +H 11.9734 5.4918 13.1438 +O 4.6682 2.8702 2.9480 +H 19.6897 8.7601 4.0017 +O 7.1798 17.6400 14.6815 +H 1.0060 9.7096 4.3511 +O 12.1073 9.4610 6.5634 +H 4.6199 19.1520 8.0138 +O 5.2993 5.3522 0.6974 +H 6.0178 1.5474 10.0590 +O 9.2779 1.2902 17.3763 +H 5.0192 0.5080 9.3988 +O 9.8822 2.5272 4.3124 +H 16.3667 4.1428 12.5279 +O 13.1919 6.7663 19.4716 +H 7.1103 10.9283 15.8193 +O 2.8912 17.3233 8.1042 +H 1.3709 12.1911 8.3723 +O 10.4527 19.1875 19.7229 +H 5.8568 5.4013 0.2929 +O 1.6757 13.7840 5.5003 +H 11.5580 0.3186 16.9218 +O 4.7412 10.9321 12.5079 +H 1.0940 10.8016 17.9680 +O 8.9830 2.0135 2.1139 +H 14.4271 8.3356 5.9078 +O 0.2554 15.3000 1.2687 +H 4.7223 4.8311 19.1590 +O 11.5988 11.1738 2.7474 +H 9.2847 9.0719 15.3950 +O 1.1559 4.6180 19.7686 +H 12.2221 5.1844 19.1007 +40 20.0 20.0 20.0 +frame 305 +O 13.0185 19.5676 8.3358 +H 6.6532 11.5893 2.0852 +O 14.9281 14.2831 4.0874 +H 4.4297 15.9571 3.5541 +O 6.3862 5.8193 13.6919 +H 18.6059 13.9020 7.5328 +O 19.8392 2.9746 17.4874 +H 15.6338 1.3145 11.6075 +O 18.3141 17.4382 18.0542 +H 11.5171 5.0202 12.9981 +O 4.7306 2.7495 2.7816 +H 0.0613 8.4580 3.5829 +O 6.8741 17.4029 14.5937 +H 0.5302 9.4319 4.5635 +O 12.2485 9.3274 6.3746 +H 4.7185 19.1177 7.8904 +O 4.9055 5.2481 1.1714 +H 5.9575 1.4148 10.2033 +O 9.4239 0.5842 17.6872 +H 5.4961 0.7575 8.7667 +O 9.9132 2.9596 4.4091 +H 16.0675 3.8367 12.5207 +O 13.0890 7.1102 19.1301 +H 6.4712 11.1842 15.8832 +O 3.4656 17.1806 8.4143 +H 1.2301 11.9787 8.2563 +O 10.6829 19.0850 19.3239 +H 5.9545 5.4993 19.7726 +O 1.4932 13.8561 5.7130 +H 11.5068 19.7777 17.1930 +O 4.9656 10.9324 12.4246 +H 1.5206 11.0024 18.2574 +O 8.6098 2.0230 1.7904 +H 14.4241 8.0856 5.8990 +O 0.3328 15.3201 1.1942 +H 3.9244 5.5716 19.2443 +O 11.5123 11.4309 2.7383 +H 9.8276 8.9398 15.1192 +O 0.7372 4.7486 19.9040 +H 12.6837 4.8299 19.4140 +40 20.0 20.0 20.0 +frame 306 +O 12.7979 19.3907 8.1243 +H 6.0355 11.8478 1.7335 +O 15.0968 14.0869 3.9307 +H 4.2381 16.3899 3.8349 +O 6.2996 5.7015 13.6697 +H 18.2407 13.7336 7.4045 +O 0.1249 2.8358 17.4912 +H 15.9193 1.1544 11.8259 +O 18.2067 17.5534 17.8584 +H 10.7104 4.5636 12.3382 +O 4.9348 2.8602 2.4803 +H 0.6117 7.8652 3.8172 +O 6.6198 17.1886 14.9540 +H 0.4552 9.7227 5.2193 +O 12.4058 9.1053 5.8741 +H 4.5161 19.2345 7.7459 +O 5.1264 5.3151 1.6451 +H 5.7492 1.4575 9.8818 +O 8.9791 0.5727 18.0796 +H 5.2606 0.7646 8.5916 +O 9.4550 2.9261 4.2613 +H 16.2461 3.4360 12.6107 +O 13.1104 6.7350 19.4845 +H 6.7430 10.9041 15.9717 +O 3.4299 17.2079 8.4819 +H 0.8482 12.4817 8.6701 +O 10.2430 19.4408 19.3013 +H 5.8815 5.5157 19.8232 +O 1.2786 13.4641 6.0810 +H 11.8338 19.4287 17.5965 +O 5.0370 10.5068 12.2438 +H 1.7157 11.2746 18.7048 +O 8.9341 1.9408 1.7917 +H 14.6420 7.7827 6.2679 +O 1.4610 15.2616 1.2344 +H 3.6346 5.6072 19.2926 +O 11.1229 11.2357 2.6938 +H 9.5490 9.1784 15.2890 +O 0.4906 4.7710 19.6848 +H 12.9072 4.8980 19.0960 +40 20.0 20.0 20.0 +frame 307 +O 13.0412 19.6905 8.5680 +H 6.1427 11.5258 1.9070 +O 14.9874 13.5337 3.5959 +H 4.6982 16.3354 3.1516 +O 6.4116 5.9883 14.2611 +H 18.4081 13.5188 7.4805 +O 19.9794 2.6986 17.8781 +H 15.8063 1.7768 11.8154 +O 18.7721 17.5519 18.0270 +H 10.8466 4.6200 12.2287 +O 4.8562 2.6232 3.0964 +H 0.3368 7.6472 4.1152 +O 6.5998 17.3198 15.3053 +H 0.1918 9.1992 5.3904 +O 12.3744 8.9901 5.7635 +H 4.5028 19.4051 7.7756 +O 5.5362 5.0286 1.5044 +H 6.3503 1.5776 9.7176 +O 8.8910 0.7237 18.6493 +H 5.6036 1.1283 8.8331 +O 10.1072 2.8745 4.0608 +H 16.1136 3.9197 12.7372 +O 13.2141 6.6664 19.9345 +H 6.5936 11.0122 15.3429 +O 3.4501 17.2906 8.8079 +H 0.7537 12.4205 8.1579 +O 10.4948 19.9947 19.0135 +H 5.3760 6.0188 19.9848 +O 0.9581 13.5822 6.0887 +H 11.8855 19.5112 17.5487 +O 5.0826 10.3897 12.2229 +H 1.4216 11.7323 18.7763 +O 8.9856 2.3834 1.7670 +H 14.5987 7.8247 6.5424 +O 1.2955 15.4871 1.4129 +H 3.9919 5.3045 19.0958 +O 11.2293 10.7819 2.6233 +H 9.4754 9.3679 15.3012 +O 0.5621 4.9647 19.2181 +H 12.8871 4.8839 19.4450 +40 20.0 20.0 20.0 +frame 308 +O 13.1501 19.6723 8.3070 +H 6.3798 11.9942 1.7151 +O 15.1052 12.5162 4.1181 +H 4.9284 16.4037 3.0908 +O 7.1074 5.7470 14.2548 +H 18.7637 13.5250 7.5679 +O 0.1097 2.7564 17.8996 +H 16.2771 1.1822 12.1999 +O 19.1371 17.2022 17.6336 +H 10.7251 5.1940 12.5017 +O 4.6739 2.6916 3.1691 +H 0.0629 7.5715 4.3790 +O 6.8365 17.3922 14.7587 +H 0.3473 9.0863 5.3710 +O 12.0774 8.9096 6.0136 +H 4.1231 19.0876 7.4158 +O 5.7920 5.1041 1.5048 +H 6.5896 1.9918 9.9367 +O 8.6735 0.9631 19.1302 +H 6.1177 1.0590 8.9485 +O 10.6144 2.4293 4.0736 +H 16.3527 3.8361 12.5445 +O 13.0307 6.3899 0.0174 +H 6.2923 10.4930 15.3112 +O 2.8782 17.5093 8.7611 +H 0.9027 12.3595 8.0538 +O 10.9041 0.2408 19.5560 +H 5.6183 6.2156 19.7752 +O 0.8442 13.6997 6.0646 +H 12.3106 19.7485 17.4122 +O 5.0226 10.5909 11.6731 +H 1.7266 11.3251 19.0555 +O 9.3026 3.0420 1.7415 +H 14.2665 7.4247 6.2626 +O 1.4810 15.6249 1.6530 +H 3.4768 5.3460 19.0568 +O 10.8255 10.9077 2.4013 +H 9.5345 9.3986 15.3846 +O 0.5416 4.7491 19.1768 +H 12.3778 4.6623 19.5044 +40 20.0 20.0 20.0 +frame 309 +O 12.7352 19.9123 7.8071 +H 6.1983 12.5558 2.1750 +O 15.3709 12.1392 4.5905 +H 4.8232 16.8940 2.7104 +O 7.1431 5.8098 13.9540 +H 18.4131 13.7922 7.1660 +O 19.7189 3.2684 18.1647 +H 16.4042 0.8728 12.6516 +O 19.4260 16.8550 17.6532 +H 10.9219 4.8579 12.9718 +O 4.7563 2.3556 3.3666 +H 19.9579 7.4028 4.2870 +O 6.5537 17.7857 14.8712 +H 0.1521 9.5152 5.5946 +O 11.9352 8.9239 5.9489 +H 4.3895 19.5833 7.5927 +O 5.7910 5.0281 2.0799 +H 6.5503 1.7183 10.2441 +O 8.7268 1.0909 19.0721 +H 5.7600 1.0348 8.6696 +O 10.7124 2.5262 4.0054 +H 16.3854 4.0673 12.8948 +O 13.3944 6.3828 19.5246 +H 6.5185 10.7067 15.1503 +O 2.3706 17.2555 9.3448 +H 1.1566 12.1197 8.4858 +O 11.2165 0.2276 19.7859 +H 5.4752 6.0482 19.7573 +O 1.2317 13.9417 6.0962 +H 12.7253 19.4407 17.7343 +O 4.6082 10.7711 11.8384 +H 2.0461 11.3380 18.6474 +O 9.0108 3.1657 2.0294 +H 14.4873 7.8006 6.4250 +O 1.9812 15.3625 1.4255 +H 3.5891 4.7527 19.4467 +O 10.3310 11.1377 2.5354 +H 9.8140 8.8719 16.2070 +O 0.1863 4.5990 18.9898 +H 12.4785 4.2664 19.4291 +40 20.0 20.0 20.0 +frame 310 +O 13.2598 19.9759 7.7138 +H 5.8928 12.3170 2.6664 +O 15.7620 12.4818 4.9354 +H 4.7759 17.0296 2.9703 +O 6.7358 5.6435 14.1595 +H 18.5507 14.0691 7.4474 +O 19.4930 3.1133 18.3937 +H 16.5125 1.2130 12.3873 +O 19.6151 17.1094 17.6323 +H 10.6839 5.1011 12.8489 +O 4.6030 1.9581 3.2929 +H 19.9434 7.4216 4.0381 +O 6.8172 18.2422 15.1593 +H 0.0294 9.5439 5.4043 +O 11.9548 8.9216 5.7634 +H 4.7586 19.3935 7.7030 +O 5.8698 5.3444 2.0454 +H 6.3080 1.4801 10.5205 +O 8.7782 1.0796 19.0805 +H 6.0855 1.2307 8.9671 +O 11.0209 2.2325 4.3430 +H 16.2358 4.2348 12.8865 +O 13.5015 6.0748 19.3967 +H 6.8621 10.3497 15.7040 +O 2.3420 16.8400 9.6257 +H 1.2511 12.5910 9.0840 +O 11.7446 0.2114 0.1159 +H 5.5283 5.9429 19.9013 +O 0.6568 13.9535 6.4311 +H 12.1058 19.4929 17.0682 +O 5.0128 10.3202 11.6624 +H 2.0557 11.7536 18.9601 +O 9.0103 3.0477 2.1951 +H 13.7870 7.9844 6.3276 +O 1.9312 15.6662 1.3377 +H 3.4917 4.8988 19.7632 +O 10.2653 11.4521 2.3810 +H 10.1105 8.5895 16.7396 +O 0.2050 4.5366 18.9510 +H 12.0584 4.1798 19.9693 +40 20.0 20.0 20.0 +frame 311 +O 13.0254 0.3919 7.7300 +H 5.7876 12.6245 2.6977 +O 15.8005 11.8551 5.1666 +H 5.1741 16.9520 2.7216 +O 6.3493 6.4278 14.2424 +H 18.2956 14.2134 7.3578 +O 19.2133 3.6109 17.9836 +H 16.6643 0.7205 12.5213 +O 19.7392 16.9595 17.3093 +H 10.9016 5.7273 13.2202 +O 4.8839 1.7686 3.2516 +H 0.3053 6.8657 4.2312 +O 7.0141 17.8198 14.8910 +H 19.9927 9.9880 5.4277 +O 11.5685 9.3217 5.5441 +H 4.6585 19.2230 7.7941 +O 6.3622 5.6139 1.8082 +H 6.4901 1.2508 10.6039 +O 8.4082 0.8713 19.0802 +H 5.9427 0.5379 9.0402 +O 11.0278 2.1657 4.3556 +H 16.1517 4.3680 13.1009 +O 13.2414 6.2174 19.7023 +H 6.8586 10.0258 15.5781 +O 2.3039 17.0892 9.9981 +H 1.5112 12.1588 9.2800 +O 11.6772 0.4250 0.2718 +H 5.2663 5.8000 19.6024 +O 0.3475 14.4411 6.7477 +H 11.8577 19.3953 16.9071 +O 4.4237 10.4015 11.4657 +H 2.2627 11.9940 18.8822 +O 9.5437 3.1485 2.3554 +H 13.5896 7.7270 6.1418 +O 2.2565 15.6572 1.6560 +H 3.4494 5.1070 19.7694 +O 10.2963 11.7967 2.3076 +H 9.9173 8.6110 16.8911 +O 0.5142 4.5046 19.0567 +H 12.3416 4.2226 19.7726 +40 20.0 20.0 20.0 +frame 312 +O 13.3311 0.2319 8.0074 +H 5.8324 12.2866 2.5306 +O 16.1956 11.4425 5.6568 +H 5.0386 16.4328 2.5448 +O 6.5829 6.7239 14.4929 +H 18.2091 14.5791 7.2063 +O 19.4736 3.4153 18.4262 +H 16.5395 0.7166 12.4500 +O 19.7100 17.0153 17.2415 +H 10.9296 5.9009 13.2069 +O 4.8613 1.7463 3.3975 +H 0.2547 6.8439 4.6444 +O 7.4837 17.8598 15.0670 +H 0.3096 10.5483 5.2283 +O 11.7454 9.6691 5.6330 +H 5.3277 19.5048 7.6734 +O 6.8089 5.7029 1.8781 +H 6.8466 0.8343 11.2014 +O 8.1765 0.5155 18.8408 +H 6.2031 0.2463 9.0669 +O 10.6095 2.0483 4.4652 +H 15.9937 4.2614 12.9774 +O 13.3890 6.0439 19.4076 +H 6.4561 10.1879 15.8892 +O 2.4374 17.2634 9.5912 +H 1.5008 12.3027 8.6187 +O 11.6143 0.4584 1.1157 +H 5.1738 6.1341 19.5524 +O 0.3080 14.4367 7.4526 +H 12.2311 19.3456 17.4271 +O 3.9511 10.1716 11.3221 +H 1.8759 11.6295 18.6744 +O 9.6311 3.0553 2.2768 +H 13.9852 7.5612 5.8538 +O 2.7083 15.2505 2.3635 +H 3.4993 4.5366 0.2032 +O 10.3995 11.4516 2.2369 +H 9.7032 8.3443 16.8718 +O 0.3679 4.2511 19.1959 +H 12.3484 4.7662 19.6580 +40 20.0 20.0 20.0 +frame 313 +O 13.0346 0.7601 7.7922 +H 5.9548 12.4593 3.0434 +O 16.1087 11.3303 5.6677 +H 4.8174 16.3850 2.6420 +O 6.5549 6.8932 14.2822 +H 18.2954 14.9255 7.0772 +O 19.7041 3.1098 18.3110 +H 15.9914 0.5784 12.3063 +O 19.6311 17.3126 17.2775 +H 10.8842 5.7576 13.3010 +O 5.0870 1.6514 3.4114 +H 0.5603 6.9505 4.6551 +O 7.2311 17.9498 14.7264 +H 0.1959 9.9331 5.4819 +O 11.3900 10.2212 5.8344 +H 5.1545 19.8534 8.1179 +O 7.0879 6.5194 1.9550 +H 6.4322 0.6343 10.8185 +O 8.6560 0.9108 18.8977 +H 6.1807 0.4203 8.8666 +O 10.2576 1.5402 3.9258 +H 15.9664 4.3902 12.9014 +O 13.6048 5.9253 19.1549 +H 7.0750 10.1003 16.1469 +O 3.0514 16.4589 9.2444 +H 1.4685 11.8972 8.6669 +O 11.9727 0.7292 1.3588 +H 5.2990 6.2384 19.3081 +O 19.9480 14.1870 6.9422 +H 12.5624 19.1247 17.7490 +O 3.9556 10.0118 11.5700 +H 1.9398 12.2865 18.7728 +O 9.6363 2.7662 2.3336 +H 14.1830 7.4521 5.8917 +O 3.1496 15.3344 2.4380 +H 3.9986 4.6772 0.1390 +O 10.5056 11.4975 2.6150 +H 10.0558 8.7830 16.8850 +O 1.0288 3.9756 19.0633 +H 12.2600 5.0199 19.4492 +40 20.0 20.0 20.0 +frame 314 +O 13.7425 0.9294 8.2601 +H 6.5258 12.1278 3.3227 +O 16.4632 11.2601 5.6252 +H 4.9685 16.6227 2.9957 +O 6.9490 6.9868 14.7761 +H 18.5954 15.1352 7.0848 +O 19.6579 3.1299 18.3103 +H 15.6187 1.0796 12.3548 +O 19.2789 17.1369 16.8853 +H 11.4638 5.6097 13.1845 +O 4.8194 2.1050 3.6289 +H 1.1400 7.0642 4.8512 +O 7.2602 17.9059 14.7821 +H 0.4613 9.9071 5.4489 +O 10.8362 10.4601 5.5928 +H 5.0058 19.6684 7.9064 +O 7.2430 7.2181 2.3170 +H 6.2521 19.9031 10.2579 +O 9.0242 0.6129 19.3870 +H 5.8336 0.4661 8.4810 +O 10.1014 1.6689 3.9406 +H 15.7009 4.0640 13.3778 +O 13.7091 6.4626 19.3057 +H 7.6276 9.8123 15.9861 +O 3.1511 17.1283 9.3255 +H 1.4505 12.4904 8.3851 +O 11.8436 0.4958 2.0182 +H 5.3007 6.1834 19.4966 +O 19.7099 13.9612 7.5132 +H 12.7552 18.9723 17.3572 +O 3.7003 9.7822 11.6241 +H 1.9812 12.1352 18.7587 +O 10.1015 2.9675 2.1680 +H 14.3794 7.4644 5.6380 +O 2.9791 15.1264 2.1557 +H 3.7591 5.0321 0.2214 +O 10.3571 11.8596 2.0150 +H 10.6125 8.3862 16.6983 +O 0.5204 3.9638 18.9333 +H 12.9190 5.2863 19.7104 +40 20.0 20.0 20.0 +frame 315 +O 13.4655 1.0378 7.9785 +H 6.7799 12.4332 3.5445 +O 16.1503 11.1522 6.1706 +H 4.8311 16.1517 2.6776 +O 6.7857 6.3863 14.8368 +H 18.6306 15.3823 7.3015 +O 19.9026 3.0705 18.2796 +H 15.7937 1.2472 12.4269 +O 19.4937 16.8130 16.6852 +H 11.5183 5.8299 12.6697 +O 4.8643 2.2757 3.6037 +H 1.0585 7.1981 4.7939 +O 7.1363 17.8366 14.7506 +H 0.2800 10.3409 5.9631 +O 11.3818 10.6250 5.3799 +H 5.3202 19.4317 8.1783 +O 7.5189 7.2612 2.1187 +H 6.4289 0.3446 10.1180 +O 8.1555 0.5933 19.4310 +H 5.9527 0.3684 8.3514 +O 9.9119 2.0412 4.0398 +H 15.4292 4.4058 13.4848 +O 13.8423 6.5853 19.4389 +H 7.7126 10.0195 16.2884 +O 3.1438 16.7279 9.3239 +H 1.1090 12.5710 8.4672 +O 12.2237 1.1664 2.1360 +H 5.3423 6.1763 19.9623 +O 19.8228 13.7522 7.6042 +H 13.4526 18.7853 17.1265 +O 3.8385 9.9180 11.6159 +H 1.9590 12.4819 18.5000 +O 10.0521 3.2643 1.8364 +H 14.3185 7.9853 5.5666 +O 3.0230 15.1430 1.8885 +H 4.0951 4.6616 19.6064 +O 10.2924 12.1087 1.9216 +H 10.1071 8.8618 17.1422 +O 0.2174 3.2846 19.3530 +H 13.1729 5.1988 0.0841 +40 20.0 20.0 20.0 +frame 316 +O 13.2955 0.8054 8.4668 +H 6.5453 12.3871 3.6595 +O 16.1032 10.7939 6.0288 +H 4.7488 16.0526 2.7995 +O 6.0890 6.1891 15.1406 +H 18.8565 15.4231 7.4991 +O 19.7091 2.8448 18.0196 +H 15.9094 1.3303 12.2435 +O 19.5215 16.5820 17.0281 +H 11.4068 6.2695 12.6426 +O 5.1727 2.0348 3.7916 +H 1.2090 7.3377 4.7559 +O 6.9413 18.0517 14.5828 +H 0.1053 10.5154 5.5762 +O 11.0740 10.2541 5.5696 +H 4.9614 19.4784 8.2808 +O 7.3000 6.8332 1.8182 +H 6.6308 19.8022 10.1540 +O 8.4104 0.9204 19.7489 +H 6.1443 0.5748 7.8966 +O 10.2969 2.2722 3.7214 +H 15.9113 4.4719 13.6817 +O 14.0845 6.5281 0.2530 +H 7.5250 10.0907 15.7772 +O 4.0351 16.5383 9.7264 +H 0.4743 12.6871 8.6086 +O 12.0226 1.3413 1.8868 +H 5.3448 6.3562 19.9018 +O 19.7014 13.6548 7.9817 +H 13.4622 18.7702 17.4505 +O 4.3603 10.1214 11.9365 +H 1.9121 13.0293 18.1836 +O 10.0510 3.2182 1.2887 +H 14.4299 7.7438 5.4884 +O 2.8904 15.1492 1.6008 +H 4.2738 5.1858 19.1994 +O 10.2780 12.3022 1.9346 +H 9.8772 8.3854 16.4064 +O 19.4683 3.3363 19.2360 +H 13.6023 4.9338 0.3303 +40 20.0 20.0 20.0 +frame 317 +O 13.2905 0.6982 8.1406 +H 6.2655 12.0627 3.4869 +O 16.0230 11.2805 6.3111 +H 4.5639 16.3907 3.0749 +O 5.6167 6.3838 15.2879 +H 18.9265 15.5224 7.5304 +O 19.9624 2.6460 17.7243 +H 15.4326 0.8459 12.1974 +O 19.4773 16.7418 17.7082 +H 11.6041 6.6274 12.7668 +O 5.3903 2.2369 4.1598 +H 0.9546 7.5733 5.1587 +O 6.7939 18.0628 14.7864 +H 0.2637 10.6343 5.4571 +O 10.9054 9.9509 5.4100 +H 5.1400 19.4913 8.1178 +O 7.4300 7.0585 1.5461 +H 6.5822 19.6901 10.0830 +O 7.8485 0.9727 0.1309 +H 6.2370 0.5099 9.0706 +O 10.3868 2.0602 3.8907 +H 16.6666 3.9563 13.6626 +O 14.1826 6.1267 0.5058 +H 7.3911 9.6921 15.2666 +O 4.1406 17.3504 9.9069 +H 1.0390 12.4014 8.7241 +O 11.9828 1.8699 1.6162 +H 5.5486 6.0182 0.0033 +O 19.4865 13.8490 7.9220 +H 13.2590 18.3999 17.4325 +O 4.1737 10.3038 12.5712 +H 2.1135 12.7415 17.8427 +O 9.9354 3.4036 1.5461 +H 14.2728 8.1935 5.1887 +O 2.3703 15.0103 1.3312 +H 4.6673 4.9454 19.6006 +O 10.4009 12.1743 2.1549 +H 9.8751 8.1358 16.3173 +O 19.0031 3.4146 19.0007 +H 13.5513 5.2582 0.2393 +40 20.0 20.0 20.0 +frame 318 +O 12.7339 0.0123 8.4589 +H 6.1489 12.2225 3.7208 +O 15.9917 11.1202 6.4603 +H 4.3012 16.3022 3.0265 +O 5.4309 5.7425 15.5759 +H 18.8933 15.3176 7.6907 +O 19.7163 2.3502 17.7196 +H 15.1566 0.9188 12.0742 +O 19.5971 16.9783 16.9421 +H 11.8358 6.6076 12.5466 +O 5.0423 2.5136 4.1340 +H 0.9379 7.7113 5.7085 +O 7.5013 17.9071 15.0026 +H 19.5888 10.6835 5.3117 +O 10.3291 9.8803 5.4810 +H 5.2636 19.8793 8.1215 +O 7.5570 7.1018 1.0943 +H 7.1550 19.7445 9.9188 +O 7.1581 0.9455 0.2936 +H 6.2574 0.9839 9.0402 +O 10.2778 1.7054 4.6014 +H 16.8112 3.7569 13.5288 +O 14.1670 6.1732 0.3132 +H 7.3557 9.9662 14.7180 +O 4.6136 17.4062 9.8535 +H 0.5350 12.5787 8.2389 +O 11.3208 1.5101 1.7093 +H 5.7453 6.2392 0.2255 +O 19.5626 13.4162 7.7571 +H 13.4184 19.0960 17.0633 +O 3.5898 10.1372 11.8205 +H 2.1860 13.5099 17.6044 +O 9.5751 2.6474 0.9173 +H 14.0751 8.1785 5.4042 +O 2.4882 14.9954 1.4085 +H 4.3856 4.9671 19.7941 +O 10.0287 11.9945 1.9421 +H 10.0016 8.3505 15.9847 +O 19.3122 3.2784 18.4947 +H 13.6261 4.9809 19.8370 +40 20.0 20.0 20.0 +frame 319 +O 12.7237 19.1572 8.6688 +H 6.6004 12.5357 3.6066 +O 15.7612 11.2589 7.1368 +H 4.1713 16.4593 2.2082 +O 5.8393 6.1653 15.5147 +H 19.0802 15.0021 7.5845 +O 19.9325 2.9555 17.1794 +H 15.3080 0.5286 12.1437 +O 19.4000 16.5928 17.3073 +H 11.5403 6.2151 12.5096 +O 4.7999 2.6477 3.8050 +H 1.0988 8.0325 5.8706 +O 7.5308 18.0387 15.0984 +H 19.7083 10.6595 4.8297 +O 9.9678 9.8471 5.1692 +H 4.9387 19.9504 8.2533 +O 7.8788 7.6176 0.6960 +H 7.0489 19.7035 9.6504 +O 7.2420 0.9600 0.6764 +H 6.4875 0.7460 8.8842 +O 10.2457 2.0612 4.6453 +H 16.6563 3.7488 13.8378 +O 14.5077 6.5495 0.2555 +H 7.4017 10.1811 15.0600 +O 3.6395 17.2403 9.5143 +H 0.3728 12.7113 8.3646 +O 10.9218 1.6822 1.5300 +H 5.6291 6.0731 0.0507 +O 19.6128 13.6943 7.5630 +H 13.6818 19.0249 16.6647 +O 3.8382 10.2624 11.6831 +H 2.1408 13.4837 17.5827 +O 9.3678 2.8415 1.0359 +H 14.0457 8.5228 5.4961 +O 2.7941 14.9764 0.8715 +H 4.2793 4.8511 19.9688 +O 10.5548 11.7583 1.8907 +H 9.9617 8.0605 15.8765 +O 19.5699 3.3480 18.6444 +H 13.9296 5.1700 19.8714 +40 20.0 20.0 20.0 +frame 320 +O 12.5080 18.9700 8.9121 +H 7.1381 12.2105 3.5977 +O 15.7764 11.2097 6.9184 +H 3.9845 16.9901 1.9684 +O 6.2389 6.0965 15.7380 +H 19.2619 15.0815 7.3646 +O 19.7592 3.1378 17.3443 +H 15.4576 0.3484 12.1263 +O 19.0401 16.4752 17.2869 +H 11.6305 6.7675 12.9910 +O 4.4969 3.1066 3.5064 +H 1.2977 7.6507 5.7455 +O 7.5637 18.4682 14.7057 +H 19.6303 10.9187 4.8516 +O 9.7436 10.0483 5.0258 +H 5.2438 0.2701 8.1116 +O 7.8299 7.6872 1.0820 +H 7.2152 19.7859 9.4953 +O 7.4981 0.6924 0.5798 +H 6.6811 1.1114 8.6423 +O 10.5767 1.8591 4.9561 +H 16.4438 4.3988 13.6512 +O 14.7973 6.5772 0.0750 +H 8.1159 10.3782 14.9000 +O 3.9218 17.3927 9.3742 +H 0.3291 12.5985 8.4376 +O 11.1787 1.6945 1.9700 +H 5.2543 5.6781 19.9352 +O 19.2575 13.3896 7.9295 +H 13.0425 18.8030 16.9352 +O 3.9947 10.8523 12.1701 +H 2.1424 13.7937 17.5747 +O 9.5336 2.7391 1.4438 +H 14.3917 8.3857 5.8453 +O 2.7522 14.8204 1.1642 +H 4.7427 4.8283 19.6734 +O 10.1715 11.7966 1.9547 +H 10.1845 7.4562 15.5520 +O 0.0239 3.3236 18.3591 +H 14.3157 5.6555 19.6617 +40 20.0 20.0 20.0 +frame 321 +O 12.5794 19.3069 9.6763 +H 7.6095 11.4792 3.9395 +O 16.1344 11.4495 7.5113 +H 3.8398 16.9887 2.1280 +O 6.1790 6.3428 15.4806 +H 19.2435 16.2025 7.3644 +O 19.8115 3.0011 16.8487 +H 15.4304 0.7051 12.1060 +O 19.0076 16.1070 17.0223 +H 11.1825 6.4713 12.2346 +O 4.3652 2.6240 3.0578 +H 0.9837 7.1083 5.3563 +O 7.4177 18.4674 14.8151 +H 18.9392 10.9246 5.3228 +O 9.5977 9.9811 5.2654 +H 5.7911 0.2507 8.1670 +O 7.6974 7.6507 1.4504 +H 7.1754 19.3670 9.1897 +O 7.4606 0.1640 0.1321 +H 6.4750 1.2398 9.0593 +O 10.9097 1.7152 5.2717 +H 16.2797 3.6927 13.7935 +O 15.5241 6.6874 0.3760 +H 8.1984 10.1399 15.1862 +O 3.5808 17.2500 9.3959 +H 0.1829 12.4522 7.8898 +O 11.2629 1.3949 1.7848 +H 5.7432 5.7978 19.1964 +O 19.3443 13.4377 8.1524 +H 13.6927 18.9158 17.5180 +O 3.4942 10.9661 11.8966 +H 2.1992 13.8948 17.6615 +O 9.4980 2.9486 1.3005 +H 14.0713 8.9639 5.4057 +O 2.2702 15.0368 1.1094 +H 4.7576 4.8611 19.7461 +O 10.0827 11.7704 1.9374 +H 10.1328 7.7640 15.7850 +O 0.1735 3.4060 18.5451 +H 14.2196 5.9380 19.4452 +40 20.0 20.0 20.0 +frame 322 +O 12.1189 18.9071 9.9337 +H 7.7000 11.1601 3.8679 +O 16.3611 11.0350 7.2116 +H 3.9903 17.1427 2.5467 +O 6.0342 6.3503 15.0554 +H 19.2637 15.9757 6.6644 +O 19.5478 3.3399 17.1094 +H 15.6194 0.3463 11.8189 +O 19.2036 16.3726 16.8942 +H 11.7131 6.7002 12.0509 +O 4.6293 2.7679 3.0309 +H 1.3976 7.1572 5.2399 +O 7.3067 18.6940 14.4439 +H 19.5449 11.0799 5.5075 +O 9.7515 9.6711 5.4582 +H 5.9386 0.7152 8.2270 +O 7.3759 7.6594 1.3101 +H 7.2456 19.3009 8.9574 +O 7.7320 19.7257 0.1287 +H 6.7575 0.7841 8.6228 +O 10.7497 1.8253 5.3672 +H 16.1101 3.0880 13.8232 +O 15.6253 6.1702 0.4917 +H 7.9039 10.1518 14.6634 +O 3.2354 17.2500 9.2154 +H 19.2216 12.5453 7.5767 +O 11.1045 1.5912 1.8935 +H 5.6716 5.2583 19.5261 +O 19.5088 13.3229 8.1179 +H 13.8154 18.9432 17.8276 +O 3.3860 10.4259 11.4853 +H 2.1448 13.9946 17.1930 +O 8.8310 2.7466 1.4900 +H 14.0453 8.8736 5.4514 +O 2.5686 14.9175 0.8608 +H 4.6982 5.3769 19.6440 +O 10.2919 11.5607 1.5275 +H 10.1680 8.0028 15.6194 +O 0.4883 2.6637 18.4871 +H 14.2339 5.6808 19.4064 +40 20.0 20.0 20.0 +frame 323 +O 11.8431 19.0799 9.9450 +H 7.7648 10.9211 3.6505 +O 16.6455 11.1731 7.2604 +H 3.7793 17.9014 2.4404 +O 6.3296 6.6647 14.6179 +H 19.5603 15.4244 6.7440 +O 19.0192 3.2146 17.4727 +H 15.5703 0.3467 12.0269 +O 18.6509 16.7742 17.3418 +H 11.6158 6.7915 12.4309 +O 4.5928 2.7858 2.9770 +H 1.0862 7.2807 5.3804 +O 7.5420 18.5713 14.9046 +H 19.5448 10.9834 5.4931 +O 9.9331 10.0377 5.2604 +H 5.6095 0.3480 8.3951 +O 7.7333 7.8743 1.1969 +H 7.4818 19.1801 8.8794 +O 7.9108 19.9551 0.4367 +H 6.8700 0.6176 9.1792 +O 10.9938 2.2095 5.3283 +H 15.7140 2.5716 14.0995 +O 15.5785 6.4863 0.7005 +H 8.3061 9.9419 14.5657 +O 2.9961 17.7213 9.1364 +H 19.2299 12.3780 7.5539 +O 10.8336 1.7658 1.7513 +H 5.8621 5.7044 0.0117 +O 19.4233 13.7795 8.0702 +H 13.7500 18.7917 18.2374 +O 3.7498 9.8101 11.6629 +H 2.2844 14.1975 16.9407 +O 8.6542 2.7555 1.3150 +H 13.7546 8.9348 4.8924 +O 2.7463 14.4914 0.5045 +H 3.9632 4.9474 19.2144 +O 10.2517 11.5467 1.4777 +H 10.2862 7.9118 15.0757 +O 0.4649 2.2755 18.6513 +H 13.9654 5.7563 19.2152 +40 20.0 20.0 20.0 +frame 324 +O 12.1047 19.7653 9.6162 +H 7.8863 11.3510 4.1042 +O 16.5540 11.1306 6.8841 +H 3.8896 18.2396 2.3789 +O 6.8423 6.5445 14.1938 +H 19.9483 15.2899 7.3219 +O 18.8787 3.0919 17.5937 +H 15.5848 0.2424 11.9892 +O 18.5032 17.1729 17.4003 +H 12.0051 7.6456 12.7729 +O 4.5415 2.2586 2.7840 +H 1.4293 7.5109 5.3801 +O 7.9666 18.6838 15.1070 +H 19.1999 10.8232 5.5145 +O 10.1838 10.2982 5.6156 +H 5.6976 0.0178 8.0495 +O 7.6285 8.2195 0.7265 +H 7.1307 19.3234 8.9954 +O 8.0800 0.0354 0.6487 +H 7.4999 0.8003 9.0838 +O 10.9763 2.4018 5.5294 +H 15.3989 2.9713 14.2212 +O 15.8375 5.5712 0.0557 +H 8.5508 10.3451 14.2909 +O 3.0199 17.2584 9.8362 +H 19.3619 12.5539 7.6271 +O 11.2360 1.7545 1.9875 +H 6.2970 5.7566 19.9891 +O 19.6153 13.7316 8.1464 +H 14.0200 18.5214 18.5281 +O 3.9561 9.1978 11.5497 +H 2.3220 13.8730 16.4007 +O 8.8973 2.8224 1.8907 +H 13.7302 9.1972 4.5949 +O 2.6335 14.5423 0.3898 +H 4.0345 5.0035 19.7018 +O 10.6053 11.2709 2.0123 +H 10.7305 7.9893 14.8197 +O 0.4959 1.7692 19.4138 +H 14.0533 6.0620 18.8292 +40 20.0 20.0 20.0 +frame 325 +O 12.2238 19.8308 9.3498 +H 7.7987 11.3830 4.2706 +O 16.9381 11.4524 6.7548 +H 3.5615 18.5647 2.2489 +O 6.9511 6.1976 13.8670 +H 19.6974 15.5748 7.2357 +O 19.0115 3.1764 17.0506 +H 15.5214 0.4829 11.7342 +O 18.7642 17.3715 17.4025 +H 11.8369 7.6048 12.6316 +O 4.2234 2.3645 2.7813 +H 1.4779 7.7072 5.2604 +O 7.6806 18.6284 14.6321 +H 18.9497 11.2208 5.5043 +O 9.8420 10.2747 5.7084 +H 5.8061 19.7240 8.0545 +O 7.8843 8.3504 0.5734 +H 6.7366 19.7646 9.2023 +O 8.1249 0.1271 0.6465 +H 7.1810 1.0593 9.5963 +O 10.9230 2.7231 5.2721 +H 15.7446 3.2083 14.3254 +O 15.7465 5.2808 19.8539 +H 8.2457 10.7347 14.4676 +O 3.1435 17.3826 10.1456 +H 19.3703 12.3743 7.4956 +O 10.9914 2.0668 2.0163 +H 6.3759 5.4780 0.2602 +O 19.5882 13.7447 8.5621 +H 13.8380 18.4015 18.8977 +O 3.0750 9.6926 11.6170 +H 1.8919 13.6063 16.8833 +O 8.6259 2.7406 2.1390 +H 14.2253 9.6518 4.4529 +O 2.6239 15.0713 0.0729 +H 4.0108 5.0257 19.4870 +O 10.7555 11.0401 1.9731 +H 10.5820 8.1400 15.0378 +O 0.4883 1.9259 19.8606 +H 14.0691 6.4855 18.6575 +40 20.0 20.0 20.0 +frame 326 +O 11.7317 19.6571 9.6671 +H 7.4006 11.7947 4.4987 +O 16.7413 11.2394 6.4630 +H 3.5640 18.2212 2.0984 +O 6.8933 5.9234 13.7453 +H 0.0240 15.4368 7.0243 +O 19.3615 3.3813 17.4449 +H 15.1390 0.6806 11.9862 +O 18.0731 17.6927 18.1089 +H 11.8595 7.5028 12.7750 +O 4.4873 2.1341 3.2128 +H 1.7471 7.8458 4.9938 +O 7.6038 18.5480 14.6428 +H 18.2660 10.8000 5.3728 +O 9.5476 10.2445 5.3759 +H 5.6032 0.1316 7.7232 +O 8.1118 7.9235 0.4825 +H 6.4206 19.5173 8.5567 +O 7.9115 0.0609 0.9923 +H 6.9935 1.0697 9.1667 +O 10.9930 2.5517 5.1812 +H 15.9829 3.6682 14.1866 +O 15.5877 5.5367 19.9638 +H 7.7411 10.4675 14.5154 +O 3.1300 17.2884 10.0805 +H 19.2803 12.2745 7.8954 +O 10.8798 2.0139 1.6325 +H 6.3984 5.1879 0.5248 +O 19.0706 13.9300 9.0331 +H 13.5712 18.0632 19.0715 +O 3.5626 9.8907 11.1333 +H 2.1414 13.6520 16.6315 +O 7.8957 2.3189 2.0543 +H 14.2544 9.3094 4.7283 +O 2.4461 14.9768 0.2031 +H 4.1018 4.8912 19.4962 +O 10.6521 11.0326 2.1868 +H 10.9606 7.9139 14.9259 +O 0.8962 2.1456 19.9880 +H 14.2387 6.5546 18.7635 +40 20.0 20.0 20.0 +frame 327 +O 11.7002 19.3894 9.9619 +H 7.8493 11.9810 4.5563 +O 16.6412 11.3351 6.5033 +H 3.7923 18.1729 2.5584 +O 6.9386 6.0574 13.4957 +H 19.8875 15.1554 7.3175 +O 19.5274 3.2440 17.3245 +H 14.8018 1.2476 12.1845 +O 17.9553 17.7477 18.3799 +H 11.9215 7.0982 13.0395 +O 4.1251 2.3636 3.0421 +H 1.9000 7.3892 4.9263 +O 7.4353 18.3059 13.9217 +H 18.0692 10.2234 4.7856 +O 9.6034 10.2591 5.3507 +H 5.9262 0.2538 7.2041 +O 8.2800 8.1736 0.4511 +H 6.5149 19.6348 8.8725 +O 7.4397 0.0036 1.5392 +H 7.1987 0.7459 8.8626 +O 11.0440 2.0918 5.2155 +H 15.6793 3.6883 14.6041 +O 15.4974 5.4935 19.7708 +H 7.7594 10.8558 14.5985 +O 2.8611 17.5327 9.6610 +H 19.4227 12.5547 8.2573 +O 11.4799 2.4503 1.2108 +H 6.2663 5.6504 0.4472 +O 19.0558 14.1053 9.1443 +H 13.4783 17.7170 18.9197 +O 3.6097 9.8226 10.8652 +H 2.2770 13.5508 16.7660 +O 8.5407 2.1055 1.6962 +H 14.5545 9.1189 4.8000 +O 2.5556 15.2980 0.1158 +H 4.4903 4.8428 19.4192 +O 10.2537 11.0506 2.1906 +H 11.0274 7.6294 15.4057 +O 1.3946 2.3351 0.1175 +H 14.3943 6.7234 17.9476 +40 20.0 20.0 20.0 +frame 328 +O 11.8247 19.3115 9.9844 +H 7.8756 11.9334 4.5238 +O 16.4107 11.0694 6.6826 +H 3.9783 18.0487 2.8167 +O 6.9389 6.2249 13.6396 +H 19.4585 15.4391 7.2965 +O 19.5400 3.4525 17.9740 +H 15.0619 1.2278 12.2822 +O 17.9145 17.8665 18.2181 +H 11.9492 7.0643 13.3909 +O 4.0219 2.8179 2.4934 +H 1.8665 7.5522 4.6948 +O 7.3635 19.1622 13.9632 +H 18.1702 10.0871 4.8553 +O 9.6284 10.5669 5.4400 +H 5.6202 0.0423 7.2058 +O 8.3856 8.0760 0.6426 +H 6.5393 19.7876 8.7587 +O 7.0811 0.0398 1.6017 +H 7.1031 0.9348 8.9827 +O 11.2253 2.0872 5.7648 +H 15.0330 3.4187 14.2768 +O 15.2024 5.7853 19.6844 +H 7.2457 10.7336 14.4550 +O 2.8651 17.3769 9.4820 +H 19.5803 12.2602 8.0836 +O 11.6951 2.8318 1.4590 +H 6.5680 5.3528 0.1614 +O 18.7688 13.8510 8.7870 +H 13.4362 17.5919 18.4427 +O 3.4863 9.3023 10.5902 +H 2.5472 13.9928 16.6923 +O 8.9423 1.8110 1.7639 +H 14.4360 9.1191 4.6605 +O 2.4496 15.1129 19.6697 +H 4.1998 5.2045 19.0082 +O 10.5518 10.9223 2.3685 +H 10.9875 7.7277 15.1627 +O 1.3399 2.1508 0.6356 +H 14.3641 6.8493 17.8265 +40 20.0 20.0 20.0 +frame 329 +O 12.1238 19.2377 10.5302 +H 8.0783 12.0746 4.6720 +O 16.4620 10.8263 6.4623 +H 4.0971 17.8267 3.0893 +O 6.4564 6.1575 13.6946 +H 19.3307 15.8027 6.9546 +O 19.3106 3.6555 18.0064 +H 15.4148 1.3459 11.5159 +O 17.9991 17.2644 18.1934 +H 11.8151 6.7818 13.2987 +O 4.5001 2.1051 2.3613 +H 2.5419 7.6451 4.7465 +O 7.6405 19.8053 14.1375 +H 18.5727 9.7182 5.0559 +O 10.0201 10.7900 5.4441 +H 5.6464 0.0191 6.9501 +O 8.9827 8.0486 0.7180 +H 6.3862 19.4723 9.0133 +O 7.1932 0.3275 1.4266 +H 7.2109 1.0628 9.0474 +O 11.7750 1.9264 5.7039 +H 14.7503 3.6148 14.1816 +O 15.2040 5.9659 19.6237 +H 7.4828 10.7276 14.3506 +O 2.6432 17.2320 9.7060 +H 19.4207 12.3094 8.4969 +O 11.5205 3.2136 1.6895 +H 6.3295 5.3884 0.5210 +O 18.8772 13.5144 8.7476 +H 12.7887 18.0953 18.2610 +O 3.7924 9.6839 10.2274 +H 2.6393 14.5036 16.4805 +O 9.2527 2.2956 1.7034 +H 14.1852 9.2131 4.8482 +O 3.2073 14.7470 19.7242 +H 3.6888 5.3359 19.3822 +O 10.8052 10.4603 1.9375 +H 10.8766 7.9440 15.2243 +O 1.4583 1.5371 0.6210 +H 14.4871 6.4048 18.3212 +40 20.0 20.0 20.0 +frame 330 +O 12.1921 19.0822 10.5950 +H 7.1368 12.1961 4.6704 +O 16.5398 10.5808 6.3078 +H 4.5733 17.4579 2.9193 +O 6.4496 6.3498 13.4893 +H 19.3565 15.5223 6.8453 +O 19.7120 3.3991 18.2298 +H 15.6013 0.9057 11.8069 +O 18.0285 17.4776 18.3794 +H 11.9322 6.6372 12.8337 +O 4.5920 1.9481 2.3650 +H 2.7699 7.4616 4.6924 +O 7.5741 19.8832 14.2317 +H 18.2657 9.8107 5.4787 +O 10.2334 10.6433 4.9831 +H 5.3209 19.4876 7.6285 +O 8.4782 8.1301 0.9210 +H 6.6097 18.6883 8.8459 +O 7.2258 19.5573 1.1759 +H 7.7653 1.2252 9.3164 +O 11.5001 1.9768 5.9400 +H 14.6866 3.3204 14.2328 +O 15.6888 5.9884 19.4750 +H 8.0118 10.7234 14.7451 +O 2.6309 17.0264 9.7799 +H 19.1062 12.2254 8.3360 +O 11.4683 3.1548 1.8398 +H 6.2114 5.3075 19.9157 +O 18.7612 12.9547 8.8343 +H 13.2736 17.4371 18.0041 +O 4.0422 9.5268 10.4400 +H 2.6609 14.9635 16.4769 +O 9.8665 2.6720 2.0217 +H 14.1081 9.1921 5.3572 +O 2.7503 15.1618 19.4803 +H 3.8279 5.4848 19.5956 +O 10.4919 10.2002 1.1097 +H 11.1288 7.9084 15.4435 +O 1.8236 1.5503 0.8930 +H 14.1754 6.8504 18.2483 +40 20.0 20.0 20.0 +frame 331 +O 12.5701 19.1648 10.8652 +H 7.5998 12.6983 4.8479 +O 16.8207 10.7590 6.0398 +H 4.5964 17.3175 2.7481 +O 6.3905 6.4389 13.8971 +H 18.6156 15.5387 6.8577 +O 19.1398 3.2089 17.8115 +H 15.4016 1.2595 11.7049 +O 18.1155 17.5591 18.5840 +H 11.6202 6.5476 12.7100 +O 4.6934 2.1201 2.3851 +H 2.5895 7.9537 4.7807 +O 7.5374 19.7279 13.8843 +H 18.2303 10.3147 5.6860 +O 10.0870 10.4262 4.7753 +H 5.6040 19.9883 7.7191 +O 8.6287 7.9557 0.6441 +H 7.2015 18.8211 8.7655 +O 6.9336 19.6257 0.5418 +H 7.3375 1.2004 9.2171 +O 11.6222 1.9761 6.2031 +H 15.4026 2.8867 13.9607 +O 15.4974 6.2018 19.6776 +H 7.8061 10.4037 14.4863 +O 2.5088 16.4766 9.8751 +H 19.2850 12.1313 8.5694 +O 11.8385 2.5611 2.0521 +H 5.8671 5.3772 18.9621 +O 19.0613 13.5377 8.8798 +H 13.5630 17.5941 17.7173 +O 3.5929 9.3558 10.5598 +H 2.9048 15.4918 16.2709 +O 9.8465 2.9026 1.9137 +H 14.0694 8.5163 5.1459 +O 2.5876 15.7410 19.7020 +H 3.8163 5.3667 19.8157 +O 10.3594 10.3573 1.1218 +H 11.4624 7.9424 15.6268 +O 1.6192 1.6522 0.9554 +H 13.7668 6.7843 18.7726 +40 20.0 20.0 20.0 +frame 332 +O 12.2489 19.4083 11.7552 +H 7.4534 12.0115 5.1184 +O 16.8061 10.9544 6.1357 +H 4.5899 17.4604 3.0111 +O 6.5117 6.8698 13.9620 +H 18.5945 15.5776 6.8470 +O 19.1878 3.1967 18.2039 +H 14.7957 0.9284 11.7839 +O 17.8481 17.3138 18.9865 +H 11.8653 6.8282 12.7458 +O 5.0154 2.2813 2.8238 +H 2.7146 8.0563 4.8516 +O 7.5162 0.1763 13.4206 +H 18.4282 10.6610 5.7519 +O 9.6836 10.5657 4.8858 +H 6.0872 0.0309 7.8752 +O 8.5412 7.5998 0.8650 +H 7.2803 18.3400 9.0139 +O 6.7529 19.3001 0.3079 +H 7.2789 1.4270 9.4708 +O 11.4228 1.3107 6.5202 +H 15.6442 2.4843 13.8576 +O 15.7336 6.2696 19.6312 +H 7.8705 10.2153 14.5976 +O 2.5185 16.8153 10.1013 +H 19.0116 12.4156 8.4212 +O 11.7800 2.9300 1.9520 +H 5.6424 5.3342 19.0258 +O 19.1811 13.0479 9.2199 +H 13.2815 17.3406 17.9589 +O 3.5841 9.4240 10.5230 +H 2.4522 15.4598 16.0948 +O 9.4810 2.9405 1.9522 +H 13.8257 8.3736 5.6612 +O 2.5489 15.8987 19.6132 +H 4.0604 5.5962 0.0830 +O 10.3120 10.1383 1.7008 +H 11.9740 8.3896 15.7360 +O 1.3128 1.7392 0.7004 +H 13.4654 6.2861 18.8205 +40 20.0 20.0 20.0 +frame 333 +O 12.1649 19.5126 12.0642 +H 7.2343 12.2360 5.5027 +O 17.6473 11.0965 5.6480 +H 4.3850 17.1353 3.0706 +O 6.3321 6.6577 14.4699 +H 18.6925 15.2658 7.0504 +O 19.5321 3.5318 18.4466 +H 14.4129 0.6422 11.3016 +O 17.8917 16.9717 18.7812 +H 11.4269 6.6677 12.3860 +O 5.0997 2.2330 2.6560 +H 2.2952 8.0972 5.0731 +O 6.9635 19.9767 13.1533 +H 18.6152 10.1480 5.9672 +O 9.7726 10.0660 5.0315 +H 6.5012 0.3836 7.9399 +O 8.4603 7.9590 0.7454 +H 7.2260 18.8218 9.0447 +O 6.9083 19.2113 0.1862 +H 6.9631 1.6048 9.7177 +O 11.3495 1.7766 6.3805 +H 15.2640 2.7122 13.4323 +O 16.1949 5.8976 19.1189 +H 7.3801 10.5769 15.0949 +O 2.5033 16.4431 10.2851 +H 19.2883 12.3171 7.9943 +O 11.5306 3.2709 2.3921 +H 5.5554 5.2448 19.4205 +O 19.1787 13.1646 9.2526 +H 13.8239 17.1968 17.9708 +O 3.7616 9.2788 10.2915 +H 2.6071 15.6905 16.3840 +O 9.4899 3.1175 1.7891 +H 13.4334 8.4754 5.5150 +O 2.1737 15.8221 19.6662 +H 3.9642 5.1489 0.2554 +O 10.4643 9.8655 1.7646 +H 12.0273 8.4892 15.5367 +O 1.3999 2.3585 0.9969 +H 13.7266 6.5854 18.3530 +40 20.0 20.0 20.0 +frame 334 +O 12.2686 19.6622 12.0725 +H 6.8723 12.2207 5.2007 +O 17.7784 10.5561 5.5986 +H 4.3853 17.5384 2.4974 +O 6.1950 7.1009 13.8430 +H 18.9197 14.6743 7.2292 +O 19.2104 3.6758 18.0518 +H 15.0103 0.6869 10.8322 +O 18.3884 16.5143 18.9020 +H 11.5800 6.5019 12.6887 +O 4.9784 2.6518 2.5484 +H 2.5901 8.3462 5.0391 +O 6.3109 19.5397 13.3093 +H 18.5071 10.0884 5.9891 +O 9.6156 10.1151 4.8655 +H 6.4603 0.3260 7.8531 +O 8.4796 8.1210 0.5261 +H 7.3132 18.5148 9.2494 +O 6.3694 19.0408 0.2104 +H 6.9803 1.6191 9.9532 +O 11.1456 1.6300 6.1522 +H 14.7090 2.8186 13.6426 +O 15.8503 6.5288 19.8423 +H 7.4557 10.4978 15.9852 +O 2.2566 16.3838 10.0419 +H 19.4068 11.6211 8.3634 +O 11.9670 3.6076 2.8091 +H 5.3952 5.3613 19.1742 +O 19.4274 13.7218 9.2473 +H 13.9741 17.3160 17.7224 +O 3.4923 8.8934 10.1982 +H 2.8716 15.7076 16.5986 +O 9.3233 2.7411 1.6057 +H 13.7608 8.1955 5.9627 +O 2.0461 15.9504 19.2029 +H 3.8004 4.5153 0.2210 +O 10.8238 9.8746 1.3233 +H 12.0226 8.2323 15.5381 +O 1.5164 2.4932 0.9827 +H 14.5487 6.2944 18.7386 +40 20.0 20.0 20.0 +frame 335 +O 11.9902 19.9383 12.2520 +H 7.1973 12.4073 5.2379 +O 17.9585 10.0495 5.8261 +H 4.0961 17.3927 2.4038 +O 5.9484 7.2616 13.7867 +H 18.9712 14.8290 7.6262 +O 19.2069 3.4251 18.5906 +H 15.4768 0.6635 10.5300 +O 18.3676 16.2649 18.3727 +H 11.6105 6.8233 12.5275 +O 5.6792 2.7609 2.5564 +H 2.5823 8.7197 5.1123 +O 6.2580 19.2348 13.5497 +H 18.5395 10.2073 5.7529 +O 9.3939 10.2960 4.3764 +H 6.6725 0.6193 7.5433 +O 7.9926 8.1487 0.6678 +H 6.8494 18.3205 8.9886 +O 6.2986 18.8951 0.4125 +H 7.3719 1.5929 9.8417 +O 11.5944 2.2896 6.2862 +H 14.2254 2.8465 14.1754 +O 16.2994 6.8129 0.0508 +H 7.2322 10.9759 15.9186 +O 2.2130 16.2851 9.9298 +H 18.9453 11.8187 8.3461 +O 12.6027 4.2338 3.3508 +H 5.0727 5.1528 18.9129 +O 19.4402 13.4320 9.0348 +H 14.0669 17.3985 17.5284 +O 3.5384 8.9785 10.4380 +H 3.0281 16.1134 16.6811 +O 9.5614 2.8417 1.9303 +H 13.6302 8.1548 6.0782 +O 2.0567 16.0109 19.3031 +H 3.6503 4.3611 0.5366 +O 10.5055 9.8786 1.5268 +H 11.9020 8.1116 15.4812 +O 1.4365 2.2071 0.6572 +H 14.4312 6.0612 18.8264 +40 20.0 20.0 20.0 +frame 336 +O 11.9557 19.5850 12.8238 +H 7.2358 12.5707 4.8691 +O 17.7334 10.2759 6.0655 +H 3.8655 17.1020 2.3500 +O 5.6175 6.5571 13.9379 +H 19.1464 14.3204 7.8185 +O 19.6783 3.1289 18.9459 +H 15.2361 0.6688 10.3167 +O 18.1798 16.0278 17.7037 +H 11.8456 6.4921 12.7657 +O 5.9305 2.8456 2.4544 +H 2.4940 8.4422 4.9685 +O 6.2824 19.0919 13.3229 +H 18.3279 10.3781 5.8218 +O 9.3578 10.4470 4.3686 +H 6.5114 0.4518 7.5370 +O 7.9720 8.0238 0.1936 +H 7.0417 18.6911 9.1348 +O 6.5201 19.2378 0.4123 +H 7.5201 1.9834 9.8635 +O 11.8510 2.2282 6.0997 +H 14.4695 2.7311 14.4133 +O 16.5687 6.7560 0.3223 +H 7.4048 10.9352 15.8265 +O 1.7797 16.4154 9.5175 +H 19.1340 11.9011 8.2335 +O 12.5462 4.4602 2.7791 +H 5.4680 5.0198 18.8786 +O 19.3750 13.8208 8.9845 +H 14.4292 17.0149 17.5407 +O 3.2376 9.1025 10.5171 +H 3.4104 15.7549 15.9751 +O 8.6810 2.7144 1.9214 +H 13.5965 8.3697 5.9566 +O 2.7017 15.2780 18.8330 +H 3.2513 4.5809 0.5299 +O 10.3225 9.6891 2.2607 +H 12.2529 7.8897 15.9711 +O 1.1224 2.0823 0.1630 +H 14.3219 6.0577 18.7138 +40 20.0 20.0 20.0 +frame 337 +O 12.1382 19.3512 13.3841 +H 7.6014 12.4416 5.2422 +O 17.8976 10.1976 5.7607 +H 4.0304 16.3569 1.8573 +O 5.4504 7.2659 14.1639 +H 19.4632 14.3429 8.0801 +O 0.0709 2.9646 18.7647 +H 15.3776 0.6187 9.8450 +O 18.4474 15.3615 17.5219 +H 11.5675 6.2041 13.0323 +O 5.5286 2.4246 2.2813 +H 1.9900 8.3775 5.0341 +O 6.2804 18.7177 13.1316 +H 18.2754 10.9433 5.3714 +O 9.4136 9.8439 4.2426 +H 6.6709 1.0655 7.3231 +O 8.0640 7.9260 0.2957 +H 7.0999 19.3880 8.9492 +O 6.4890 19.7358 0.8571 +H 8.1702 1.6580 9.5949 +O 11.3721 2.4124 6.0464 +H 14.7919 2.4692 14.5249 +O 16.5214 6.6282 0.1744 +H 7.5365 11.1884 15.3747 +O 1.3703 16.4143 9.4574 +H 19.0169 11.5706 8.3847 +O 12.4807 4.6356 2.5390 +H 5.3761 4.6234 18.5859 +O 19.4755 13.4259 9.5054 +H 14.5423 17.2796 17.9733 +O 3.3257 9.2633 10.4525 +H 3.1582 15.1933 16.2301 +O 8.5682 2.6219 2.1749 +H 13.8371 8.3447 5.9326 +O 2.4944 15.1482 18.7895 +H 3.1050 4.4078 0.2741 +O 10.4379 9.5211 2.3180 +H 12.9571 7.6136 15.2835 +O 0.5942 1.7264 0.4531 +H 14.2324 6.2298 18.8163 +40 20.0 20.0 20.0 +frame 338 +O 12.8861 19.2039 13.7485 +H 7.3246 13.0143 5.1607 +O 17.8817 9.9769 5.6246 +H 4.2220 16.3694 2.3634 +O 5.6766 7.0501 14.2239 +H 19.8401 14.1854 8.2574 +O 0.6163 2.8594 18.9757 +H 15.0699 0.4554 9.7703 +O 18.5697 15.6316 17.7815 +H 11.8291 6.2667 13.3830 +O 5.6922 2.6451 2.0338 +H 1.7022 8.7688 5.1049 +O 6.1210 18.1826 13.4316 +H 18.2128 10.6068 5.8365 +O 9.7583 10.4944 4.1210 +H 6.8267 1.1490 7.0673 +O 8.0062 8.1835 0.5576 +H 7.5861 19.7896 9.2399 +O 6.6415 19.8002 0.4118 +H 7.6604 1.6475 9.1690 +O 11.8568 2.3235 6.1790 +H 14.4381 1.4658 14.5141 +O 16.8405 6.7048 0.0196 +H 7.6119 11.5363 15.2580 +O 1.3683 16.6551 9.6124 +H 19.7340 11.6742 8.0802 +O 12.4993 4.7927 2.3590 +H 5.4370 4.7139 19.1369 +O 19.5639 13.0999 9.5332 +H 15.1540 17.4733 18.2901 +O 3.3434 9.4312 10.6407 +H 3.3183 15.0692 16.3805 +O 8.5861 2.5062 2.1133 +H 13.8277 7.8555 6.0265 +O 1.9833 14.9446 18.9963 +H 3.4182 4.6239 0.2965 +O 10.0635 9.3529 2.4678 +H 12.6443 7.5965 15.4335 +O 1.0099 1.7162 0.5173 +H 14.1416 6.2598 19.0281 +40 20.0 20.0 20.0 +frame 339 +O 12.6943 19.1491 12.9648 +H 7.1952 12.5438 5.3442 +O 18.0580 10.4948 5.5856 +H 4.8326 16.6618 2.5828 +O 5.4038 7.0170 14.6042 +H 19.0472 14.0583 8.5894 +O 0.9650 2.7233 19.5625 +H 15.4859 0.5499 10.0858 +O 18.5650 15.4377 18.0374 +H 11.5996 5.8406 13.1506 +O 6.1162 3.2581 2.3447 +H 1.4336 8.3613 5.4378 +O 6.1097 18.4251 13.5267 +H 17.8772 10.2781 5.6173 +O 10.0082 10.8099 3.9765 +H 7.0301 1.1331 6.7522 +O 7.9448 8.5252 0.4183 +H 7.3166 19.4878 9.4184 +O 6.3578 19.4606 0.6819 +H 6.7565 1.5499 9.5459 +O 11.4560 2.6118 6.6311 +H 14.4710 1.8714 14.4581 +O 16.7052 6.2312 19.8060 +H 7.5237 11.2620 15.5319 +O 1.6437 16.6919 9.7229 +H 19.6882 11.6185 8.1277 +O 12.3345 4.8483 2.4956 +H 5.7384 4.6249 19.1758 +O 19.3364 13.3329 9.1484 +H 15.0587 17.4129 18.0489 +O 3.2629 9.4197 10.4879 +H 2.8424 14.9504 16.1341 +O 8.6713 2.2375 2.2174 +H 13.7717 8.0706 6.3478 +O 2.0412 15.1817 19.1076 +H 3.3542 4.4257 0.2202 +O 9.6527 9.3730 2.8764 +H 12.7895 7.9267 15.5463 +O 0.9214 1.6898 0.8997 +H 14.1079 5.9325 19.4694 +40 20.0 20.0 20.0 +frame 340 +O 12.7285 18.6333 12.8928 +H 7.3333 12.6255 5.1101 +O 17.8691 10.2012 5.5320 +H 4.7826 16.5207 2.5210 +O 5.2333 6.6487 14.4862 +H 19.1626 13.8128 8.5628 +O 0.9694 2.2872 19.2809 +H 15.7565 0.2873 9.9130 +O 18.7675 15.1529 18.3190 +H 11.7751 5.6412 12.7691 +O 6.0590 3.3982 2.3561 +H 1.3345 7.8977 5.5317 +O 6.0332 18.5506 13.6796 +H 17.8866 10.8328 5.7103 +O 9.8618 10.7945 3.8852 +H 6.8918 1.1727 6.9725 +O 7.4440 8.1133 0.4269 +H 7.7134 19.5794 9.0025 +O 6.5160 19.6772 0.4349 +H 6.9527 1.5870 9.7505 +O 11.2782 2.1463 6.7137 +H 14.2519 2.2436 14.3506 +O 16.6368 6.3642 19.6836 +H 7.4074 10.5480 16.1209 +O 1.4877 17.1967 9.4440 +H 19.8216 11.9207 8.0555 +O 12.7497 4.5581 2.2462 +H 5.9998 4.3677 19.1530 +O 19.1892 13.6665 8.6828 +H 15.4295 17.0312 17.5196 +O 3.2485 9.9821 10.7217 +H 3.3209 14.9427 15.9765 +O 8.8937 2.2675 2.0165 +H 13.5926 7.6250 5.9309 +O 2.1769 15.2749 19.1406 +H 3.2387 4.2470 0.7197 +O 9.4233 9.3436 2.6154 +H 12.4529 7.2373 15.5585 +O 1.3031 1.7697 0.7684 +H 14.1120 6.2011 19.5215 +40 20.0 20.0 20.0 +frame 341 +O 12.2186 18.4226 12.6190 +H 7.1996 12.7614 4.8328 +O 18.2410 9.6376 5.5685 +H 4.9300 16.3397 3.2603 +O 5.7020 6.8326 14.2338 +H 19.1060 13.7557 8.6709 +O 1.0946 2.1105 19.4223 +H 15.9554 19.8439 9.9781 +O 19.1380 14.8765 18.1340 +H 12.0900 5.9030 12.7738 +O 6.3159 3.6922 2.5723 +H 1.4431 8.2372 5.6802 +O 6.0983 18.3864 13.3874 +H 18.0641 10.6596 5.7477 +O 9.9544 11.1037 3.8831 +H 7.2502 1.1852 6.6365 +O 7.3679 8.2231 0.3113 +H 7.6234 19.6874 8.9000 +O 6.6139 19.7639 0.0603 +H 6.8501 1.9097 9.6195 +O 11.1350 1.7981 7.1887 +H 14.0296 2.6134 14.8664 +O 16.5303 6.3763 19.8116 +H 7.4121 10.1760 15.9453 +O 1.1402 17.1329 9.0662 +H 19.7900 11.4247 7.7325 +O 12.6822 4.4630 2.0859 +H 5.9050 4.2832 18.8800 +O 19.4184 13.9721 8.7452 +H 15.5023 17.0634 17.9941 +O 2.8473 10.0421 10.5878 +H 3.5743 15.1713 15.9408 +O 8.7661 2.1433 2.0336 +H 13.3577 7.8527 5.9645 +O 1.8267 14.9834 19.4813 +H 3.8724 4.6976 0.6027 +O 9.7593 9.4092 3.3456 +H 12.2953 7.1692 15.4451 +O 1.2875 1.7757 0.3679 +H 13.4317 6.0141 19.5485 +40 20.0 20.0 20.0 +frame 342 +O 12.0430 18.3473 12.7318 +H 7.5309 12.9451 4.7004 +O 18.2238 9.8091 5.5470 +H 5.2993 16.0298 2.8236 +O 5.6394 7.2454 14.3170 +H 19.0223 13.4190 8.7473 +O 1.0221 2.0826 19.1840 +H 16.0804 19.8841 10.2948 +O 19.6029 15.0814 18.6788 +H 12.0814 5.9029 12.2632 +O 6.3122 3.3541 2.7685 +H 1.0824 7.8114 5.7261 +O 5.7298 18.6350 13.7630 +H 18.1693 10.5612 5.5764 +O 9.7119 11.5491 4.1896 +H 7.6636 1.0885 5.8126 +O 6.4734 8.1927 0.2415 +H 7.8451 0.2761 8.7036 +O 6.4966 19.5555 19.4173 +H 7.1847 2.1782 9.4720 +O 10.9050 1.5869 7.0785 +H 13.4298 2.3996 14.5994 +O 16.6107 6.3121 19.8047 +H 7.4826 10.4747 15.7224 +O 1.6481 17.3364 8.9885 +H 19.7080 10.9573 7.8780 +O 12.9781 3.9794 2.3973 +H 5.9585 4.6014 19.1155 +O 19.7892 13.7640 8.6670 +H 15.6898 17.2577 18.0842 +O 2.4963 9.4026 10.7068 +H 3.7136 15.7893 15.9424 +O 8.3584 2.3499 1.8542 +H 13.1543 7.9161 5.9257 +O 1.7440 15.0098 19.1082 +H 3.9190 4.8725 0.2292 +O 9.9470 9.2022 3.4484 +H 12.0018 7.3401 15.6703 +O 1.5356 2.1442 0.5863 +H 13.2012 5.7394 0.2085 +40 20.0 20.0 20.0 +frame 343 +O 11.7767 18.4639 12.7922 +H 7.4421 13.0393 4.8784 +O 18.3029 9.3884 5.2976 +H 5.1204 15.9360 2.9702 +O 5.3803 7.3313 14.2945 +H 19.4175 12.8974 9.1195 +O 1.4749 2.0238 19.0338 +H 16.1148 19.5343 10.1542 +O 19.8984 14.8357 18.9058 +H 12.0324 6.1978 12.0006 +O 6.2656 3.2698 3.2593 +H 1.1292 7.6825 5.7736 +O 6.0774 18.7624 13.8739 +H 18.2606 10.4622 4.8040 +O 9.3366 11.7463 3.8916 +H 7.3617 1.0728 5.6847 +O 6.8026 8.7525 0.8664 +H 7.4348 0.5366 8.0271 +O 6.4928 19.6036 19.6152 +H 7.6513 2.2671 9.3290 +O 10.7606 1.4638 7.5114 +H 14.0062 2.0235 14.6162 +O 16.6654 6.3036 19.4698 +H 6.4466 10.5074 15.4510 +O 1.7651 17.8921 8.7171 +H 19.4960 11.0372 8.3274 +O 12.7959 3.5107 2.4063 +H 5.4793 4.6556 19.2073 +O 19.8661 13.8528 8.8648 +H 15.5960 17.4749 17.8849 +O 2.6719 9.8268 10.5822 +H 3.6884 15.8094 15.5764 +O 8.4635 2.5193 1.9762 +H 13.1219 7.8737 6.0368 +O 1.9067 14.7772 18.9511 +H 3.9372 4.7346 0.1108 +O 9.8535 8.8578 3.2121 +H 12.3082 7.1068 15.6158 +O 1.5387 2.5182 1.2313 +H 13.7291 5.6315 19.9368 +40 20.0 20.0 20.0 +frame 344 +O 11.4754 18.5881 12.3747 +H 7.1232 13.4679 4.5659 +O 18.7093 9.7988 4.4337 +H 5.4016 15.6638 2.8712 +O 5.6625 7.1537 14.2798 +H 19.1119 12.8291 9.1343 +O 1.1633 2.1039 19.2249 +H 15.9819 19.4922 9.8784 +O 19.9882 14.8948 18.6684 +H 12.2862 5.9757 12.2886 +O 5.4199 2.4488 3.1652 +H 0.8275 7.4728 6.0561 +O 6.1676 18.6738 13.8527 +H 18.9036 10.6408 5.0891 +O 9.2910 11.5188 3.5906 +H 8.0011 1.2135 6.0178 +O 6.5202 9.0109 0.5767 +H 7.4414 0.7597 7.8593 +O 6.8719 19.5334 0.0110 +H 7.1084 2.4371 9.1412 +O 10.7994 1.9151 7.9552 +H 14.1002 2.2515 14.9598 +O 16.7546 6.2433 19.4765 +H 6.4853 9.8762 15.7018 +O 2.0041 18.1389 8.3650 +H 19.7981 11.1081 8.2252 +O 12.9873 3.0300 2.3989 +H 5.1166 4.6261 19.0244 +O 0.2636 14.0470 9.4599 +H 15.9880 17.8786 18.0046 +O 3.0525 9.2868 10.3957 +H 3.4258 15.9619 15.3353 +O 8.2386 2.6414 1.8012 +H 13.8580 7.2817 5.7025 +O 2.1424 14.4816 19.2202 +H 4.4763 4.3068 19.8389 +O 9.8770 8.5299 3.1371 +H 11.7813 7.1589 15.8202 +O 1.3076 1.9659 1.3913 +H 13.5347 5.3263 0.1200 +40 20.0 20.0 20.0 +frame 345 +O 11.2838 18.7587 12.6999 +H 6.7449 13.2662 4.6703 +O 18.8229 10.0463 4.5213 +H 5.4644 15.5700 3.1045 +O 5.6313 6.8113 14.8043 +H 18.9060 12.5811 9.3115 +O 0.7996 2.8056 19.6046 +H 15.8494 19.4273 10.2385 +O 0.3503 15.0797 19.2239 +H 12.9213 6.2801 12.0772 +O 5.8428 2.1851 3.0608 +H 1.3629 7.5117 5.3253 +O 6.7624 18.5571 13.5439 +H 18.7985 10.4220 5.3679 +O 9.1386 11.9108 3.4669 +H 8.3094 1.0490 5.8825 +O 6.3650 9.4825 0.7013 +H 7.6818 0.6997 7.9213 +O 6.9855 19.5415 19.4301 +H 7.8195 2.1329 9.4833 +O 10.7116 1.2874 7.8838 +H 14.2896 2.8120 14.3448 +O 16.3884 6.0693 19.9179 +H 6.5922 10.0823 14.9370 +O 1.5413 18.1182 7.8940 +H 19.9224 11.2916 8.0260 +O 12.6608 2.7282 2.9705 +H 5.5568 4.7726 19.3804 +O 19.6326 13.7853 9.3790 +H 15.9013 17.9668 18.2432 +O 2.8186 8.7939 10.1051 +H 3.3389 15.7697 15.0509 +O 8.1338 2.6594 1.8548 +H 13.7509 7.3796 5.9931 +O 1.7993 14.9047 19.5617 +H 4.3818 4.3847 19.9525 +O 10.1341 8.4820 2.9853 +H 11.7011 6.7902 16.0007 +O 0.6889 2.0665 1.3778 +H 13.7794 5.3534 0.1330 +40 20.0 20.0 20.0 +frame 346 +O 11.6461 19.0645 12.9661 +H 6.7260 13.3650 4.7014 +O 18.8953 9.9303 4.1857 +H 5.4995 15.7985 3.1765 +O 5.4171 7.3793 14.5115 +H 19.1108 13.0811 9.2773 +O 0.9877 3.5325 19.7953 +H 16.1726 19.4556 9.9342 +O 19.5684 15.3450 19.3298 +H 12.9237 6.3248 12.0651 +O 6.1780 2.5300 2.6764 +H 1.4974 7.1599 5.7130 +O 6.7873 18.3218 13.8192 +H 18.5492 10.3161 5.2454 +O 9.2969 12.3024 3.6277 +H 8.2111 1.2986 5.8803 +O 6.5657 9.4391 1.0378 +H 7.7052 1.0281 8.0328 +O 7.0955 19.1894 19.7594 +H 7.8243 2.2109 10.0046 +O 10.8045 1.2954 8.2320 +H 13.9305 2.4120 14.5361 +O 17.0487 6.4348 19.8582 +H 6.1829 10.2318 15.1428 +O 1.7406 17.9148 7.6883 +H 19.6325 11.4774 8.3105 +O 12.4356 2.9176 2.7877 +H 6.1735 4.2525 19.4199 +O 19.7369 14.0768 9.3876 +H 15.2864 17.9509 18.2611 +O 2.6704 8.5118 10.0590 +H 3.7443 15.3224 15.2831 +O 8.0066 2.2175 1.6025 +H 13.6759 8.0384 5.9891 +O 1.9444 14.9777 19.6741 +H 4.7028 3.9747 19.8865 +O 9.4877 9.2160 2.9054 +H 11.5620 7.0480 15.9680 +O 0.8775 2.1357 1.9194 +H 14.1519 5.0457 0.5097 +40 20.0 20.0 20.0 +frame 347 +O 11.4978 18.5722 12.8573 +H 6.7295 13.0883 4.0349 +O 19.1325 10.1488 4.4488 +H 5.5307 15.5804 3.4847 +O 5.2654 7.4557 14.6662 +H 18.8203 13.0676 9.2700 +O 0.8943 3.6029 0.2247 +H 16.2632 19.4818 9.7756 +O 19.5809 15.4516 19.8416 +H 12.8056 6.5892 12.1289 +O 6.0960 2.2940 2.2997 +H 1.7842 7.2525 5.2451 +O 6.5657 18.4801 13.7222 +H 19.0989 10.5549 5.5789 +O 9.2904 12.7819 3.8945 +H 8.0038 1.2703 5.7700 +O 6.8603 10.0697 0.9038 +H 7.4801 0.6834 8.7594 +O 6.6458 19.0555 19.7956 +H 7.4590 2.7575 10.0242 +O 11.3571 1.5143 7.9549 +H 13.7068 2.1410 15.3579 +O 17.1561 6.6463 19.8915 +H 5.7203 10.2346 14.9347 +O 1.6737 18.0397 7.3807 +H 19.6396 10.8216 8.0592 +O 12.3859 2.9722 2.3872 +H 6.2903 4.1540 19.4453 +O 19.6426 14.3433 9.7241 +H 15.3890 18.0719 18.3090 +O 2.8527 8.5375 10.0850 +H 4.0728 15.5474 15.9131 +O 8.1934 1.7929 0.8959 +H 13.7104 7.8648 6.0847 +O 2.0629 14.8279 19.4551 +H 4.1597 3.9526 19.3482 +O 9.9840 9.4739 3.3123 +H 11.6608 6.8483 16.5915 +O 0.8255 2.2131 1.6840 +H 12.9703 5.1681 0.2484 +40 20.0 20.0 20.0 +frame 348 +O 11.7467 18.4406 12.7351 +H 7.0054 13.4596 3.8036 +O 19.0488 10.7110 4.7979 +H 5.8924 15.2231 3.4024 +O 4.9422 7.5845 15.2206 +H 18.6736 13.4707 9.3384 +O 0.6968 2.9112 0.4132 +H 15.9078 19.4807 9.8725 +O 19.6684 15.4567 0.0524 +H 12.4197 6.8273 12.1843 +O 5.8453 2.4960 2.1035 +H 2.0809 6.8884 5.3775 +O 6.4533 18.8104 13.8955 +H 19.1950 10.7963 5.7371 +O 9.1531 12.9975 3.7680 +H 7.9679 0.9958 5.8481 +O 6.9693 10.7772 0.8159 +H 7.3282 0.0196 8.4847 +O 6.6598 18.7657 0.1951 +H 7.2385 2.4842 9.7054 +O 11.4209 1.4566 8.0658 +H 13.4301 2.5993 15.2080 +O 17.0000 6.4636 19.7803 +H 5.6568 10.3226 14.8261 +O 1.5470 18.1887 7.8490 +H 19.6706 10.4471 8.0209 +O 12.1288 2.7926 2.5669 +H 6.7676 4.7264 19.2968 +O 19.5051 14.3674 9.7280 +H 15.0846 17.9992 18.2988 +O 2.7795 8.3472 10.2290 +H 4.7554 15.4015 16.0225 +O 8.6459 1.1693 1.5218 +H 14.0859 8.1967 5.9087 +O 2.1172 15.1641 19.6612 +H 4.0714 3.7222 19.1905 +O 9.9561 9.2681 3.4486 +H 11.4527 6.5474 16.9392 +O 0.7639 2.2595 1.5791 +H 13.1375 5.2924 0.3995 +40 20.0 20.0 20.0 +frame 349 +O 11.6282 18.3946 13.3709 +H 6.4692 13.3385 3.9459 +O 19.4143 10.8958 4.5965 +H 5.9119 15.0702 3.4282 +O 4.7786 7.6744 15.2352 +H 18.9050 13.7129 9.1706 +O 0.5258 2.6034 0.6741 +H 15.8923 19.9189 9.6861 +O 19.5610 16.4556 0.7124 +H 12.3966 6.9086 12.5173 +O 6.1357 2.5991 2.0007 +H 1.9442 6.6644 5.4119 +O 6.1881 19.4899 14.4099 +H 19.5398 10.7107 5.8852 +O 8.6942 13.1270 3.6790 +H 7.7352 1.2385 6.0441 +O 6.6530 11.0494 0.7399 +H 7.0571 0.1953 8.3703 +O 6.7407 18.8240 0.3293 +H 6.8365 2.6577 10.2238 +O 11.1590 1.3804 7.8406 +H 13.3441 2.6063 15.7650 +O 17.1260 5.9183 0.1758 +H 5.2736 9.8164 15.2149 +O 1.5926 18.7549 7.4476 +H 19.6135 10.5286 8.0304 +O 12.1141 2.5492 2.2623 +H 7.1314 4.4356 18.8655 +O 18.8032 14.0401 9.9051 +H 15.4517 18.2019 18.2823 +O 2.9193 8.5846 9.5338 +H 5.2633 15.7557 15.9648 +O 8.0700 1.0959 1.4097 +H 13.8603 8.1092 5.7604 +O 1.7118 15.5674 19.3995 +H 4.0682 3.5915 19.9519 +O 9.4851 9.4079 3.3244 +H 11.7373 6.8625 16.6165 +O 0.7107 2.3379 1.8351 +H 12.9919 4.9012 0.3307 +40 20.0 20.0 20.0 +frame 350 +O 12.0178 18.6307 13.5744 +H 6.6030 13.0660 3.8854 +O 19.7348 10.7231 4.5558 +H 5.8273 14.7995 3.9955 +O 4.2667 7.8747 15.0870 +H 18.6536 13.0296 9.5633 +O 0.1222 2.5484 0.3680 +H 15.8654 0.3205 10.0148 +O 19.2815 16.7289 0.8948 +H 11.7450 7.2185 12.4897 +O 6.0661 2.2065 2.0424 +H 1.6964 6.5755 5.3590 +O 6.3936 0.1832 14.8893 +H 19.4221 10.8289 6.0214 +O 8.4522 13.4597 3.7609 +H 8.0844 0.8123 6.3195 +O 6.6166 11.7807 1.0435 +H 7.2437 0.6408 8.3497 +O 6.2279 19.0590 19.9946 +H 6.8780 2.8172 10.6793 +O 11.1210 1.6842 8.4378 +H 13.1262 2.7622 15.5558 +O 17.1491 5.5464 0.4932 +H 5.2785 9.6747 15.5985 +O 2.2508 18.3092 7.3014 +H 19.6287 10.9752 7.5933 +O 12.4778 1.8863 2.3720 +H 7.0897 4.6655 18.4889 +O 18.6723 14.0837 9.6722 +H 15.2606 18.1879 18.4919 +O 2.7621 8.5914 9.5106 +H 5.7009 15.6028 15.5492 +O 8.6581 1.4782 1.1431 +H 13.9298 8.5190 5.7157 +O 1.1211 15.5632 19.3971 +H 4.0654 3.6320 0.0765 +O 9.3271 10.3269 3.3346 +H 11.4142 7.2404 16.5901 +O 0.6087 2.3286 1.5570 +H 12.5517 4.7976 0.2489 +40 20.0 20.0 20.0 +frame 351 +O 11.9507 18.6452 13.7662 +H 7.0129 13.0535 3.8839 +O 0.2581 10.5816 4.7640 +H 6.0962 14.9085 3.5981 +O 4.5852 7.6754 15.5136 +H 18.6798 13.2311 9.1469 +O 19.9555 1.9535 0.5738 +H 16.2718 0.6949 9.7531 +O 19.2893 16.4031 0.2578 +H 12.2393 7.2339 12.5240 +O 6.5578 2.1082 2.2992 +H 1.7816 6.5726 5.7151 +O 6.6110 0.0989 15.3285 +H 19.1294 10.8075 5.8518 +O 8.1458 13.6694 3.5817 +H 8.2517 0.5131 6.8313 +O 6.2878 11.3992 1.3526 +H 7.0449 0.9313 8.3691 +O 6.0415 19.0746 19.7892 +H 6.0064 2.9111 10.2061 +O 11.0711 1.6412 8.2825 +H 13.1096 2.0376 15.5542 +O 16.8966 6.0676 0.4174 +H 5.0565 9.6500 15.2337 +O 2.5604 18.4839 7.1468 +H 0.0791 10.6460 7.5249 +O 12.5109 1.8236 2.1962 +H 6.9517 4.8702 17.9599 +O 18.5806 14.3998 9.3988 +H 15.2969 17.9788 19.2829 +O 2.4894 8.2017 9.7128 +H 6.1310 15.6570 16.1496 +O 8.7039 1.7096 1.2197 +H 13.9084 9.3918 6.2915 +O 1.3294 15.1551 19.3736 +H 4.2065 3.7519 0.1680 +O 9.5634 10.4440 3.7965 +H 11.3059 6.8714 16.6024 +O 0.1104 2.2783 2.0101 +H 12.7533 4.8790 19.8908 +40 20.0 20.0 20.0 +frame 352 +O 12.5633 18.5687 13.5794 +H 6.7008 13.3982 4.3552 +O 0.1232 10.3381 4.8181 +H 6.3355 14.7358 3.1241 +O 4.5628 7.8294 15.6268 +H 18.6760 13.3954 8.9858 +O 19.9766 1.8024 0.4526 +H 16.3516 1.1859 9.3112 +O 19.3624 16.7382 0.1539 +H 12.3320 7.0537 12.3082 +O 6.2648 1.8284 2.4953 +H 1.9449 6.5551 5.5164 +O 6.6956 0.2298 15.2979 +H 19.1722 10.5640 5.8812 +O 8.2263 12.7739 3.7833 +H 8.7928 0.2206 6.7520 +O 6.5255 11.7937 1.0597 +H 6.8846 0.6728 8.8428 +O 6.2029 19.3825 19.5721 +H 6.4374 3.2717 10.3912 +O 11.2257 1.9391 8.1255 +H 12.9455 2.2229 15.7380 +O 16.9141 5.9811 0.7814 +H 4.9843 9.5974 15.3207 +O 2.1251 19.2322 7.1016 +H 0.6728 10.5548 7.6212 +O 12.7450 1.6581 2.5331 +H 7.2348 5.4802 17.8141 +O 18.0263 14.5571 9.3108 +H 15.5223 18.0330 18.9103 +O 2.7904 8.4685 9.8012 +H 6.0256 15.7790 15.7771 +O 8.7353 1.4160 0.9907 +H 13.6855 9.5010 5.6580 +O 1.2897 15.2518 19.3610 +H 4.2972 3.6779 0.2081 +O 8.9478 10.6121 3.7486 +H 12.0571 7.2397 16.4338 +O 19.8500 2.6045 2.0005 +H 12.4825 5.3857 19.7124 +40 20.0 20.0 20.0 +frame 353 +O 12.5016 18.3457 13.1490 +H 6.8595 13.2182 3.7808 +O 0.1600 10.2977 4.9801 +H 6.0540 14.7980 3.0126 +O 5.0377 7.6515 15.8866 +H 18.7474 13.5239 8.8738 +O 0.1707 1.7770 0.2263 +H 16.4129 1.1606 9.6408 +O 19.3553 16.5947 0.4186 +H 12.6326 6.9841 12.6451 +O 6.2348 1.9665 2.6690 +H 1.8757 6.1444 5.0526 +O 7.0810 0.1694 14.9184 +H 19.5242 10.5978 5.7321 +O 7.8250 12.7655 3.5234 +H 9.4931 0.6136 6.9221 +O 6.4904 11.9494 1.0562 +H 7.0002 1.4151 8.7300 +O 6.2176 18.9527 19.9263 +H 6.1918 3.0478 9.9145 +O 11.4055 2.2225 8.4105 +H 13.3751 2.3900 15.6984 +O 16.9742 6.1019 1.0402 +H 5.0003 9.6288 15.0825 +O 1.9958 19.3658 7.0839 +H 19.9086 10.7156 7.3626 +O 13.1157 1.7440 2.5567 +H 7.2620 5.3078 17.4986 +O 17.6540 14.7873 9.5433 +H 15.5645 17.9952 19.0930 +O 2.2940 8.6177 9.5876 +H 5.7618 16.0139 16.0233 +O 8.6098 1.6183 1.1085 +H 13.3644 9.3287 5.5602 +O 1.2390 15.3977 19.3326 +H 3.9180 4.1264 0.9518 +O 8.3818 10.7087 4.1877 +H 12.4045 7.5724 16.7510 +O 19.3111 2.8712 2.2193 +H 12.4959 5.3837 0.3927 +40 20.0 20.0 20.0 +frame 354 +O 11.9130 18.4034 12.5746 +H 7.0723 12.9641 3.5890 +O 0.5363 10.0258 5.1000 +H 6.2647 14.6584 3.0625 +O 5.3326 7.6130 16.2173 +H 18.9217 13.3545 8.6649 +O 19.9166 2.2088 0.2230 +H 16.2121 1.0783 10.0332 +O 19.6216 16.1720 0.6550 +H 13.3074 7.7172 12.9586 +O 6.0228 1.8648 2.8817 +H 1.4437 6.0433 5.1305 +O 6.7916 0.4703 14.6649 +H 19.8666 10.7997 5.5399 +O 7.7400 12.5115 3.4098 +H 9.8703 0.7932 6.8922 +O 6.6476 11.9526 1.1846 +H 7.0557 1.0938 8.4521 +O 6.0432 18.9777 19.8425 +H 5.9592 2.8872 10.3177 +O 11.5651 2.4166 8.2833 +H 13.5146 2.6216 16.1742 +O 16.7600 6.3489 1.0766 +H 5.3082 9.5908 15.1667 +O 1.5030 19.3991 7.2607 +H 0.6822 10.5989 7.6551 +O 13.0918 1.9508 2.4895 +H 7.6358 4.8603 17.1059 +O 17.4998 14.1839 9.6049 +H 16.0900 17.8918 19.5713 +O 2.8218 8.5897 9.3141 +H 5.8698 15.6568 16.0443 +O 8.8360 1.6704 1.4388 +H 13.5504 8.8750 5.5584 +O 0.7492 15.3878 19.7599 +H 4.0934 3.9204 0.5582 +O 8.3937 10.3232 4.3767 +H 11.9054 7.4726 17.0501 +O 18.5806 3.2657 1.7517 +H 12.5661 5.6492 0.2595 +40 20.0 20.0 20.0 +frame 355 +O 11.8657 18.6971 12.9015 +H 6.7642 12.8985 3.3808 +O 0.3896 10.0154 5.1417 +H 6.3494 14.8619 3.6678 +O 5.3553 7.6867 16.1251 +H 18.6544 13.2366 8.2357 +O 19.8291 1.9745 19.6988 +H 16.4846 0.6350 10.0166 +O 19.3990 16.2889 0.9177 +H 13.4880 7.2125 12.8971 +O 5.1320 1.9907 2.9946 +H 1.0907 5.9141 5.4731 +O 6.9507 0.4595 15.0373 +H 19.7746 10.8747 5.6727 +O 7.7078 12.6522 3.6666 +H 10.0115 0.2543 6.6481 +O 6.8659 12.0180 1.4129 +H 6.6045 1.1208 8.7798 +O 5.5487 18.7878 0.0388 +H 6.0195 2.5112 10.2455 +O 11.1805 2.5566 8.3688 +H 13.1857 2.7188 15.5723 +O 16.8649 6.8840 1.4444 +H 5.5019 9.4102 15.4919 +O 1.4988 18.7867 6.5446 +H 0.5013 10.2450 7.5546 +O 12.9644 1.4659 3.0133 +H 8.3931 4.9793 17.4214 +O 17.5325 14.3082 9.5909 +H 16.3305 18.1573 19.3678 +O 2.9773 8.7690 9.0919 +H 5.8549 15.5351 15.8633 +O 9.3422 1.1553 1.7233 +H 13.3641 9.2872 5.4540 +O 0.7637 14.7654 0.3902 +H 3.6596 3.7743 0.9857 +O 8.3876 10.3758 4.3342 +H 12.2233 7.6520 17.2350 +O 19.1501 3.1894 1.8437 +H 12.4903 5.9840 0.4063 +40 20.0 20.0 20.0 +frame 356 +O 11.6610 18.7733 13.2256 +H 6.3318 12.4132 3.4046 +O 0.5352 9.4197 4.8227 +H 5.9956 15.1404 3.4893 +O 4.8022 7.7131 16.4747 +H 18.8334 13.5359 8.1355 +O 0.1078 2.2174 0.0110 +H 16.5780 0.8843 10.0281 +O 19.5825 15.8840 0.7603 +H 13.4411 7.0307 12.7803 +O 5.4188 1.9590 2.9133 +H 1.0480 5.9171 5.5993 +O 6.7012 1.2543 14.7406 +H 0.1973 10.9885 5.2566 +O 7.5090 12.7402 3.0817 +H 10.4181 0.2903 6.6609 +O 6.6972 11.9119 0.9361 +H 6.0420 0.8059 8.8736 +O 5.2439 19.2349 0.0145 +H 5.9942 2.1977 10.1377 +O 11.6362 2.3793 8.4623 +H 12.7506 2.9205 15.9439 +O 17.1730 6.6440 1.3352 +H 5.4180 9.4136 14.9588 +O 1.6135 18.8334 6.3551 +H 0.4175 10.4676 7.7816 +O 12.5545 1.1188 3.2404 +H 8.6724 5.2903 17.4967 +O 17.5182 14.9651 9.4960 +H 16.4849 18.2175 19.5638 +O 2.9485 9.2009 9.1438 +H 6.2492 15.2497 15.1035 +O 9.3132 1.0997 1.2895 +H 12.7572 9.6649 5.3410 +O 0.9900 14.8102 0.1412 +H 4.1454 3.4155 1.3741 +O 8.7017 10.5122 4.4581 +H 11.8990 8.0723 17.0679 +O 19.0407 2.8495 1.6180 +H 12.7035 6.5646 0.8462 +40 20.0 20.0 20.0 +frame 357 +O 11.6455 18.5346 12.5091 +H 5.7621 12.3188 3.4524 +O 0.5216 9.4957 4.6944 +H 5.9359 15.0678 3.6146 +O 4.7670 7.7414 16.6922 +H 19.6495 13.2776 7.9110 +O 19.8719 2.0535 19.5545 +H 16.9812 1.0256 10.0084 +O 19.5995 15.7929 0.8435 +H 13.2675 7.2349 13.0695 +O 5.0672 1.9179 2.7572 +H 1.2295 5.6143 5.8410 +O 6.4247 1.3818 14.3869 +H 0.4554 10.6859 5.0914 +O 7.6580 12.6966 3.0488 +H 10.6658 19.8415 6.6142 +O 6.7097 11.7297 0.7152 +H 5.7209 1.2693 8.6545 +O 5.6067 18.9624 0.2442 +H 6.1513 2.6418 10.6762 +O 11.5583 2.1719 8.1197 +H 12.7563 3.4410 15.7000 +O 17.2262 6.6239 1.3143 +H 5.3923 9.0513 15.0679 +O 1.1210 18.9311 6.6613 +H 0.7536 10.8705 7.7665 +O 12.7503 0.8001 3.4887 +H 8.5030 5.7465 17.3850 +O 17.5840 14.6152 9.7094 +H 16.0960 18.2006 19.8388 +O 2.9950 9.1830 8.9758 +H 6.0952 14.5707 15.0781 +O 9.0628 0.5820 1.7441 +H 12.7876 9.2489 5.0957 +O 0.7393 14.5322 0.3875 +H 3.7797 2.8158 1.7562 +O 8.6336 10.1619 4.6893 +H 12.0732 8.0072 17.2327 +O 19.4818 2.3943 1.0949 +H 13.2302 6.4988 0.4428 +40 20.0 20.0 20.0 +frame 358 +O 10.9051 18.9396 12.6075 +H 5.6246 11.9285 3.4563 +O 0.1791 9.4479 4.7622 +H 5.8351 14.7383 4.0872 +O 4.9807 7.5399 16.0467 +H 19.3394 13.7472 8.5652 +O 19.7804 1.9776 18.8313 +H 16.9308 0.5822 10.2948 +O 19.2848 15.8673 0.8774 +H 13.5330 6.7884 12.8487 +O 4.4546 1.7527 2.5446 +H 1.0659 5.3218 6.0068 +O 6.0673 1.8969 14.6684 +H 0.0861 10.5584 5.0656 +O 8.3184 13.1101 2.9019 +H 10.6893 0.6072 6.5916 +O 6.1220 11.9669 0.6174 +H 5.7272 0.3863 8.3617 +O 5.3585 18.9821 0.1329 +H 6.4549 2.5842 10.3308 +O 11.9242 1.9330 7.9504 +H 13.0055 2.5164 15.3842 +O 16.6607 6.2315 1.7503 +H 5.4311 9.2437 14.8720 +O 1.0249 18.9236 6.5956 +H 0.6491 10.1666 7.6831 +O 13.5042 1.2418 3.8760 +H 8.9973 5.8446 16.9243 +O 17.0929 14.6120 9.5931 +H 16.3936 18.2570 19.8643 +O 3.1079 9.0861 8.9520 +H 5.5862 14.4250 15.0113 +O 8.7005 0.6958 1.4108 +H 12.5150 9.0054 4.8320 +O 1.2738 14.4487 0.3209 +H 4.3781 2.5750 1.8120 +O 8.4724 9.8699 4.6993 +H 11.2672 8.4890 17.0880 +O 19.5823 2.1010 1.2362 +H 13.2155 6.5016 0.1076 +40 20.0 20.0 20.0 +frame 359 +O 11.0053 18.8623 12.7570 +H 5.6038 11.9620 3.6242 +O 0.4335 9.2568 4.9435 +H 6.2853 14.6925 4.0418 +O 5.3485 7.6948 16.2422 +H 19.2768 13.6382 8.4972 +O 19.5142 2.1875 18.7884 +H 16.8514 0.7165 10.2196 +O 19.0903 15.7691 1.3097 +H 14.0360 6.5054 13.0706 +O 4.6787 1.3872 2.3978 +H 1.1846 5.3765 5.6508 +O 5.9933 2.1969 14.7280 +H 0.3112 10.3170 5.3589 +O 8.4000 13.0659 2.8938 +H 10.7233 0.4672 6.3333 +O 6.1464 11.5817 1.1841 +H 5.7416 0.6027 7.8288 +O 4.9578 19.2592 0.3286 +H 6.8618 2.9916 10.9536 +O 12.2132 1.6036 8.2569 +H 13.4938 2.1808 15.7309 +O 16.4007 5.8377 2.2869 +H 5.1428 9.1630 14.7735 +O 1.0263 19.3611 6.4066 +H 0.3805 10.2045 7.9719 +O 13.6757 1.1271 3.4574 +H 9.0444 5.8347 16.3175 +O 17.4669 15.4118 10.3934 +H 16.3340 18.3278 19.8983 +O 2.8904 9.3295 8.7711 +H 5.4382 14.3490 14.7165 +O 8.5216 0.6966 1.4430 +H 12.7342 8.9346 4.5154 +O 0.6988 14.3141 0.3261 +H 4.2227 2.2724 1.9766 +O 8.6006 9.3072 4.8606 +H 11.2511 8.5395 16.3580 +O 19.3864 2.2300 1.2678 +H 13.1229 6.5361 0.0009 +40 20.0 20.0 20.0 +frame 360 +O 11.3302 18.7913 12.5630 +H 5.2859 12.5311 3.3151 +O 0.4805 9.1770 4.9217 +H 6.5636 14.7368 4.1491 +O 5.2515 8.1728 16.4327 +H 19.4570 13.5036 8.2122 +O 19.3192 1.7098 19.1799 +H 17.0141 0.8522 9.6699 +O 18.9171 15.7960 0.8310 +H 14.0507 6.2630 12.5606 +O 4.5288 1.0132 2.3394 +H 0.8677 6.0242 5.4436 +O 6.0879 2.1539 14.8638 +H 0.3548 10.0124 5.2546 +O 8.3595 12.8221 2.7352 +H 10.7333 0.2272 6.6359 +O 6.4602 11.4011 1.3671 +H 5.5931 0.5078 7.4493 +O 4.4945 19.2561 0.3804 +H 6.9075 2.8892 10.8521 +O 12.0762 1.5178 8.1042 +H 13.6964 2.2756 16.1003 +O 16.7441 5.6717 2.1388 +H 4.6652 9.2249 14.4533 +O 0.9649 19.4698 6.3413 +H 19.9836 10.2685 8.1039 +O 13.8238 0.8369 3.2600 +H 9.1362 5.6114 16.2074 +O 17.6468 15.3633 10.7304 +H 16.4214 18.7466 19.8753 +O 3.0309 9.6185 8.9977 +H 5.7018 14.2211 14.7857 +O 8.4618 0.7310 1.1467 +H 13.0921 8.8998 4.5696 +O 0.8505 14.1436 0.5971 +H 3.9870 1.7617 1.7584 +O 8.9447 9.7879 5.0451 +H 11.5903 8.8871 16.2887 +O 19.5729 2.2147 0.9369 +H 13.1578 6.8610 0.1706 +40 20.0 20.0 20.0 +frame 361 +O 11.7361 18.7062 12.6591 +H 5.8186 12.3684 3.8424 +O 1.1734 9.1325 5.0727 +H 6.5108 14.4086 3.9861 +O 5.0138 7.9587 16.6738 +H 19.7815 13.1714 8.5080 +O 19.3377 1.6282 18.9504 +H 16.7966 0.9283 9.5987 +O 18.7231 15.5442 0.5894 +H 13.8051 6.9095 12.3587 +O 4.4837 1.1914 2.2162 +H 0.4704 6.2361 5.3146 +O 6.1252 2.2243 14.3102 +H 0.2742 9.8530 5.5170 +O 8.5050 12.9750 3.0704 +H 10.9462 0.5404 6.9766 +O 6.6389 11.4994 1.3011 +H 5.4853 1.1008 8.1532 +O 4.8119 19.2726 0.5501 +H 6.8201 2.8133 10.4155 +O 11.9377 1.7688 7.6282 +H 13.5616 2.3672 16.3219 +O 16.3084 5.2549 2.5574 +H 4.6032 8.9653 14.4393 +O 1.2698 19.2011 6.4991 +H 19.9762 10.1696 8.3594 +O 14.3850 1.1200 3.3341 +H 8.9465 5.5689 15.9875 +O 17.4800 15.5924 10.4419 +H 16.3703 19.1575 19.7612 +O 2.6832 9.6215 9.2312 +H 6.0236 14.8730 14.6966 +O 8.4014 0.1456 1.1063 +H 13.1137 8.4817 4.5047 +O 0.7981 14.5744 0.9289 +H 3.7824 2.0767 1.1738 +O 8.8292 9.8017 5.1751 +H 12.0219 8.9175 16.5718 +O 19.5675 2.5037 0.8628 +H 12.6460 6.9213 0.3424 +40 20.0 20.0 20.0 +frame 362 +O 11.1096 18.4206 12.6222 +H 5.3524 12.4411 3.0255 +O 1.3625 9.1755 4.5698 +H 6.7418 14.1687 3.9608 +O 4.8484 8.2878 16.6930 +H 19.9996 13.0337 8.1674 +O 19.3377 1.8373 19.1198 +H 17.1267 0.7220 9.5226 +O 18.6331 15.9072 0.7507 +H 14.0825 7.0706 12.3052 +O 4.4522 1.2659 3.0054 +H 0.8841 6.5593 5.4463 +O 6.5842 1.9368 13.9762 +H 19.8429 9.6355 5.7044 +O 8.3404 13.4565 2.7427 +H 11.0109 0.0722 6.8501 +O 6.8206 11.1826 1.6689 +H 5.5452 0.9021 8.3240 +O 4.8698 0.1443 0.4356 +H 6.9393 3.0532 10.7423 +O 11.8135 1.7176 8.0932 +H 13.7230 2.4685 16.3168 +O 15.9200 4.8937 2.8700 +H 4.2742 9.3014 14.1795 +O 1.0230 18.8189 6.1006 +H 19.8012 10.4089 8.4913 +O 14.3969 1.6339 3.4150 +H 8.9754 5.6504 15.8579 +O 17.5700 15.2536 11.1980 +H 16.2315 19.2276 19.8307 +O 2.5903 9.0152 9.1770 +H 5.8428 14.5629 15.0067 +O 8.3440 19.8865 1.8205 +H 13.2703 8.6922 4.2826 +O 0.4541 14.6060 1.2915 +H 4.1285 2.0151 1.0539 +O 9.1009 9.7902 4.7425 +H 11.7596 8.7601 16.5504 +O 19.1856 2.4788 1.1201 +H 12.7919 6.6247 0.4475 +40 20.0 20.0 20.0 +frame 363 +O 10.7372 18.2609 12.8509 +H 5.8788 13.1091 3.3493 +O 1.0692 9.5131 4.1592 +H 6.2261 14.4936 4.3024 +O 5.0497 8.4278 17.0998 +H 0.1130 12.9395 8.3544 +O 19.1285 1.3968 19.2636 +H 16.8544 0.6161 9.6480 +O 18.4111 15.5649 0.6116 +H 13.8671 7.1849 12.4352 +O 4.6467 1.3508 2.7513 +H 0.2133 6.7091 5.3109 +O 6.6633 1.1350 14.1646 +H 0.0409 9.9034 5.9023 +O 8.7365 13.2881 2.5662 +H 11.0532 0.3658 7.1566 +O 6.9258 11.3230 1.5071 +H 5.6773 0.6404 8.0602 +O 5.1081 19.8874 19.7751 +H 7.3250 3.0926 10.9913 +O 11.9127 1.5687 8.3534 +H 13.6859 2.1778 16.5530 +O 16.3693 5.0549 3.1347 +H 4.2141 9.1792 14.2248 +O 1.3655 19.4287 6.5088 +H 19.7339 9.8146 8.3665 +O 14.2989 1.7501 3.0436 +H 8.8298 5.5845 15.8190 +O 17.4718 15.3034 10.8124 +H 16.8505 18.9501 0.1493 +O 2.9236 8.7798 8.8564 +H 6.2396 14.5345 15.4050 +O 8.3790 19.6946 1.4465 +H 13.8100 8.5972 3.9624 +O 0.6006 15.0601 1.2409 +H 4.2381 1.4902 1.2610 +O 8.7975 10.1328 4.5937 +H 11.9424 8.2184 16.4079 +O 19.3880 2.6181 1.1266 +H 13.0771 6.5153 0.5249 +40 20.0 20.0 20.0 +frame 364 +O 10.7145 18.5634 13.2975 +H 6.5043 13.4484 3.4185 +O 1.5795 9.7718 3.9394 +H 6.3037 14.0337 3.8011 +O 4.9181 8.9159 16.6155 +H 19.8608 12.4090 8.5100 +O 19.6386 1.5522 18.8834 +H 17.0995 0.7990 9.4292 +O 18.5277 15.4311 0.4975 +H 14.4404 6.6557 12.2523 +O 4.2307 1.5906 2.8185 +H 0.1555 6.3692 4.9493 +O 6.7429 1.2893 14.0167 +H 0.0821 9.2604 5.8341 +O 8.8194 13.2928 3.2121 +H 10.9297 0.5138 6.9937 +O 7.0078 11.5444 1.6218 +H 5.4129 0.6963 7.8480 +O 5.0322 0.7212 19.7537 +H 6.9988 2.9526 10.7273 +O 11.8583 1.5409 8.5255 +H 13.3754 1.3758 16.9652 +O 16.6208 4.8249 2.6267 +H 4.2509 9.1007 14.4262 +O 1.6489 19.7505 6.7142 +H 19.7133 10.1628 8.8373 +O 14.4970 1.3875 2.6545 +H 8.8488 5.2978 16.1042 +O 16.9167 15.3757 11.2558 +H 17.0358 19.2742 0.1055 +O 2.8659 9.3754 8.6339 +H 6.2858 14.8289 15.4404 +O 8.6995 19.8061 1.3135 +H 13.6879 8.8189 3.7733 +O 1.0347 14.9481 1.2328 +H 4.1546 1.3587 1.4936 +O 9.1182 9.9375 4.5634 +H 11.6103 8.4153 16.5286 +O 19.4959 2.9485 0.6514 +H 13.3500 6.5854 0.5039 +40 20.0 20.0 20.0 +frame 365 +O 10.5739 18.0386 13.7207 +H 6.6769 13.0564 3.4847 +O 2.3347 9.8211 3.4897 +H 6.5878 14.1219 3.9785 +O 4.7696 8.9387 16.5879 +H 0.0923 12.8044 8.6125 +O 19.5661 1.3729 18.5588 +H 17.0466 1.2983 9.5474 +O 18.3807 15.5284 0.3760 +H 14.2167 6.3341 12.0559 +O 4.1012 1.7908 2.5611 +H 19.9464 6.9322 4.7588 +O 7.3713 1.3517 13.4907 +H 0.7448 9.3224 5.5725 +O 9.0857 12.9549 3.0839 +H 11.4756 0.5182 7.2452 +O 6.8422 11.5524 1.5684 +H 5.5931 0.5461 7.7424 +O 5.0599 0.5312 19.7362 +H 7.0243 3.3065 10.8455 +O 11.7561 1.7176 7.9517 +H 12.7849 1.4750 16.8205 +O 16.6360 5.2173 3.3813 +H 3.9501 8.8160 15.2847 +O 1.9290 19.9061 7.0514 +H 19.9492 10.0861 8.3311 +O 14.1168 1.7840 2.9214 +H 8.5361 5.1234 16.2062 +O 16.4296 15.5404 10.9008 +H 16.9299 18.9907 0.3593 +O 3.1823 9.6849 8.4866 +H 6.5619 14.7512 16.0054 +O 8.8220 0.2573 1.4785 +H 13.3985 8.5302 3.4384 +O 0.3314 15.1319 1.4804 +H 4.1591 1.4238 1.6690 +O 9.0510 10.2700 5.2048 +H 11.5834 8.4948 17.0059 +O 19.8418 3.1449 1.0408 +H 13.6683 6.6434 0.0081 +40 20.0 20.0 20.0 +frame 366 +O 10.5560 18.1502 13.8324 +H 6.5781 12.8851 3.8439 +O 2.0620 9.2159 3.3922 +H 6.8860 14.0353 4.2983 +O 4.3697 8.5833 17.0337 +H 0.0398 12.8181 8.3380 +O 19.6510 1.2620 18.4002 +H 16.9055 1.4399 10.0782 +O 18.9717 15.1588 0.4429 +H 14.3333 6.3854 11.8745 +O 4.0668 1.8382 2.5692 +H 0.2330 6.3640 4.1636 +O 7.6386 1.7391 13.5607 +H 0.4673 9.5720 5.6107 +O 9.5124 13.2068 3.3892 +H 11.4091 0.6763 6.8201 +O 6.6314 11.3933 1.6672 +H 6.1554 0.2731 7.6164 +O 4.8051 0.0116 19.3187 +H 7.0812 3.1474 10.6539 +O 12.1207 1.6953 8.1483 +H 13.0486 1.3783 17.0370 +O 16.3066 5.0838 3.3807 +H 4.2940 8.6686 15.5928 +O 1.6497 19.7758 7.0343 +H 0.1747 10.3693 7.7060 +O 14.0427 1.8452 3.3005 +H 8.5557 5.9116 16.5415 +O 16.2278 15.5312 11.1435 +H 17.1142 18.7825 0.2787 +O 3.5320 9.8199 8.2514 +H 6.8276 15.0024 15.6888 +O 8.4745 0.2849 0.9842 +H 12.8387 8.9514 3.4181 +O 0.6526 14.9526 1.2489 +H 4.1579 1.9889 1.9408 +O 9.0900 10.2947 5.2782 +H 11.3365 8.4850 17.0039 +O 18.9217 3.0895 0.7713 +H 14.3001 6.7902 0.5582 +40 20.0 20.0 20.0 +frame 367 +O 10.2656 18.6675 13.5202 +H 6.2239 13.1192 4.2360 +O 2.2501 9.1818 3.4547 +H 6.4513 13.9997 4.2544 +O 4.6235 8.6995 16.9309 +H 0.2490 12.8167 8.0268 +O 0.0413 0.6928 18.1055 +H 16.9400 1.7869 10.0344 +O 18.6934 15.3515 0.4593 +H 14.4769 6.1898 11.8539 +O 3.7832 1.9920 1.9259 +H 0.0277 6.7269 4.4871 +O 7.2863 2.3301 13.8598 +H 0.4938 9.8875 5.8483 +O 9.4886 13.1421 3.3193 +H 11.1997 0.2212 7.1156 +O 6.8283 10.8751 1.6216 +H 6.0918 0.6006 7.1809 +O 4.6974 19.8847 19.5764 +H 6.9920 2.5419 10.5957 +O 12.0207 1.3576 8.0871 +H 13.3383 1.1515 16.5900 +O 16.5480 4.6884 3.2538 +H 4.1528 8.3220 16.0032 +O 1.6569 19.5805 6.3510 +H 0.1838 10.8139 7.6182 +O 14.2946 2.8665 3.5858 +H 8.7231 6.3012 16.4668 +O 15.6989 15.1455 11.6482 +H 16.9489 18.5587 19.7806 +O 3.3486 9.7263 8.7748 +H 6.9761 15.2042 15.8435 +O 8.2944 0.3189 0.9298 +H 13.2061 8.3122 3.2013 +O 0.8336 14.6008 1.5313 +H 4.1766 1.4185 1.4994 +O 8.7687 10.0597 4.8249 +H 11.4290 7.9371 17.2769 +O 18.8661 3.4958 0.9754 +H 14.1943 6.7735 0.6734 +40 20.0 20.0 20.0 +frame 368 +O 10.4179 18.2104 13.6849 +H 6.6732 13.3801 4.5143 +O 2.5346 8.8482 3.7567 +H 6.8409 13.5083 3.7951 +O 4.8814 8.1155 17.1480 +H 0.6544 12.6282 8.0501 +O 0.1638 0.8986 18.0366 +H 16.9498 1.8161 9.8709 +O 18.8100 15.2130 0.7393 +H 14.5643 6.2301 12.0262 +O 3.6177 1.6983 1.7613 +H 0.3990 6.3312 4.4934 +O 7.2120 2.2865 13.3594 +H 0.7284 9.8235 5.8204 +O 9.0554 13.1991 3.6945 +H 11.1913 0.2010 6.9483 +O 6.7596 11.3743 2.4097 +H 6.2325 0.5893 7.1207 +O 4.7747 19.9387 19.1263 +H 7.8303 2.2936 11.1027 +O 12.2912 2.0756 8.2300 +H 13.6163 0.8485 17.0961 +O 16.2072 4.5569 3.6272 +H 4.2471 8.1297 16.1582 +O 1.2158 19.3341 5.7169 +H 0.0209 11.0289 7.3346 +O 14.0391 2.9213 4.5281 +H 8.2305 6.4888 16.0888 +O 16.2613 15.2927 11.5251 +H 17.2709 18.3544 19.2433 +O 3.7910 9.9970 9.0197 +H 6.7073 14.7367 15.4870 +O 8.4381 0.4255 0.6755 +H 13.3516 8.2166 3.2946 +O 0.5510 14.5972 1.8863 +H 4.0206 1.3498 1.6601 +O 8.7490 9.8452 4.5476 +H 12.0012 7.7693 17.6013 +O 19.0267 3.5718 0.9976 +H 13.9903 6.6972 0.5728 +40 20.0 20.0 20.0 +frame 369 +O 9.8856 18.3426 13.7595 +H 7.1187 13.8351 4.5791 +O 2.8307 8.2455 3.5460 +H 6.8754 13.2560 3.5197 +O 5.2803 7.8751 16.5837 +H 1.0187 13.1309 8.3674 +O 19.1295 0.8813 17.7698 +H 16.7792 2.0259 9.6916 +O 19.1387 15.9835 0.2758 +H 14.7333 6.1630 12.2283 +O 3.8489 1.6899 1.4009 +H 19.9556 6.2224 4.3084 +O 7.2267 2.6348 13.2995 +H 1.0213 9.4092 6.1028 +O 8.7813 12.4068 3.8422 +H 11.0981 0.5600 6.9766 +O 6.6024 11.0866 2.8221 +H 6.6211 1.1527 6.9750 +O 5.1028 19.8593 18.7850 +H 7.5676 2.5492 10.8044 +O 12.1355 2.0797 8.2368 +H 13.5870 1.0806 17.5995 +O 15.8857 4.2057 3.3144 +H 3.9662 8.1724 15.8968 +O 0.8512 19.2327 5.7843 +H 19.6685 10.8463 6.9004 +O 13.8536 3.5625 4.0709 +H 7.6471 6.2042 16.4068 +O 16.2774 15.0672 11.4650 +H 17.1964 18.3367 19.1508 +O 3.7926 10.2558 8.6926 +H 6.5889 15.1174 15.1603 +O 8.2572 19.6900 0.6412 +H 13.6856 8.8671 3.4993 +O 0.6154 14.4624 2.1282 +H 3.8612 0.9724 1.4936 +O 8.4405 10.0985 4.1782 +H 12.1813 7.5917 17.9393 +O 18.2138 3.5754 1.5136 +H 14.1228 6.7894 19.9516 +40 20.0 20.0 20.0 +frame 370 +O 9.5351 18.0844 13.6246 +H 6.7979 13.4136 4.7584 +O 3.1423 8.2104 3.5744 +H 6.9558 13.3180 3.6618 +O 5.1960 7.7176 16.3136 +H 0.4634 12.6497 8.4936 +O 18.8543 0.5548 18.3738 +H 16.9350 2.0355 9.8843 +O 19.6323 16.3646 0.2817 +H 14.6941 5.9921 11.8899 +O 3.2899 1.5521 1.4980 +H 19.7241 6.1229 4.6924 +O 7.3730 2.6765 12.8753 +H 0.8535 9.3514 5.7275 +O 8.5536 12.6296 4.0273 +H 11.5133 0.6959 7.0961 +O 6.4927 10.4262 2.8426 +H 6.5297 1.2035 7.0821 +O 5.0044 0.1008 18.9160 +H 7.4707 2.2467 10.9044 +O 12.4453 1.7989 7.6375 +H 13.4269 0.9610 18.0002 +O 15.3288 4.6885 3.9588 +H 4.1193 8.1954 16.0178 +O 0.8940 19.3015 5.9354 +H 19.5754 10.6619 7.2563 +O 13.9546 3.0085 4.5378 +H 7.3696 6.5297 16.2289 +O 16.0279 14.3791 11.2450 +H 17.4819 18.3383 18.9623 +O 3.5844 10.2208 8.3763 +H 6.8197 15.4022 15.1007 +O 8.4310 19.8892 0.7076 +H 14.2034 8.6600 4.2490 +O 0.7049 14.6062 2.4556 +H 3.4255 0.9122 1.5371 +O 8.1406 9.7277 4.2106 +H 12.4234 7.6310 17.7525 +O 17.6924 3.1355 1.7133 +H 14.3820 7.0911 0.2009 +40 20.0 20.0 20.0 +frame 371 +O 9.4443 17.4254 13.3382 +H 7.0708 13.1753 4.5272 +O 3.1056 8.1882 3.5942 +H 6.5718 13.2448 3.9955 +O 4.9763 7.5504 16.6586 +H 0.5324 12.8088 8.1748 +O 19.0311 0.4609 18.1646 +H 16.9666 2.7444 9.8002 +O 19.4711 15.9661 19.8634 +H 14.7841 5.4789 12.1457 +O 3.0216 1.2063 1.1819 +H 19.7302 6.5502 4.8744 +O 7.9614 2.5629 12.6650 +H 1.4586 9.1454 5.8151 +O 8.5722 12.3264 4.0797 +H 11.7050 1.0341 7.1482 +O 6.7286 10.1929 2.5733 +H 6.7403 1.0220 7.6380 +O 5.0876 0.5702 18.9319 +H 7.4316 2.3321 11.1195 +O 12.4241 1.2984 7.6664 +H 13.6432 1.2378 18.2507 +O 15.3998 4.6307 3.6707 +H 4.0264 7.5115 16.3504 +O 0.7841 19.3065 6.9701 +H 19.4574 10.8154 7.3056 +O 13.8556 2.7438 4.2930 +H 7.4094 5.9839 16.1614 +O 16.0934 13.8243 11.4989 +H 17.7370 17.8297 18.8646 +O 3.7666 9.9374 8.3937 +H 7.1298 15.7416 15.1621 +O 8.5591 0.1470 0.9402 +H 14.5276 9.1813 4.2914 +O 0.4775 14.6165 2.2826 +H 3.1659 0.7160 1.1248 +O 8.1223 9.8711 4.5399 +H 12.1209 7.8806 17.6926 +O 18.0201 3.0787 2.1237 +H 14.1753 7.4745 0.1674 +40 20.0 20.0 20.0 +frame 372 +O 9.2265 17.4072 13.0757 +H 7.5952 13.2000 4.8916 +O 3.2288 8.4723 3.7849 +H 6.5055 12.9931 3.8864 +O 4.8463 7.2936 16.5436 +H 0.1784 12.7122 8.2061 +O 19.2013 0.5708 18.3564 +H 17.3379 2.4396 9.8081 +O 19.1287 15.8079 0.2643 +H 14.4023 5.8280 11.8864 +O 2.6826 0.9252 1.2488 +H 0.3396 6.6947 5.1220 +O 8.0596 2.8021 12.7262 +H 1.2199 9.5078 5.4313 +O 8.7236 12.2306 3.9368 +H 11.2669 0.6395 6.8747 +O 6.6069 10.5196 2.6701 +H 6.7460 1.2940 7.6076 +O 4.6244 0.5971 18.6753 +H 7.5404 2.6957 11.0928 +O 12.9191 1.3781 7.2769 +H 13.6679 1.4218 18.0638 +O 15.5933 4.6505 3.5091 +H 3.9049 7.2548 16.2961 +O 0.7945 19.2545 7.2584 +H 19.0340 11.1464 7.3765 +O 13.0399 2.4132 4.2811 +H 7.3928 5.8802 15.8336 +O 15.8000 14.2501 11.3246 +H 17.9091 18.1151 18.4500 +O 3.8325 9.5463 8.5256 +H 7.5837 15.6175 14.8290 +O 8.5255 0.3263 0.9196 +H 14.7243 9.1226 4.2541 +O 0.5170 14.7826 2.2948 +H 3.1471 0.7124 0.5326 +O 8.1721 9.3682 4.8987 +H 11.9397 7.6372 17.5928 +O 17.8273 2.9645 2.2264 +H 14.2827 7.6121 19.7061 +40 20.0 20.0 20.0 +frame 373 +O 9.3447 16.6927 12.2554 +H 7.5114 12.9895 4.5895 +O 3.5781 8.3552 3.6331 +H 5.8483 13.1139 3.6871 +O 4.1666 6.7406 16.6042 +H 0.0567 13.1796 8.0389 +O 19.7655 1.1379 18.3762 +H 17.7996 2.8910 9.8813 +O 19.7931 15.5173 0.7406 +H 14.4289 6.2658 11.8899 +O 2.3456 0.5111 1.0175 +H 0.7541 6.2183 5.2982 +O 7.7839 2.6468 11.9964 +H 0.8864 9.0329 5.4815 +O 8.9618 12.2551 3.5872 +H 11.5066 0.6689 6.5297 +O 6.8010 10.5183 2.5633 +H 6.8460 1.4152 7.8737 +O 4.5230 0.2108 18.6806 +H 7.3905 3.0223 11.0500 +O 12.7921 1.7952 7.4848 +H 13.9822 0.8723 17.9659 +O 15.3978 4.5986 3.6471 +H 3.4501 6.7685 15.9278 +O 1.2406 19.3359 6.9783 +H 18.9033 10.8193 7.5231 +O 12.6774 2.5046 4.7907 +H 7.2001 5.6404 15.6919 +O 16.0355 14.7145 10.6141 +H 17.7972 18.1165 18.3620 +O 4.1519 9.5946 8.5376 +H 7.6914 15.2378 14.6353 +O 8.6049 0.5498 0.6235 +H 15.0892 8.5471 4.2300 +O 0.8748 15.0640 2.4277 +H 3.1965 0.6477 0.3921 +O 7.8806 9.4307 4.9256 +H 11.6055 7.5334 17.5289 +O 18.0658 2.8297 2.4479 +H 14.0744 7.0429 19.2935 +40 20.0 20.0 20.0 +frame 374 +O 9.4221 16.6121 12.5244 +H 7.8221 12.5819 4.7758 +O 3.8982 8.2420 4.0584 +H 6.1425 13.2325 3.4804 +O 4.2213 7.3059 16.5486 +H 0.7061 13.5634 7.9617 +O 19.9794 0.9753 18.7429 +H 17.6692 3.3905 9.8277 +O 19.9335 15.7633 0.9116 +H 14.5718 6.6291 12.1321 +O 2.1898 0.2036 1.0899 +H 0.6652 6.4772 5.4352 +O 7.4113 2.4857 11.7852 +H 0.8988 8.9683 4.7247 +O 8.7634 11.8504 3.8826 +H 11.9114 1.0521 6.5158 +O 7.0605 10.7678 2.1101 +H 6.6291 1.2955 7.9075 +O 4.4671 0.6040 18.5122 +H 7.4585 3.0228 11.1728 +O 13.3236 1.9312 7.2272 +H 14.0301 1.4401 17.8528 +O 15.4336 4.6007 3.3108 +H 3.9617 6.9317 15.8924 +O 1.4230 19.0035 7.1719 +H 19.2511 10.5591 7.4325 +O 12.5206 2.4973 5.1353 +H 7.3929 5.5374 16.0528 +O 16.0347 14.9031 10.9609 +H 17.9160 18.3835 18.8225 +O 4.1018 9.4228 8.0652 +H 7.2731 15.2910 14.3511 +O 8.9569 0.4981 0.6827 +H 15.2836 7.8386 4.4947 +O 0.8641 14.9686 2.1704 +H 3.0936 0.3319 0.6540 +O 8.2000 9.1472 4.8116 +H 11.7048 7.4854 17.6945 +O 17.8441 2.9541 2.2119 +H 14.3684 7.4520 19.6665 +40 20.0 20.0 20.0 +frame 375 +O 9.1374 16.5877 12.3442 +H 7.6288 12.3466 4.6331 +O 3.8601 8.3145 3.9218 +H 5.7784 13.2196 3.5790 +O 4.2927 7.3498 16.2714 +H 0.4616 13.1638 7.7620 +O 19.6034 0.9812 18.7805 +H 17.9328 3.5375 9.5851 +O 19.5499 15.6821 1.1259 +H 14.4989 6.8439 12.1138 +O 1.7652 0.2901 1.3098 +H 0.8358 6.3807 5.3935 +O 7.1406 2.6575 11.6023 +H 0.8239 8.8986 4.2498 +O 8.3728 12.4173 4.1636 +H 11.8054 0.9014 6.4434 +O 6.9788 10.5946 2.0113 +H 6.5619 1.6876 8.0386 +O 4.7910 0.7569 17.9154 +H 7.3265 2.3258 10.6149 +O 13.3366 2.1853 7.3299 +H 13.5498 1.5004 17.7865 +O 16.1884 4.2765 3.2118 +H 3.4809 6.0286 15.9536 +O 1.2671 19.5081 7.0398 +H 18.9948 10.7076 7.5625 +O 13.1042 2.8151 5.0494 +H 7.0002 5.5631 15.6120 +O 16.1183 14.4716 10.8352 +H 17.8483 18.5105 18.8553 +O 4.4880 9.4560 8.3591 +H 7.0719 14.9905 14.0740 +O 8.8991 0.1020 0.8466 +H 14.8519 8.1680 4.1575 +O 0.9374 14.9298 2.1462 +H 2.6069 0.2671 0.8740 +O 7.9633 9.4155 4.5837 +H 11.8030 7.6380 17.5375 +O 18.0154 3.0320 2.7016 +H 14.5147 7.7985 19.6870 +40 20.0 20.0 20.0 +frame 376 +O 8.9177 16.3192 12.2235 +H 7.7597 12.1000 4.9688 +O 3.9666 8.5891 3.7407 +H 5.4892 13.1915 3.7311 +O 4.7487 7.5521 16.0056 +H 0.7251 13.2905 7.4935 +O 18.9142 0.6773 19.2715 +H 17.9926 3.3723 9.9215 +O 19.4375 15.7905 1.0285 +H 14.1699 7.1706 12.3052 +O 1.6896 0.6729 1.3948 +H 0.5672 6.1587 5.3262 +O 7.4737 2.5573 11.6883 +H 0.8603 9.1948 3.9643 +O 8.3721 12.7885 4.3560 +H 11.6207 0.7166 6.8004 +O 6.6614 9.9578 2.3726 +H 6.5550 1.7924 7.8392 +O 5.2263 1.1268 17.9204 +H 7.4248 2.6336 10.8292 +O 13.0308 1.8906 7.2404 +H 13.5262 1.3339 17.9842 +O 16.1572 4.2566 3.7028 +H 4.2066 6.1071 15.7935 +O 1.2178 19.9638 6.9896 +H 18.7425 11.0608 6.6765 +O 13.2978 2.8906 5.0028 +H 6.1869 5.4110 14.6304 +O 16.0461 14.3595 10.9379 +H 17.7963 18.3126 18.7587 +O 4.4466 9.2562 8.4109 +H 7.1310 15.2598 14.3698 +O 8.7774 19.6682 0.9902 +H 14.3384 8.9758 4.7351 +O 1.4388 14.9020 2.1528 +H 2.2484 0.0068 0.6351 +O 8.0384 9.6835 4.2886 +H 11.7490 7.5761 17.7841 +O 18.0354 3.1148 3.0814 +H 14.0400 7.9036 19.4587 +40 20.0 20.0 20.0 +frame 377 +O 9.2690 16.1809 12.1409 +H 8.3310 12.0218 5.0456 +O 3.6738 8.7558 3.5964 +H 5.6137 13.1031 3.8985 +O 4.1364 7.8529 16.3108 +H 0.9892 13.1768 6.8246 +O 18.4850 0.7409 19.4345 +H 17.9266 3.2262 10.0303 +O 19.2622 15.7707 1.0673 +H 14.6181 7.1625 12.2148 +O 1.6053 0.2963 0.8444 +H 0.7127 6.1343 4.7930 +O 7.8413 2.4167 11.2444 +H 1.2074 9.3370 4.8063 +O 8.4880 12.3447 4.7909 +H 11.4771 0.2383 6.5953 +O 6.2213 9.9810 2.0252 +H 6.4613 1.6265 7.5573 +O 5.3012 1.3842 17.7819 +H 7.3822 2.4624 10.7020 +O 13.0030 2.0924 7.4949 +H 13.7754 0.9065 18.0495 +O 16.8232 4.4826 3.6673 +H 4.0486 6.0161 16.0547 +O 1.0223 0.6003 7.6289 +H 18.8700 10.5278 7.0476 +O 13.2717 3.1142 5.3455 +H 6.2684 5.3917 14.1981 +O 16.1259 14.1751 11.6778 +H 17.9215 18.9409 18.3107 +O 4.4378 9.3038 9.0441 +H 7.5503 14.9980 14.4145 +O 8.7269 19.9559 1.1273 +H 14.3558 9.3859 5.1386 +O 1.2779 15.0369 2.0159 +H 1.9809 0.2717 0.5140 +O 8.2084 9.4022 4.3789 +H 12.1136 7.4429 17.6747 +O 18.1173 3.1599 3.5205 +H 14.1148 7.7070 0.0936 +40 20.0 20.0 20.0 +frame 378 +O 9.3389 16.0882 12.0361 +H 8.4246 11.9972 4.7093 +O 3.8789 9.1879 3.6365 +H 5.9093 13.4517 4.4412 +O 3.9066 7.3446 16.7199 +H 1.0405 12.8239 6.7561 +O 18.1576 0.7821 19.5408 +H 18.1232 3.3992 9.9793 +O 19.2477 15.6940 0.9572 +H 14.5833 6.9352 12.2162 +O 1.3347 0.0129 0.8137 +H 0.8646 6.3973 4.8940 +O 7.4432 2.3135 11.2912 +H 1.3656 9.0993 5.1701 +O 8.6199 11.8229 4.5260 +H 11.5956 19.5732 6.9787 +O 5.7460 10.2838 1.7765 +H 6.6210 2.1395 7.4353 +O 5.8702 0.7447 17.7806 +H 7.4864 1.9189 10.7250 +O 12.8730 1.6682 7.3382 +H 14.0761 0.9602 18.2416 +O 16.7428 4.5482 4.2963 +H 4.1058 6.0994 15.6791 +O 1.0153 0.6999 7.3602 +H 18.5374 10.3923 7.1452 +O 13.0323 3.4100 5.3010 +H 6.0353 5.3307 14.1680 +O 16.6578 14.1365 11.2977 +H 17.8938 18.9224 17.4263 +O 4.4619 9.3378 8.6334 +H 7.1837 14.5597 14.7094 +O 9.3745 19.9894 1.2595 +H 14.3166 9.6699 4.4723 +O 1.5179 15.1161 2.0138 +H 2.0013 0.6886 0.5992 +O 8.1051 9.5059 4.5996 +H 12.3961 7.8365 17.4896 +O 17.7910 3.0181 3.1118 +H 14.2364 7.5126 19.7896 +40 20.0 20.0 20.0 +frame 379 +O 8.9866 16.4582 12.3631 +H 8.3191 12.2090 4.4689 +O 3.6419 9.1671 3.9781 +H 5.1334 13.1204 4.9193 +O 4.1727 7.9089 16.4912 +H 0.9226 13.0841 7.0207 +O 17.7249 0.3903 19.6765 +H 18.3309 3.8712 10.4332 +O 18.8057 15.6494 0.6607 +H 14.7012 7.2770 12.4759 +O 1.3423 19.6149 0.7257 +H 0.7175 6.2083 4.8874 +O 7.9790 2.7134 11.2729 +H 1.3843 9.6737 5.2773 +O 8.8124 11.9109 4.1899 +H 11.8614 19.5929 6.7601 +O 6.3359 10.2396 1.4835 +H 6.3283 2.0137 7.0864 +O 5.5809 0.7000 17.9324 +H 7.1677 1.5371 10.5270 +O 13.0591 1.6960 6.8762 +H 14.6696 1.0879 18.3406 +O 17.0999 4.5267 4.1107 +H 4.4084 6.2905 15.6105 +O 1.0014 0.5787 7.7622 +H 18.5391 10.4500 6.8410 +O 12.9288 3.7822 5.4440 +H 5.9798 5.3240 14.6230 +O 16.3182 14.3539 11.7633 +H 17.8155 18.9710 17.5307 +O 4.2115 9.0057 8.9667 +H 7.1626 14.7069 14.9268 +O 8.8550 19.8265 1.2550 +H 14.1716 9.3833 4.5052 +O 1.3321 15.1176 1.5283 +H 2.1096 0.5561 0.5958 +O 8.2282 9.2719 4.5764 +H 12.7884 7.7002 17.3097 +O 17.5903 2.7867 3.1442 +H 14.0865 7.6517 19.9035 +40 20.0 20.0 20.0 +frame 380 +O 9.3125 16.4828 12.2942 +H 8.1216 11.9594 4.3435 +O 3.6484 8.6034 3.8385 +H 4.7164 13.3077 5.0426 +O 4.3352 8.2421 16.1848 +H 0.8352 12.5750 7.0965 +O 17.9594 0.5624 19.5233 +H 18.3816 3.5544 10.8650 +O 18.6321 15.1587 0.7753 +H 14.6232 7.3521 12.7110 +O 0.9462 19.7442 0.2767 +H 0.7391 6.1498 4.7439 +O 7.7235 2.6449 10.6764 +H 0.7923 9.8722 4.9877 +O 8.9312 11.8036 4.2777 +H 11.6824 19.8047 7.3348 +O 6.0282 10.3541 0.9201 +H 6.4640 1.4254 6.9955 +O 5.7673 0.6516 18.1041 +H 7.1619 1.9742 10.1360 +O 12.9868 1.5901 6.8942 +H 14.9183 1.6133 17.9665 +O 17.0142 4.3500 4.3415 +H 4.5327 6.7123 15.3247 +O 0.4604 0.3512 7.2590 +H 18.8630 10.7337 6.6870 +O 13.1206 3.5965 5.4162 +H 5.8472 5.6564 14.4795 +O 15.9674 14.3351 11.2066 +H 17.8711 18.8703 17.6173 +O 4.5683 9.2055 9.3262 +H 7.1486 15.4337 15.2951 +O 8.8378 0.1934 2.0149 +H 13.9214 9.6607 4.2954 +O 1.8662 15.4453 1.1621 +H 2.3711 0.7796 0.0842 +O 8.0052 8.9105 4.8247 +H 13.0646 7.8300 17.1508 +O 17.1156 2.7370 2.8200 +H 14.0063 7.6625 19.6974 +40 20.0 20.0 20.0 +frame 381 +O 9.6888 16.3673 11.8554 +H 7.9472 12.0056 4.6433 +O 3.5355 8.9925 4.2784 +H 4.7548 13.2773 4.6067 +O 3.6396 8.3597 16.0231 +H 0.8590 12.4438 6.9330 +O 18.2943 0.7525 0.3382 +H 18.4232 3.2294 11.2813 +O 19.3152 15.3293 0.2725 +H 14.5190 7.4128 12.3766 +O 0.8083 19.6986 0.0268 +H 1.0833 6.0617 4.1455 +O 7.7783 2.3177 10.6735 +H 0.7832 9.6829 5.2123 +O 8.8223 11.8831 4.5798 +H 11.7734 19.5887 7.8300 +O 6.4267 10.0580 0.6024 +H 6.2556 1.0283 7.3366 +O 5.1908 0.0603 18.3442 +H 7.3998 1.6796 10.3904 +O 13.4128 2.3897 6.7020 +H 14.9605 1.7908 17.8579 +O 17.5075 4.3722 4.3281 +H 3.9436 6.4283 15.7477 +O 0.3311 0.6934 7.6795 +H 18.8006 10.1189 6.9488 +O 13.1928 3.8197 5.1262 +H 5.6790 5.5157 14.8758 +O 16.2010 13.6450 11.0833 +H 17.9946 19.3923 16.9969 +O 4.4118 9.0249 9.6087 +H 7.7681 14.8987 15.2082 +O 8.7060 19.9689 1.9487 +H 14.1043 9.4037 4.5973 +O 1.3868 15.4319 1.4758 +H 2.2082 0.6901 0.2229 +O 8.4118 8.9078 5.1031 +H 13.1374 7.8162 17.2440 +O 17.0640 2.1394 2.8668 +H 13.3959 7.3590 19.4878 +40 20.0 20.0 20.0 +frame 382 +O 10.0131 16.5874 11.8262 +H 8.1578 12.4208 4.1473 +O 3.5560 8.9309 4.3449 +H 4.9185 13.6155 4.4943 +O 2.8971 8.1783 16.1245 +H 1.3230 12.3752 6.9380 +O 18.5232 0.3049 0.6790 +H 18.6900 3.4851 11.2779 +O 19.4546 15.2457 19.9692 +H 15.0347 7.8252 11.7192 +O 0.5440 19.8553 19.8560 +H 0.9653 6.1339 4.5269 +O 7.7810 2.4946 10.5306 +H 0.4353 9.4846 5.4364 +O 9.1394 11.5657 4.9822 +H 11.6640 18.7117 7.9182 +O 6.3826 10.1202 0.7053 +H 6.7154 1.0027 7.5252 +O 5.6246 0.4570 18.7566 +H 6.8317 2.0674 10.3705 +O 12.7480 2.3557 6.6654 +H 15.1348 2.4456 17.4660 +O 17.2494 4.7035 4.3679 +H 3.5425 6.3497 15.8682 +O 0.9482 0.2917 7.8065 +H 18.4843 10.2103 6.8624 +O 12.6367 3.7029 4.8283 +H 5.5761 5.4732 15.0931 +O 16.2400 13.2401 11.4657 +H 18.0047 19.5015 16.9267 +O 5.1397 9.0577 9.5856 +H 7.9791 14.4383 14.9630 +O 8.8337 0.1255 1.9962 +H 14.1189 9.0812 5.0768 +O 1.7818 15.1555 1.4935 +H 2.2755 1.0447 0.3536 +O 8.5866 9.6084 4.5628 +H 12.9678 7.9314 16.9424 +O 17.1597 2.3379 3.0445 +H 13.8066 7.3003 19.2143 +40 20.0 20.0 20.0 +frame 383 +O 10.1016 16.4424 12.0453 +H 7.8935 12.6518 4.0451 +O 3.9446 9.4472 4.1023 +H 4.6030 13.1965 4.8100 +O 3.2031 8.0106 16.1286 +H 1.5751 12.1064 6.7947 +O 18.5104 0.4197 0.3556 +H 18.3329 3.4152 11.4057 +O 19.5666 14.8889 0.4046 +H 14.5603 7.9235 11.4617 +O 0.4676 0.0461 19.9330 +H 1.2037 5.7876 4.1943 +O 7.9372 2.3383 10.8034 +H 0.3952 10.0298 5.6453 +O 9.3084 11.6217 4.2991 +H 11.5666 18.9107 8.4111 +O 6.6700 10.0793 0.4930 +H 6.4181 0.5212 7.4693 +O 5.4830 0.0819 18.8717 +H 6.8083 2.1424 10.4919 +O 12.2295 2.6992 6.3977 +H 15.3138 2.7406 16.8239 +O 17.1978 5.5439 4.8859 +H 3.4588 6.4256 16.0767 +O 0.9460 19.9494 7.5861 +H 18.5209 10.6505 7.4413 +O 12.6307 4.0765 5.3705 +H 6.1207 5.8079 15.5434 +O 16.3165 13.1845 11.3959 +H 18.1154 19.4910 16.5222 +O 5.0464 9.1096 9.3978 +H 7.6339 15.0666 14.4125 +O 8.9253 19.9812 1.3085 +H 14.6478 8.8592 4.7887 +O 1.7396 15.3978 1.3709 +H 2.1399 0.8469 0.4047 +O 8.3351 9.4925 5.0498 +H 12.8010 8.0028 16.8656 +O 17.0375 2.1404 2.5965 +H 13.3804 7.2822 19.2918 +40 20.0 20.0 20.0 +frame 384 +O 10.4169 16.5356 11.7372 +H 7.9278 12.5769 4.2014 +O 4.0690 9.5459 4.3425 +H 4.3369 13.2966 4.8661 +O 3.8028 7.6260 16.4882 +H 1.5913 12.3953 7.3047 +O 18.9266 0.2395 0.2996 +H 18.3438 3.3207 11.7071 +O 19.4596 14.9766 0.1499 +H 15.1243 7.6878 11.1015 +O 0.6345 19.4747 0.1920 +H 0.8006 5.7648 3.9019 +O 8.2504 2.5882 11.5621 +H 19.9560 9.6958 5.5132 +O 9.3039 11.6254 4.2189 +H 11.5168 18.7080 8.7287 +O 7.0251 9.8415 0.8176 +H 6.2229 0.3444 7.4191 +O 5.6172 0.5864 18.7790 +H 6.8073 2.2299 10.8907 +O 12.9327 2.8246 6.4836 +H 14.9573 2.5065 16.7610 +O 16.9484 6.3582 5.1533 +H 3.6497 6.6975 15.9854 +O 1.2296 19.6652 7.4204 +H 18.8787 10.6948 7.4045 +O 12.4666 4.8654 5.1694 +H 6.0818 6.1551 15.6854 +O 16.4860 13.1743 11.2971 +H 17.4862 19.8566 16.5995 +O 4.8689 9.4111 9.3215 +H 7.5497 15.3893 14.6121 +O 9.0611 0.0598 1.3217 +H 14.9616 8.8924 5.2233 +O 1.6384 16.0014 1.0142 +H 2.5051 0.7215 0.5849 +O 7.8997 9.6141 5.1568 +H 12.9202 8.2779 17.1705 +O 17.6220 1.9455 2.3718 +H 13.7911 7.4528 19.8489 +40 20.0 20.0 20.0 +frame 385 +O 10.2774 16.0196 12.1062 +H 7.8492 12.3771 4.1935 +O 4.6225 9.9123 4.2874 +H 4.1729 13.5174 4.6158 +O 3.7126 7.1854 16.7105 +H 1.6007 12.8134 7.6261 +O 19.0052 0.5866 0.2864 +H 18.2736 3.1879 11.5275 +O 19.5064 14.8789 0.1484 +H 15.6055 7.8548 11.2585 +O 0.8296 19.3598 19.8393 +H 0.9417 5.3081 4.0337 +O 8.0013 3.1411 11.9037 +H 0.5916 9.3018 5.3812 +O 8.4916 11.4838 3.9698 +H 11.6899 18.4853 8.1614 +O 6.9839 9.8633 0.7408 +H 6.6118 0.0752 6.4583 +O 5.7484 0.0885 18.8549 +H 7.1095 2.3180 10.8329 +O 12.6457 2.9578 6.2877 +H 15.3687 2.5974 17.4048 +O 16.7524 6.2877 4.9216 +H 3.7711 6.7862 16.3338 +O 0.8307 19.0282 7.3995 +H 18.5543 10.7915 7.3245 +O 12.4613 4.9861 5.3886 +H 6.3684 6.2854 15.4890 +O 17.0508 13.1930 10.8142 +H 17.5248 19.1978 16.2915 +O 4.9478 9.5156 9.0001 +H 7.4414 15.4177 14.5834 +O 9.2137 0.1034 1.1624 +H 14.6373 9.3802 5.1034 +O 1.8315 15.4704 0.5170 +H 2.0239 1.2089 0.4020 +O 8.0619 9.7549 4.6657 +H 13.3118 8.5985 16.8431 +O 17.6031 2.2658 2.3532 +H 13.4027 7.5210 0.0803 +40 20.0 20.0 20.0 +frame 386 +O 10.3685 15.7936 11.9867 +H 7.5798 12.1735 4.0232 +O 4.7100 10.1710 4.3051 +H 4.2246 13.0890 4.6615 +O 4.0413 7.2707 16.3774 +H 1.5395 12.3301 7.9117 +O 19.3443 0.7983 0.2511 +H 18.2270 3.2148 11.5669 +O 19.3601 15.0363 0.0177 +H 15.7951 7.5929 11.5484 +O 0.9486 19.4065 19.7271 +H 0.7030 5.8989 4.3220 +O 7.8702 3.4018 12.1640 +H 1.4092 9.0215 5.1506 +O 9.0355 11.5059 4.2158 +H 12.1584 18.1966 8.0112 +O 6.9620 10.0118 0.5366 +H 6.9261 0.0208 7.1235 +O 5.8036 0.3431 19.2786 +H 6.7721 2.5356 10.9094 +O 12.8123 3.0723 5.9716 +H 15.6303 2.7958 17.1829 +O 16.9126 5.8304 5.5518 +H 3.9217 7.1254 15.9768 +O 1.1000 18.6603 7.3484 +H 19.0513 10.5737 7.0952 +O 12.5248 4.4547 5.3219 +H 5.7516 6.2161 15.3812 +O 17.0308 12.6751 10.7550 +H 16.9381 19.2077 16.3307 +O 5.3135 9.1458 9.1042 +H 7.5459 15.5380 14.0032 +O 9.0350 19.8383 1.1880 +H 15.0974 9.2816 5.0892 +O 1.4612 15.2544 0.3858 +H 2.5150 1.5859 0.8121 +O 8.2424 9.8367 4.1945 +H 13.2332 8.4598 16.6784 +O 17.9124 2.2366 2.5776 +H 13.1383 7.3880 0.0161 +40 20.0 20.0 20.0 +frame 387 +O 9.8921 15.9102 11.1463 +H 7.8844 12.2461 4.1608 +O 4.5149 9.9330 4.6119 +H 4.4275 13.1472 4.7853 +O 3.9729 7.5435 16.7083 +H 1.4046 12.8977 7.8143 +O 19.5990 1.0284 0.4739 +H 18.3305 2.8932 11.6717 +O 19.6254 15.1209 19.7850 +H 15.9241 7.5769 11.9657 +O 1.0613 19.1977 19.9022 +H 0.9463 6.3876 3.7068 +O 7.7060 3.1901 12.4745 +H 2.2310 9.3961 4.7473 +O 9.2118 11.5628 3.7874 +H 12.0714 17.4970 7.8529 +O 7.0689 10.2251 0.3748 +H 6.7540 0.4901 7.0326 +O 5.9858 19.9810 19.3364 +H 7.1443 2.7372 10.9556 +O 12.7724 2.8294 5.6223 +H 15.5898 2.5798 17.2267 +O 16.6898 5.8309 5.0231 +H 3.8612 7.7386 16.2922 +O 1.1128 18.4307 7.3222 +H 19.0108 10.4015 7.1105 +O 12.3573 4.5505 5.2333 +H 5.8217 5.4735 15.4500 +O 17.2387 12.4919 10.9420 +H 16.8920 19.4222 16.0818 +O 5.2565 9.2317 9.0196 +H 7.2693 15.4384 13.8955 +O 8.5391 19.9220 0.8804 +H 15.1633 9.2454 5.2543 +O 1.6333 14.6630 0.2877 +H 2.3177 1.6331 1.1520 +O 8.2726 10.2044 4.0953 +H 13.3039 8.9146 16.4110 +O 17.9701 2.2135 3.0586 +H 12.8832 7.5480 19.8112 +40 20.0 20.0 20.0 +frame 388 +O 9.9946 15.7905 10.9575 +H 7.8950 12.1563 4.0476 +O 3.7082 9.8708 4.3229 +H 4.7100 13.2586 5.5938 +O 3.6875 7.6776 17.0191 +H 1.5795 13.0318 7.9014 +O 19.2017 1.8529 0.8319 +H 18.5351 3.1423 11.7774 +O 0.2185 15.0556 0.1099 +H 15.8008 7.4771 12.0587 +O 1.3551 18.8235 0.1815 +H 0.7201 6.5782 3.4398 +O 7.8095 2.7008 12.3852 +H 2.5409 9.5444 4.8907 +O 9.2129 11.6007 4.0937 +H 12.0538 18.0988 7.6507 +O 6.8091 10.0762 0.9921 +H 7.2050 0.4353 7.0517 +O 6.1152 0.1229 19.4305 +H 7.1357 2.5772 11.0487 +O 12.1394 2.6130 5.2996 +H 15.3341 2.5131 17.8328 +O 16.1822 5.6334 4.7416 +H 3.4744 7.6711 16.2107 +O 1.2820 18.6966 7.1078 +H 18.2686 9.8442 6.9922 +O 12.5787 4.8808 5.6487 +H 5.8758 5.8349 15.7706 +O 17.2718 12.5554 11.3408 +H 16.8589 19.3135 16.3543 +O 4.9711 9.7562 9.3437 +H 6.8946 15.2858 13.9914 +O 8.4921 19.4039 1.5199 +H 15.1780 10.1008 5.4811 +O 1.8801 14.0416 0.2595 +H 2.5359 1.8235 1.4109 +O 8.1620 10.3102 4.4501 +H 13.2276 8.6056 16.3874 +O 17.8770 2.0486 3.6760 +H 13.0089 6.9643 19.4823 +40 20.0 20.0 20.0 +frame 389 +O 10.0114 16.1980 10.5303 +H 7.8137 11.9741 4.1204 +O 3.7044 10.1645 4.0418 +H 4.6841 13.3136 5.5786 +O 3.9663 7.2994 17.2947 +H 1.0981 12.7880 7.3551 +O 18.9100 1.5899 1.1031 +H 18.9607 3.6808 11.4934 +O 0.4219 15.6425 0.3839 +H 15.8988 7.5724 11.8986 +O 1.3292 18.0942 19.8950 +H 0.7887 6.3671 3.4206 +O 7.8539 2.6839 12.0610 +H 2.6379 8.9980 4.6648 +O 8.7626 12.1020 4.1488 +H 11.9858 17.9913 7.6397 +O 7.1811 10.1494 0.9707 +H 6.4434 0.7073 6.8737 +O 6.0879 0.0649 19.3067 +H 7.0228 2.4104 10.4551 +O 12.5783 2.8593 5.5394 +H 14.8672 2.4587 17.9254 +O 15.8914 5.6072 4.2664 +H 3.7196 7.5484 16.9617 +O 1.1504 18.6788 7.4539 +H 18.6165 9.7974 6.7603 +O 13.0752 4.7676 4.9936 +H 6.5442 5.7543 16.0985 +O 17.1795 12.1988 11.5050 +H 16.7341 19.0661 17.3161 +O 5.2073 10.1685 9.4707 +H 6.8834 16.0739 13.9752 +O 8.6255 19.7924 1.4774 +H 14.8520 10.0093 5.5315 +O 1.7002 13.8005 0.8031 +H 2.3892 2.1869 1.6384 +O 8.1233 10.4635 4.5255 +H 13.4344 8.0755 15.9203 +O 17.4224 1.6140 3.5911 +H 12.9912 6.7952 19.2003 +40 20.0 20.0 20.0 +frame 390 +O 10.1447 16.6111 10.1560 +H 7.6223 11.1864 4.2566 +O 3.5893 10.6709 4.2611 +H 4.2515 13.6177 5.4717 +O 3.9187 7.1640 17.3098 +H 1.2200 12.9344 7.6829 +O 19.0874 1.8260 1.6794 +H 19.0382 3.5448 12.2536 +O 19.9934 15.4736 0.7065 +H 15.4698 7.5007 11.7276 +O 1.4814 17.8828 19.7125 +H 1.2828 6.3163 3.0690 +O 7.7896 2.6518 12.2917 +H 2.8027 8.5051 4.2101 +O 8.6183 12.2461 4.0587 +H 12.0407 18.3409 7.4524 +O 7.2126 9.7434 0.7762 +H 6.2533 0.9486 6.6958 +O 6.4488 0.1733 19.2861 +H 6.3594 2.9970 10.7547 +O 12.8470 2.7840 5.4731 +H 14.9055 2.7953 17.8532 +O 15.5985 5.4387 4.0335 +H 3.7261 7.2812 16.9993 +O 1.2632 19.1513 7.2132 +H 18.1540 9.8993 7.0039 +O 12.8551 4.8000 5.0949 +H 6.5008 6.1409 16.1370 +O 17.4651 12.4200 11.2817 +H 16.4274 18.7008 17.6322 +O 5.0974 10.0935 9.6891 +H 6.7467 16.8224 14.6557 +O 8.6748 0.1325 1.1128 +H 15.1181 9.8652 5.8959 +O 2.2066 14.4699 0.3704 +H 2.5459 2.1319 1.6869 +O 7.6495 10.1382 4.5077 +H 13.1270 8.6466 15.5413 +O 17.8573 1.4178 3.1714 +H 12.9802 6.7698 19.2073 +40 20.0 20.0 20.0 +frame 391 +O 10.1819 16.3308 10.0600 +H 7.7406 11.5498 4.6888 +O 3.4042 10.6720 4.1933 +H 4.0628 13.6785 5.4489 +O 3.8168 7.6599 17.5678 +H 1.5000 12.8226 7.5716 +O 19.2421 1.5936 1.5069 +H 19.1646 3.2651 12.0167 +O 0.1665 15.4823 0.5732 +H 15.5996 7.5014 11.9941 +O 1.7768 18.0137 0.0419 +H 1.2978 5.9717 2.7389 +O 7.9302 2.9827 12.1849 +H 2.6598 8.6189 3.7201 +O 8.9923 11.5474 4.2357 +H 12.2415 18.4491 7.4476 +O 7.5626 9.5111 1.1310 +H 6.0895 1.0062 6.3252 +O 6.6357 0.2154 19.3733 +H 5.9821 3.0975 10.8296 +O 13.2037 2.9925 5.5926 +H 14.3770 3.0331 17.9535 +O 15.4344 5.8805 4.3045 +H 4.1028 7.5656 17.3928 +O 1.1812 19.2353 6.8653 +H 17.8754 10.4837 7.5200 +O 13.1111 4.3732 5.1126 +H 6.7205 5.5682 16.7777 +O 17.3057 12.3703 10.7309 +H 16.6715 19.3199 17.3673 +O 5.1890 9.8873 9.4510 +H 6.4260 16.6717 14.6690 +O 8.8317 0.4187 0.8333 +H 14.9146 10.1445 5.8954 +O 2.1814 14.6643 19.9595 +H 2.5082 2.1470 1.6116 +O 8.1067 10.1024 4.7800 +H 13.0388 8.8207 15.2145 +O 17.9451 1.3211 2.8772 +H 13.0028 7.0968 19.4711 +40 20.0 20.0 20.0 +frame 392 +O 10.1758 15.8364 10.1750 +H 7.3604 11.1931 4.9212 +O 3.4587 10.6940 4.7904 +H 3.8384 13.3660 5.5536 +O 4.0408 7.4786 17.2383 +H 1.4184 12.4750 7.3997 +O 18.9222 1.3810 1.6467 +H 19.1676 3.5413 12.4118 +O 19.8956 15.9628 0.9658 +H 15.6959 7.5200 12.1635 +O 1.6158 17.7238 19.8121 +H 1.2079 5.5729 2.8055 +O 8.0191 3.3436 12.2150 +H 2.1672 8.8676 3.4498 +O 9.2683 11.3726 4.3255 +H 12.1599 18.5240 7.7390 +O 7.3087 9.7780 1.0721 +H 6.1129 0.7065 6.1748 +O 6.8942 0.8437 18.6689 +H 6.0980 2.8018 10.6803 +O 13.1088 3.1122 5.7838 +H 14.0486 3.1707 18.1992 +O 15.3264 5.9348 4.8876 +H 4.1156 7.6160 17.8306 +O 1.4423 19.3154 6.5911 +H 17.5645 10.6600 7.9500 +O 13.4784 3.7894 4.7643 +H 6.4816 5.8871 16.6263 +O 17.4613 12.5431 11.1422 +H 16.0436 19.5192 17.3617 +O 5.1951 10.0254 9.7372 +H 6.0405 16.5761 15.0645 +O 8.4210 0.0368 1.3521 +H 15.1007 10.1246 5.9483 +O 1.9507 14.4398 0.1315 +H 2.4648 2.0515 1.9516 +O 7.9801 10.3195 5.4031 +H 12.8522 8.5119 15.0574 +O 17.6440 1.0111 2.8820 +H 12.8969 7.1408 19.8927 +40 20.0 20.0 20.0 +frame 393 +O 10.1400 15.8321 10.3660 +H 6.9889 11.1587 4.7423 +O 3.4314 10.2550 4.4669 +H 4.0692 13.8095 5.8369 +O 4.3142 7.5402 17.0189 +H 1.3577 12.4448 8.2284 +O 18.7273 1.3806 1.4947 +H 19.7251 3.7763 12.7779 +O 19.2225 15.8819 0.4363 +H 15.5017 7.7126 11.9121 +O 1.5095 17.7966 19.3683 +H 1.2015 5.2509 2.6061 +O 8.2001 3.2240 11.1261 +H 1.9265 9.3791 3.4772 +O 9.5839 11.4268 4.1584 +H 12.3473 18.5833 7.3392 +O 7.4475 9.6942 0.5057 +H 6.5742 0.8965 5.9355 +O 6.7757 1.1111 18.7808 +H 6.0434 3.0144 10.9400 +O 13.5049 2.9968 5.6422 +H 13.1693 2.8730 19.2302 +O 15.3196 5.9084 4.7233 +H 4.4258 7.3548 17.8476 +O 1.5786 19.4955 6.5206 +H 17.9140 10.7259 8.3824 +O 12.9064 4.2087 5.2100 +H 6.3059 5.1627 16.7293 +O 18.2777 12.3005 10.8812 +H 16.0427 19.4563 17.3070 +O 5.4024 10.3438 9.6573 +H 5.7092 16.5740 15.0827 +O 8.8416 19.9461 1.5248 +H 15.1262 10.3631 6.2273 +O 2.2954 14.4324 0.4372 +H 3.1134 2.2719 1.7085 +O 7.7867 10.2701 5.1313 +H 12.8388 8.4881 14.8707 +O 17.9509 0.7646 3.1738 +H 12.5469 7.1507 0.0129 +40 20.0 20.0 20.0 +frame 394 +O 10.2475 16.0014 10.0986 +H 7.0451 11.0477 4.7660 +O 3.3729 10.1268 4.1540 +H 4.2301 14.1835 5.3464 +O 4.6287 7.2063 17.1405 +H 1.4295 13.2211 8.1395 +O 19.1189 1.5994 0.8278 +H 19.4677 3.6541 12.8268 +O 18.7268 15.8973 19.6663 +H 15.4580 7.2461 12.0544 +O 1.2868 17.9982 18.5430 +H 1.4502 4.8887 2.3884 +O 8.3001 3.5313 11.2292 +H 1.9191 9.2890 3.3798 +O 9.6695 11.5986 4.0319 +H 12.3731 18.4525 7.4760 +O 7.5208 9.4623 0.6926 +H 6.8075 1.2967 5.7299 +O 6.8980 0.9739 18.9107 +H 6.1500 3.2290 10.4340 +O 13.3242 3.0636 5.3718 +H 13.0229 2.9953 18.9828 +O 15.5509 5.4068 4.5854 +H 4.2748 7.6412 17.8114 +O 1.7314 19.0620 6.5985 +H 17.7127 10.4936 8.1842 +O 12.8033 3.9621 5.0482 +H 6.6745 5.0236 16.7152 +O 18.4700 12.2121 10.5308 +H 15.8554 19.7200 17.1336 +O 4.7514 9.9817 9.6926 +H 5.5698 16.6202 15.0844 +O 8.5750 19.5767 1.3591 +H 15.2622 10.7315 6.5069 +O 2.2477 14.3933 0.5723 +H 3.6122 2.0562 2.4348 +O 7.8941 10.5067 5.4512 +H 12.3377 8.4299 14.4741 +O 18.1287 0.6662 3.3938 +H 12.3668 7.2985 19.7054 +40 20.0 20.0 20.0 +frame 395 +O 10.0390 16.3406 10.4882 +H 7.0321 10.8736 4.5271 +O 3.5502 9.9732 4.5281 +H 4.0705 14.3931 5.8726 +O 4.3867 7.0497 17.1359 +H 1.7439 13.1099 8.2626 +O 19.1209 1.9312 0.2761 +H 19.6959 3.8143 12.9887 +O 18.7343 15.7276 19.6094 +H 15.2513 7.3674 11.8741 +O 1.0936 18.2563 18.5448 +H 1.4814 5.0616 2.2205 +O 8.3833 3.8973 11.1504 +H 1.7866 8.8786 3.3060 +O 9.4217 11.3698 3.7506 +H 12.9209 18.4487 7.5333 +O 7.7254 10.2087 0.8314 +H 7.2634 1.3895 6.2144 +O 6.8461 1.2389 19.0736 +H 5.9791 3.3475 10.3725 +O 13.4702 3.6196 5.7978 +H 13.0973 3.0905 19.3674 +O 14.9844 5.1652 4.8987 +H 3.9815 7.8171 17.9436 +O 1.9870 19.0214 6.9857 +H 18.1908 10.3285 8.5352 +O 12.8123 4.5881 4.7657 +H 6.0199 5.0736 17.1863 +O 17.9269 12.0174 10.1871 +H 15.6915 19.5187 16.9390 +O 4.9902 9.6722 9.8843 +H 5.5362 16.6349 14.9418 +O 9.1295 19.6217 1.6926 +H 15.5541 11.2140 6.2113 +O 2.0234 14.1510 0.5664 +H 3.0363 2.5640 2.1889 +O 7.8021 10.7661 5.4394 +H 12.0715 8.3054 14.7055 +O 18.0049 0.6878 3.2566 +H 12.0437 7.1654 19.6242 +40 20.0 20.0 20.0 +frame 396 +O 9.7619 16.5389 10.5586 +H 7.4785 10.4886 4.1388 +O 3.6967 9.9803 4.2141 +H 3.9707 14.5543 5.8878 +O 4.2576 7.3574 17.1373 +H 2.4294 12.9995 8.2049 +O 19.1920 1.0798 19.8757 +H 0.0344 4.3402 12.8793 +O 18.9276 15.8209 18.9110 +H 15.5371 7.3061 11.4111 +O 1.1022 18.6709 18.8767 +H 1.2858 4.5328 2.2080 +O 8.4927 4.0971 10.5573 +H 1.5588 8.7647 3.8545 +O 9.5671 11.3662 3.4174 +H 13.1630 18.6392 7.5712 +O 7.8987 10.6918 0.6163 +H 7.0700 1.8781 6.1795 +O 7.0512 0.2689 18.9093 +H 5.8040 3.6614 10.3963 +O 13.7853 3.3807 5.7055 +H 12.8850 2.8517 19.1893 +O 15.2918 4.6092 4.7811 +H 3.8519 8.1701 18.0355 +O 1.7628 19.1022 6.9308 +H 18.2639 10.2991 8.2117 +O 12.7070 4.8078 5.0533 +H 5.4927 5.1766 16.9475 +O 17.9395 11.9791 10.0052 +H 16.0405 18.7531 17.1359 +O 5.1322 9.3026 9.8284 +H 5.1462 16.5197 14.6759 +O 8.8682 19.3571 1.9923 +H 15.6300 11.0362 6.0398 +O 2.0965 14.2165 0.3231 +H 3.0151 2.7659 2.3555 +O 7.6067 10.9513 5.5032 +H 12.4007 8.6028 14.7030 +O 17.9412 0.9427 3.4553 +H 12.4354 7.3225 0.0737 +40 20.0 20.0 20.0 +frame 397 +O 9.4951 16.9760 10.6911 +H 7.8949 10.4385 3.8343 +O 3.6768 10.2274 4.6958 +H 4.0198 14.2008 6.2956 +O 4.6177 6.6643 17.4285 +H 2.1921 13.2864 8.3219 +O 19.9257 1.0488 19.9816 +H 19.8602 4.0962 12.1008 +O 18.4620 15.8772 18.8250 +H 15.5166 7.6889 11.7234 +O 0.8968 18.7845 18.5939 +H 1.4862 4.7347 2.2990 +O 8.3569 4.3225 10.6072 +H 1.3942 8.9325 3.8906 +O 9.9375 11.6805 3.4673 +H 13.2646 18.6007 7.2086 +O 7.9372 11.0535 0.3426 +H 7.3155 1.6391 6.4647 +O 7.0305 0.0909 18.5340 +H 5.8160 4.0764 10.7124 +O 14.0858 3.2115 5.5333 +H 12.6163 3.3766 19.8961 +O 15.1830 4.5798 4.7685 +H 3.8308 8.3603 17.7736 +O 1.7947 18.9395 7.0875 +H 18.2091 10.2750 8.1621 +O 12.6138 5.4916 5.1107 +H 5.1065 4.8637 16.4333 +O 17.6372 12.0779 9.8206 +H 16.0593 18.7873 16.9319 +O 4.7353 9.2674 9.8541 +H 5.3429 16.3956 14.5277 +O 8.5380 19.5247 2.2029 +H 15.6364 10.9887 6.7400 +O 2.1247 14.3405 0.2324 +H 2.6551 2.4079 2.8438 +O 7.8173 10.8837 5.6763 +H 12.1311 8.9892 14.6796 +O 17.5674 0.9055 3.6326 +H 12.5260 6.8095 19.7607 +40 20.0 20.0 20.0 +frame 398 +O 9.4620 17.0844 10.7767 +H 7.5865 10.4185 3.4945 +O 3.3890 10.8128 4.4813 +H 3.7667 14.1012 6.4952 +O 4.2157 6.5494 17.0336 +H 1.7287 13.4028 8.9596 +O 0.2372 1.2399 19.5219 +H 19.3718 3.9140 11.9697 +O 18.8155 15.4367 18.8363 +H 16.1547 7.4909 11.7297 +O 1.1113 18.5646 18.5781 +H 1.4343 4.8621 2.4304 +O 8.2209 4.0565 10.9298 +H 1.1567 8.6832 3.6363 +O 9.6950 11.5686 3.7561 +H 13.2853 18.3500 7.7215 +O 7.6400 11.1510 0.1721 +H 7.1112 1.5862 6.5145 +O 7.1785 19.5563 18.5110 +H 5.9491 3.8578 10.6732 +O 14.0380 3.4931 5.4985 +H 12.4632 3.0336 19.4950 +O 14.8931 4.7294 5.1501 +H 4.0855 8.0099 18.1243 +O 1.4842 18.7571 6.7331 +H 18.0339 10.1782 8.0493 +O 12.4925 5.3554 4.8726 +H 5.1644 4.7110 16.3717 +O 17.4065 12.3706 10.0469 +H 16.1049 19.0527 17.5985 +O 5.4470 9.0325 9.6922 +H 5.3558 16.6556 14.2544 +O 8.3098 19.8481 2.1897 +H 15.8530 10.6162 6.9926 +O 1.8649 14.6621 0.1791 +H 2.6096 1.8367 2.8040 +O 8.0662 10.8830 6.1990 +H 12.7066 9.0597 14.7124 +O 17.2726 0.9469 3.5232 +H 12.2461 7.1893 0.0493 +40 20.0 20.0 20.0 +frame 399 +O 9.4189 17.1974 11.1426 +H 7.6204 10.0907 3.8126 +O 2.9005 11.0131 3.9203 +H 4.1597 14.6605 6.6936 +O 3.9611 6.6143 17.2369 +H 2.3801 13.1840 8.7897 +O 0.1861 1.0602 19.0543 +H 18.8767 4.0205 12.0077 +O 18.5377 14.9542 19.1165 +H 15.8522 7.5472 11.8245 +O 1.1583 18.1203 18.3074 +H 1.4112 5.5639 2.5460 +O 7.9483 3.4723 10.9500 +H 1.2280 8.4014 3.3901 +O 9.3910 11.4432 4.0031 +H 13.8121 17.9210 7.7674 +O 7.6494 11.1469 19.9002 +H 7.3585 1.9980 5.9864 +O 7.1046 19.6450 19.2129 +H 5.8039 3.9607 10.4219 +O 14.3947 3.6506 5.9082 +H 12.1525 3.1375 19.4033 +O 15.0335 4.8205 5.5485 +H 3.4305 7.7860 17.8544 +O 1.8438 18.6721 6.7610 +H 18.0269 10.5495 8.2942 +O 12.3768 5.7250 4.2648 +H 4.9815 4.8804 16.5904 +O 17.7784 12.5824 9.6814 +H 16.4243 19.4362 17.7332 +O 4.9379 9.3412 9.5548 +H 4.7802 16.7196 13.5769 +O 8.4621 19.8360 2.4369 +H 15.8960 10.6249 7.5098 +O 1.9220 14.5737 0.1477 +H 2.2480 2.1747 2.0200 +O 7.9306 11.4484 6.2168 +H 12.8575 9.5816 14.8135 +O 17.1563 0.6928 3.0443 +H 12.2762 7.3290 19.9125 +40 20.0 20.0 20.0 +frame 400 +O 9.0898 17.0033 11.0969 +H 7.7386 10.0494 3.9964 +O 2.7725 10.9693 4.0765 +H 3.9296 14.9578 6.9472 +O 3.6583 6.9862 17.0125 +H 2.2306 13.7123 8.8850 +O 0.5899 0.7089 19.1181 +H 19.0732 3.8289 11.8207 +O 19.0454 14.8067 19.7436 +H 15.9307 7.6170 11.7396 +O 1.1601 18.5122 18.1388 +H 1.6051 5.6020 2.7039 +O 7.8953 2.9325 10.9427 +H 0.7703 9.2196 3.4626 +O 9.2973 11.1100 3.4764 +H 13.3798 17.9714 7.2064 +O 7.6517 11.1283 0.0335 +H 7.7351 1.9142 6.4284 +O 7.0547 19.2265 19.6942 +H 5.9709 3.7956 10.8317 +O 14.2083 4.1253 5.9211 +H 12.2477 3.0830 18.7202 +O 14.6792 5.1042 5.5300 +H 3.2513 7.6242 17.3661 +O 1.5054 18.9388 6.7314 +H 18.1030 11.1508 8.4087 +O 12.4523 5.2855 3.8905 +H 4.8694 5.4412 16.1193 +O 17.7717 12.5971 9.7156 +H 16.5346 19.1692 18.3979 +O 5.1008 9.2937 9.6922 +H 4.3656 16.5375 13.4065 +O 8.5222 19.3595 2.2561 +H 16.1211 10.8160 7.3218 +O 1.7497 14.6580 0.1271 +H 1.8408 1.8389 1.9297 +O 7.9391 11.6566 6.0939 +H 12.9484 9.5541 14.6615 +O 16.7895 0.9555 3.1203 +H 12.2468 7.5992 0.2017 +40 20.0 20.0 20.0 +frame 401 +O 8.8041 17.1477 11.1696 +H 7.5732 10.3617 3.5237 +O 2.8735 10.6779 3.8375 +H 3.8742 14.8319 6.9100 +O 4.1503 6.8091 17.1630 +H 2.3488 13.1420 8.6391 +O 0.4337 0.8911 19.0525 +H 18.9260 4.0939 11.6673 +O 19.3791 14.6743 19.9923 +H 15.6294 7.4979 12.1379 +O 1.0760 18.5299 18.3783 +H 1.6089 6.0494 2.2990 +O 8.0822 2.7529 11.3262 +H 1.0915 9.2614 3.6639 +O 9.0260 11.1347 3.4555 +H 13.6425 18.3564 7.2563 +O 7.7497 11.0116 19.9876 +H 7.6695 2.0819 6.9017 +O 6.6715 19.5352 19.3502 +H 6.0533 3.1592 10.7404 +O 14.0054 3.8951 5.8402 +H 12.6249 3.1797 18.6502 +O 13.9954 5.6641 5.5040 +H 3.3644 7.4639 17.6822 +O 1.7415 18.7492 6.3114 +H 18.3252 10.9410 8.4405 +O 12.5267 5.0792 3.7706 +H 4.6317 4.8001 16.4248 +O 17.4844 12.6334 9.5241 +H 15.9583 19.3599 18.3620 +O 5.2631 9.1990 9.6885 +H 4.5701 16.8976 13.4950 +O 9.1570 19.0203 2.1794 +H 16.4041 11.0167 7.2515 +O 1.7347 14.6719 19.9701 +H 1.3883 2.3765 0.9669 +O 7.8720 11.8115 6.1103 +H 12.9832 9.1065 14.6946 +O 16.1996 1.6190 3.2354 +H 11.9414 7.5957 0.1621 +40 20.0 20.0 20.0 +frame 402 +O 9.1355 17.6165 10.9800 +H 8.0136 9.7246 3.2947 +O 3.3216 10.4059 3.9883 +H 3.8077 14.3014 7.0919 +O 4.5329 6.7982 17.5324 +H 2.7007 13.1411 8.7105 +O 0.0741 0.8476 18.5973 +H 19.1116 4.4145 11.6992 +O 19.8490 14.5595 19.8995 +H 16.1478 7.4726 12.2378 +O 1.1491 18.2366 18.4516 +H 1.4661 6.4922 2.0521 +O 8.0603 2.7882 10.9744 +H 0.8400 9.6076 3.2879 +O 9.1038 11.1534 3.3646 +H 13.4326 18.7877 7.2316 +O 7.7348 10.8865 19.8547 +H 7.9695 2.2176 7.4188 +O 6.5483 19.4569 18.9022 +H 5.6675 3.2010 11.3080 +O 13.8343 3.8852 6.3791 +H 12.6885 3.5861 18.4690 +O 14.2631 5.7850 5.3970 +H 3.3465 7.8030 17.6039 +O 1.5469 19.4566 6.3826 +H 18.0014 10.7831 8.2191 +O 11.9850 5.0494 3.7991 +H 4.2548 4.4186 16.2022 +O 17.3275 12.3305 9.3895 +H 15.7872 19.5682 17.9616 +O 5.4171 8.8548 10.1087 +H 4.3889 16.5418 13.2790 +O 9.2108 19.1140 2.2734 +H 16.2752 10.8401 7.6732 +O 1.8942 14.2874 0.0775 +H 1.6769 2.4387 0.8119 +O 7.4224 11.2743 6.0789 +H 13.0375 9.0322 15.2187 +O 15.7626 1.6186 2.8657 +H 12.1912 8.0755 19.6428 +40 20.0 20.0 20.0 +frame 403 +O 9.1392 17.8274 11.1583 +H 8.3511 10.0098 3.0452 +O 3.2533 10.1782 3.3079 +H 3.9391 14.5055 7.2589 +O 4.7875 6.3381 17.0569 +H 3.1063 13.1789 8.9196 +O 0.6324 0.9404 18.3940 +H 19.3747 4.6479 12.5466 +O 19.9872 14.4022 0.1452 +H 16.4995 7.6991 12.1402 +O 1.2194 18.9605 17.9966 +H 1.4989 6.1114 1.4652 +O 8.4778 2.4240 11.2502 +H 0.7163 9.7049 3.1665 +O 9.5025 11.1587 3.5593 +H 13.5239 18.4767 6.7533 +O 7.3707 10.4667 19.9116 +H 7.8478 2.0171 7.0483 +O 6.9115 19.2047 19.2403 +H 5.6016 3.1412 10.6104 +O 14.0751 3.8927 6.7559 +H 12.5089 4.2092 17.8809 +O 14.2979 5.5921 5.0105 +H 3.6200 7.8286 17.2888 +O 1.4314 19.4196 6.6137 +H 17.8437 10.8886 7.8176 +O 12.3366 5.4896 3.3472 +H 4.4550 3.9138 16.3438 +O 17.4059 12.7691 9.2166 +H 15.8025 19.5966 17.3884 +O 5.4853 8.8395 9.6462 +H 4.6784 16.3109 13.0529 +O 9.4515 19.1621 2.5451 +H 15.9692 10.6303 7.4408 +O 2.0449 14.2133 0.2549 +H 1.4682 2.1989 0.8004 +O 7.2244 11.0685 6.2612 +H 13.0706 9.2391 14.9726 +O 15.8389 1.1510 3.1186 +H 11.8391 8.0154 19.6806 +40 20.0 20.0 20.0 +frame 404 +O 9.5437 17.9379 11.2774 +H 8.3053 9.7665 3.5878 +O 3.6007 9.9972 4.0016 +H 4.0774 14.5239 6.9962 +O 4.8223 5.5658 16.9902 +H 3.2104 13.1591 8.3091 +O 0.5307 1.2717 18.6769 +H 19.5708 4.7419 12.4474 +O 19.9360 15.2000 0.2053 +H 16.1997 7.4144 12.1010 +O 1.6217 19.1794 17.7458 +H 1.5223 5.7728 1.1450 +O 8.5111 2.0353 11.3322 +H 1.2136 9.6367 3.0350 +O 9.5168 10.7685 3.8348 +H 13.6316 18.4556 6.3161 +O 7.8298 10.1315 0.4097 +H 7.7427 1.9806 7.1495 +O 6.9239 19.4635 18.9294 +H 5.6114 3.3767 11.1007 +O 14.3428 3.9276 6.1928 +H 12.8769 4.5318 17.7376 +O 14.7784 5.5861 5.2943 +H 3.8604 7.2187 16.6769 +O 1.3727 19.9750 6.6157 +H 17.8593 10.7479 8.0253 +O 12.7963 5.7753 3.4270 +H 4.1202 4.0141 16.4273 +O 17.7560 12.4215 9.6197 +H 15.9753 19.7980 16.9867 +O 5.8207 8.7479 9.4008 +H 4.4733 16.4626 13.1972 +O 9.5482 18.8227 2.7781 +H 16.0057 10.5611 7.4281 +O 1.6943 13.7384 0.5628 +H 1.3025 2.3806 0.7954 +O 7.3376 11.8531 6.5920 +H 13.4897 9.0520 14.8018 +O 15.7815 0.8673 3.1967 +H 12.1415 8.1303 0.2429 +40 20.0 20.0 20.0 +frame 405 +O 9.6801 17.8634 11.5820 +H 8.5970 9.8393 3.5998 +O 3.4329 9.9755 3.4501 +H 3.5566 14.6864 7.3745 +O 4.5545 5.3589 16.9944 +H 3.1124 12.7094 8.4528 +O 0.1369 0.8505 18.9532 +H 19.1895 5.0237 12.5305 +O 19.5777 15.5188 19.9682 +H 16.3737 7.2840 12.1538 +O 1.7090 19.1172 17.7475 +H 1.6585 5.3890 1.1048 +O 8.6696 2.2313 10.3973 +H 1.6030 9.2624 2.8936 +O 9.5352 10.6610 3.6538 +H 13.5948 18.5317 6.6979 +O 8.0073 9.8547 0.2450 +H 7.6233 1.7335 7.0444 +O 7.1088 18.9654 19.0185 +H 5.9628 3.4347 10.9809 +O 15.0769 3.8850 5.9992 +H 13.0799 4.4434 17.5618 +O 15.1173 5.3001 5.0610 +H 3.8871 7.3711 16.4264 +O 1.6070 0.2049 6.5561 +H 18.0879 10.3540 8.1148 +O 12.1612 5.5637 3.3852 +H 4.0991 3.7423 15.9442 +O 17.9271 11.9436 9.4168 +H 15.7287 0.3011 17.4029 +O 5.6758 8.9879 9.7781 +H 4.5800 16.3543 13.0201 +O 9.7093 18.5556 3.1723 +H 15.8348 10.3270 7.4770 +O 1.5527 14.1432 0.6540 +H 1.2264 2.8027 0.9730 +O 7.4294 12.3197 6.6736 +H 13.6907 8.9478 14.5070 +O 15.9009 0.8139 3.5710 +H 12.5191 7.5937 0.1555 +40 20.0 20.0 20.0 +frame 406 +O 10.1213 17.9604 11.8467 +H 8.2178 9.8849 3.8762 +O 3.2746 10.0290 3.2982 +H 3.3883 14.5426 7.4241 +O 4.8716 5.4968 17.1671 +H 3.1110 12.8597 8.7441 +O 19.7409 0.4259 19.0206 +H 19.0740 5.2318 12.4333 +O 0.4394 15.6166 0.3553 +H 16.7503 7.5440 11.7453 +O 1.6868 19.1100 17.6955 +H 1.7748 4.8894 1.1933 +O 8.6672 2.1030 10.3391 +H 1.9493 9.2619 2.8323 +O 9.5300 10.6660 3.5823 +H 13.5865 18.1712 6.2745 +O 8.4368 9.9731 19.5386 +H 6.9192 1.4752 6.7861 +O 6.6779 19.0827 18.5731 +H 6.7891 3.6486 11.0927 +O 15.1254 3.9046 5.9089 +H 13.4127 4.6084 17.6965 +O 14.7176 4.8339 5.3436 +H 4.0289 7.2552 15.9103 +O 1.3444 0.8858 6.0510 +H 17.7087 10.4533 7.8129 +O 12.5207 5.5512 2.9767 +H 4.1140 4.0563 15.8567 +O 17.7141 11.5089 9.6259 +H 15.9218 0.0706 17.4914 +O 6.1410 8.6951 9.7644 +H 4.2237 16.2466 13.5214 +O 9.6369 18.7304 3.2302 +H 15.2894 10.4617 7.1697 +O 1.5369 14.3624 0.4363 +H 0.7365 2.3064 0.3306 +O 7.6316 12.0459 6.7333 +H 13.4883 8.5082 14.1888 +O 16.1167 1.1281 3.5969 +H 12.3529 7.7681 0.2987 +40 20.0 20.0 20.0 +frame 407 +O 10.1568 17.8940 11.7285 +H 8.1396 10.0675 3.7089 +O 3.5208 10.0402 3.4546 +H 3.7406 14.5903 7.4649 +O 5.3659 5.5554 17.0372 +H 3.3117 13.2257 8.5420 +O 19.5562 0.2550 18.9098 +H 19.4186 4.8806 12.6566 +O 0.7984 15.8711 0.1649 +H 17.3418 7.9549 11.9951 +O 1.5955 19.4424 17.8859 +H 1.6225 4.0426 1.2899 +O 8.2865 2.3178 10.4262 +H 1.8303 9.0251 3.1129 +O 9.8876 11.0036 3.4926 +H 13.6167 17.6293 5.7527 +O 8.1355 9.9666 19.2946 +H 6.9824 1.4363 6.7649 +O 7.0534 19.4898 18.7031 +H 7.0131 3.4945 10.6398 +O 15.5516 3.9019 5.7438 +H 13.4447 4.0939 17.0503 +O 14.8161 5.2254 4.9978 +H 4.5403 7.8477 15.7440 +O 0.6780 1.0409 5.7811 +H 17.5847 10.8977 7.7833 +O 12.4520 5.0967 3.1000 +H 3.9770 3.9166 16.5051 +O 17.5126 11.4360 9.7502 +H 15.7966 0.0516 17.2584 +O 5.8798 8.4082 9.6396 +H 3.7331 16.6467 13.2015 +O 9.7137 18.4118 3.7984 +H 15.1802 10.5859 6.6711 +O 1.5873 14.3337 0.3865 +H 0.8490 2.5059 0.5927 +O 7.7343 12.2958 7.2774 +H 13.3452 8.4969 14.1233 +O 15.7327 1.3693 3.7721 +H 12.4827 7.7240 0.1434 +40 20.0 20.0 20.0 +frame 408 +O 10.7199 18.0507 11.7365 +H 7.7892 9.8537 3.5548 +O 3.1389 10.0479 3.5036 +H 3.5548 14.5809 7.5496 +O 5.6437 5.3013 17.5809 +H 3.2951 13.5077 8.7759 +O 19.0683 0.9529 18.5609 +H 19.4895 4.7071 12.6222 +O 1.0181 16.0532 0.4998 +H 17.2125 7.6180 12.3402 +O 1.7429 19.6274 17.2462 +H 1.2582 3.6998 0.9985 +O 8.5294 2.2682 10.2121 +H 1.7366 8.9238 3.0607 +O 10.1940 11.0481 3.8636 +H 13.3850 17.8236 5.5900 +O 7.8305 9.7334 19.2380 +H 7.2094 1.2967 6.5333 +O 6.3060 19.2935 18.4127 +H 6.7852 3.2317 10.7296 +O 15.6963 3.5014 5.7778 +H 13.3605 4.4460 16.6418 +O 14.6197 4.5766 4.9127 +H 4.0724 7.5744 16.1077 +O 19.9659 0.4505 5.9457 +H 17.1911 11.0095 7.7061 +O 12.6728 4.9710 3.1082 +H 3.9772 3.8610 16.6021 +O 16.8741 11.3818 9.5480 +H 15.1771 19.6976 17.0069 +O 6.1107 8.3808 9.4109 +H 3.9872 17.0900 13.2866 +O 9.6723 18.8352 4.0682 +H 15.1346 10.6433 6.3937 +O 1.9830 14.5030 0.0927 +H 1.0067 2.3619 0.6489 +O 8.0254 12.4200 7.0160 +H 13.0510 8.4022 14.2587 +O 15.6779 1.4525 4.2891 +H 12.7234 7.6102 0.0202 +40 20.0 20.0 20.0 +frame 409 +O 10.3178 18.4097 11.7921 +H 8.0430 9.9299 3.2072 +O 2.6790 9.8714 3.3628 +H 3.2727 14.2429 6.7845 +O 5.6929 5.8569 17.6168 +H 3.4912 13.8562 8.3841 +O 18.9401 0.6827 18.8985 +H 19.6922 4.3598 12.5050 +O 1.0726 15.6118 19.9380 +H 16.7984 7.3766 11.9816 +O 2.2210 19.5484 16.7422 +H 1.3879 4.0687 1.0303 +O 8.5767 1.9022 10.1273 +H 2.1293 9.8000 3.5839 +O 10.1741 10.8661 3.9421 +H 13.3553 17.3578 5.8685 +O 7.6861 9.4761 18.9166 +H 6.9324 0.9343 6.2973 +O 6.3562 19.2005 18.3414 +H 6.9003 2.9174 11.0045 +O 15.7767 3.5845 5.8041 +H 13.3781 5.1851 16.8751 +O 14.7042 4.5172 5.2959 +H 4.3492 7.5641 15.9138 +O 0.0942 0.1366 6.5366 +H 16.6345 10.8013 7.7381 +O 12.9400 5.4493 3.1833 +H 3.9377 4.1360 16.7405 +O 16.8613 10.9943 9.6684 +H 15.1011 19.9848 17.5250 +O 6.2911 8.7668 9.6227 +H 4.0805 17.8913 13.3270 +O 9.8434 19.3185 3.9762 +H 14.6300 10.7521 6.1489 +O 1.7797 14.2193 19.8121 +H 1.0409 2.6564 0.6252 +O 7.9696 12.3756 7.2389 +H 12.9447 8.2011 14.4169 +O 15.5003 1.3173 3.7773 +H 12.4543 7.4789 0.1639 +40 20.0 20.0 20.0 +frame 410 +O 10.5994 18.2241 12.2032 +H 7.6391 10.4123 3.4738 +O 2.4783 9.6744 3.2265 +H 3.4227 13.6495 7.3159 +O 6.4174 5.8851 17.9667 +H 3.3161 13.9642 8.8147 +O 19.2628 0.6283 18.9135 +H 19.6893 4.5198 12.5837 +O 1.3882 15.6458 19.4825 +H 17.3103 7.3520 11.8351 +O 1.9636 19.6183 16.1429 +H 1.3688 4.2989 1.5520 +O 8.2850 1.7906 10.4741 +H 2.2617 10.1320 3.6927 +O 10.0893 11.1249 3.9765 +H 13.2543 17.0155 5.9661 +O 7.4322 9.6679 18.5372 +H 7.1699 0.5766 6.6143 +O 6.0503 19.5342 18.7451 +H 6.5945 2.7846 11.2981 +O 15.2527 3.5070 6.1262 +H 13.6476 5.5974 16.6764 +O 15.0901 3.6921 4.8950 +H 4.6304 7.9101 15.6076 +O 0.1377 0.3425 6.7629 +H 16.9849 11.3772 7.9422 +O 13.0274 5.2018 3.2633 +H 3.9008 3.9023 16.6796 +O 17.5223 10.8431 9.5663 +H 15.3178 0.1800 17.3764 +O 6.2464 8.3785 9.9760 +H 3.7476 18.2683 13.3636 +O 9.9247 19.1401 4.0468 +H 14.1963 11.0968 5.6750 +O 1.7744 14.0655 0.2984 +H 1.0457 2.4092 0.9821 +O 8.1759 12.2698 6.8714 +H 12.9579 8.1302 14.3183 +O 15.6057 0.7373 3.8579 +H 12.3881 7.5613 19.8086 +40 20.0 20.0 20.0 +frame 411 +O 10.8891 18.2615 12.0147 +H 7.8307 9.9424 3.2616 +O 2.1102 9.3246 2.9029 +H 3.2465 13.3670 7.4271 +O 6.4911 5.9607 17.8565 +H 2.9029 14.0416 8.7886 +O 19.7871 0.6138 18.9755 +H 19.2877 4.5941 12.4296 +O 1.4386 15.5490 19.6200 +H 16.6804 7.5370 11.2298 +O 1.7475 19.4993 15.8927 +H 0.9412 4.5710 1.6977 +O 7.5516 1.4416 10.3034 +H 1.8860 10.0024 3.8514 +O 9.7972 11.2085 4.0278 +H 12.9632 16.8303 5.9148 +O 7.1789 9.4863 18.6932 +H 7.2344 0.9537 7.1626 +O 5.9803 18.9901 18.8593 +H 6.6618 2.5083 11.5122 +O 15.4575 3.4374 5.4963 +H 13.7375 5.1164 16.4175 +O 15.4086 3.2767 4.8452 +H 4.8414 7.4535 15.5873 +O 19.7967 0.7758 6.8542 +H 17.3137 11.1591 8.2840 +O 13.0003 5.5790 3.4992 +H 3.8496 4.0063 17.1967 +O 18.2451 11.0575 9.4294 +H 14.6483 0.0469 17.1344 +O 6.1049 7.9992 10.4920 +H 3.1946 18.6260 13.4288 +O 9.4973 19.1939 4.3473 +H 14.1941 10.9634 5.5989 +O 1.4391 14.0152 0.3482 +H 1.1062 2.7161 1.0870 +O 8.1156 11.9482 6.9681 +H 13.0232 9.0459 14.5964 +O 15.3886 0.6907 3.2944 +H 12.1619 7.2606 19.5708 +40 20.0 20.0 20.0 +frame 412 +O 11.0943 17.8319 11.9429 +H 6.9283 9.8976 2.9459 +O 1.6980 9.8533 3.4460 +H 3.1741 13.6196 7.4797 +O 6.3257 6.0123 17.7329 +H 3.3051 13.8571 8.6680 +O 19.6961 0.9177 18.6966 +H 19.5522 4.1479 12.7065 +O 1.6974 14.7278 19.6503 +H 16.3916 7.4212 11.6557 +O 1.2792 19.2363 15.8996 +H 0.8264 4.7910 1.4582 +O 6.9685 1.5546 10.6892 +H 1.6951 9.9739 3.6196 +O 10.3183 11.0700 4.4518 +H 13.0838 16.9683 6.2550 +O 6.9709 9.7462 18.8786 +H 7.2290 0.8267 7.1061 +O 6.2035 19.1094 19.3888 +H 7.1283 2.1843 11.4027 +O 15.6689 3.6277 5.7959 +H 14.1311 4.8718 16.7684 +O 15.4512 3.6189 4.7574 +H 4.8745 7.5626 15.4263 +O 19.5363 0.8098 7.0815 +H 17.4841 11.1671 7.9894 +O 12.8169 5.5987 3.0889 +H 3.8369 3.3927 16.7802 +O 18.1003 11.4751 9.2218 +H 14.5528 19.8209 17.3406 +O 6.4648 8.0409 10.1276 +H 3.1187 18.4048 13.6374 +O 9.6580 18.6474 3.8543 +H 14.4771 11.2442 5.7525 +O 0.6831 14.1798 19.9656 +H 1.8697 2.4850 1.4072 +O 7.8697 11.9166 7.1973 +H 12.7777 9.1359 14.3821 +O 15.9814 0.3936 3.4790 +H 12.0561 7.3536 19.1391 +40 20.0 20.0 20.0 +frame 413 +O 11.8521 17.2084 12.0033 +H 6.8235 10.0268 3.0106 +O 1.7232 9.8921 3.4311 +H 3.1580 13.7021 7.2086 +O 6.2900 6.1739 17.9564 +H 3.5744 13.7455 8.6306 +O 19.8441 0.8907 19.0225 +H 19.4958 4.3458 13.2804 +O 1.3453 14.3376 19.3995 +H 16.2482 7.5725 12.0266 +O 1.5050 19.5534 16.0217 +H 1.4188 4.5799 1.8827 +O 7.0299 1.7525 10.8694 +H 1.6654 10.1450 3.1731 +O 10.0582 11.2210 4.2372 +H 12.7638 16.7939 6.1117 +O 7.1532 10.1416 18.7467 +H 6.9903 0.6853 7.1284 +O 6.1004 19.6244 19.5400 +H 6.8249 2.3778 10.8885 +O 15.8000 3.6355 5.4832 +H 13.8989 4.9266 16.5318 +O 15.5997 3.6368 4.7181 +H 5.3940 7.9469 15.5763 +O 19.1221 1.2374 7.3589 +H 17.9311 11.5816 7.4814 +O 13.0735 5.3511 3.0030 +H 3.3870 3.5479 16.8074 +O 18.5363 11.3325 9.5495 +H 14.3659 19.9274 16.8355 +O 6.2044 8.0098 10.0898 +H 3.1001 18.9410 13.9408 +O 9.6914 18.6079 3.8749 +H 14.8081 11.9821 5.6646 +O 0.3311 13.9299 0.1789 +H 1.8583 2.2978 1.7833 +O 7.8928 11.4270 6.8636 +H 13.3286 9.5309 14.6400 +O 16.3540 0.9320 3.5229 +H 12.3283 7.3371 19.2369 +40 20.0 20.0 20.0 +frame 414 +O 11.1519 16.6354 12.0073 +H 7.2319 10.0014 3.4409 +O 1.1902 9.8398 3.8095 +H 2.7635 13.8755 7.2365 +O 6.9483 6.2357 17.3833 +H 3.5008 13.6715 8.9128 +O 19.3761 1.1097 19.2058 +H 19.6847 4.4084 13.3256 +O 1.8892 14.7931 19.1017 +H 16.8887 7.4949 11.6995 +O 1.8902 19.3725 16.1394 +H 1.1313 4.3757 1.5242 +O 6.8433 1.3179 10.2936 +H 2.0023 9.5735 3.2429 +O 10.1354 11.0906 4.4701 +H 12.4895 16.8266 5.7565 +O 7.0271 10.3739 18.5657 +H 6.5672 0.9211 7.3562 +O 6.0154 19.0702 19.2130 +H 6.8840 2.5398 10.9177 +O 15.4755 3.2387 5.5698 +H 13.7889 4.5482 16.8848 +O 15.9033 3.4737 4.8841 +H 5.5799 7.7506 15.9611 +O 19.5508 1.2983 6.5436 +H 17.7191 11.6599 7.7361 +O 12.2749 5.6964 2.8602 +H 2.9097 3.5509 16.8545 +O 18.4413 11.5833 9.5384 +H 14.2246 0.6485 16.6502 +O 6.2650 7.7690 10.2350 +H 2.7509 18.9140 14.2294 +O 9.9992 18.6306 3.1914 +H 14.5150 12.5262 5.7945 +O 0.0411 13.2929 0.3805 +H 1.7153 2.3285 1.8775 +O 7.7002 11.3824 6.5118 +H 13.0971 8.8289 14.3711 +O 16.5339 0.9121 4.0462 +H 12.5210 6.6508 19.7331 +40 20.0 20.0 20.0 +frame 415 +O 11.2074 16.1757 12.6565 +H 7.4327 10.4298 3.6371 +O 0.6984 9.8320 3.5870 +H 2.8896 13.7761 8.0960 +O 6.6089 6.3158 17.5298 +H 3.6951 13.2884 9.1437 +O 19.0691 1.0927 18.9745 +H 19.7706 4.1535 13.4188 +O 1.5327 14.7620 19.2688 +H 17.2025 7.6730 11.9273 +O 2.0040 19.5613 16.2338 +H 1.1206 4.4192 1.0701 +O 6.2728 0.8935 10.5373 +H 1.8745 9.5636 2.8865 +O 10.1382 10.6865 4.2113 +H 12.6952 17.1718 5.8216 +O 6.9361 10.2427 18.6188 +H 7.3172 1.1431 7.2212 +O 6.1501 18.6797 19.5452 +H 6.9241 1.9647 10.4065 +O 15.2868 3.7087 5.7297 +H 13.9458 3.6780 16.5370 +O 16.0367 3.7382 4.9176 +H 5.8735 7.8922 15.6910 +O 19.5882 1.1462 6.0493 +H 17.3468 11.8237 7.4713 +O 12.3305 5.5855 2.5484 +H 3.3548 3.6068 17.0822 +O 18.2740 12.0711 9.6875 +H 13.9538 0.8419 16.5161 +O 6.0116 7.8109 9.9571 +H 3.0406 19.0243 14.4324 +O 10.3297 18.2429 2.7638 +H 14.3874 12.1043 5.6719 +O 0.0660 13.5260 0.3397 +H 1.6252 1.8789 2.1612 +O 7.5154 11.6796 6.9345 +H 13.4399 8.7098 14.7065 +O 16.4920 1.4080 4.0638 +H 12.1094 6.3625 0.2271 +40 20.0 20.0 20.0 +frame 416 +O 11.1444 16.3596 12.7841 +H 7.6488 10.5474 3.8468 +O 0.5171 10.0262 3.5420 +H 2.4733 14.2349 8.1168 +O 6.4291 6.2545 17.7095 +H 3.9009 13.4482 8.9855 +O 19.1456 1.1893 19.0519 +H 19.7196 4.2971 13.0308 +O 1.4977 14.6685 19.1593 +H 17.5519 7.8530 11.7476 +O 2.0528 19.6634 16.2737 +H 1.1794 4.3154 0.7400 +O 6.7797 1.1431 10.6779 +H 1.8515 9.3858 2.9357 +O 10.1649 10.1884 4.3233 +H 12.9859 17.1942 5.8256 +O 7.4145 10.0888 18.8315 +H 7.5076 1.0576 7.3515 +O 5.9703 18.6724 19.7135 +H 6.6647 1.9711 10.3819 +O 15.0815 4.1289 6.0549 +H 14.3082 3.3149 16.3783 +O 15.7513 4.1431 4.9978 +H 6.2347 7.6614 15.6620 +O 19.6682 1.3650 5.7165 +H 17.3825 11.8905 7.6036 +O 12.4316 5.0095 2.0555 +H 3.6029 3.6197 17.2230 +O 18.2533 12.0090 9.9750 +H 14.3563 0.7701 16.2485 +O 6.1067 8.0264 9.9771 +H 3.3979 19.1029 14.3595 +O 10.0207 17.9761 2.8813 +H 14.1170 12.2030 5.3489 +O 0.4582 13.8373 0.5955 +H 1.6391 2.3565 2.1297 +O 7.0202 11.8628 7.0182 +H 13.5561 8.5399 14.2146 +O 16.2500 1.3514 4.0760 +H 11.9187 6.5232 0.3756 +40 20.0 20.0 20.0 +frame 417 +O 11.7083 16.7411 12.4827 +H 8.1390 10.0615 4.4078 +O 0.6380 10.6512 4.0951 +H 2.7807 14.4660 8.2479 +O 6.5630 6.3390 17.5458 +H 4.0918 13.3498 9.2323 +O 18.9238 1.1347 18.9239 +H 19.5375 4.3629 13.2838 +O 1.7089 14.4039 19.1755 +H 17.0694 7.6101 12.1487 +O 2.1185 19.7776 16.4724 +H 1.5764 4.0618 0.6506 +O 6.6029 1.7533 10.9277 +H 2.0126 9.7841 3.0757 +O 10.2228 9.9290 4.9639 +H 12.9434 17.1841 5.3187 +O 7.8151 9.8995 18.4883 +H 7.1079 0.9784 7.3936 +O 6.1582 18.7555 0.5724 +H 5.9631 1.9093 10.8726 +O 15.1115 3.3433 5.9756 +H 14.8368 3.5508 16.5274 +O 15.2587 5.0734 5.1157 +H 6.2069 7.7129 15.1454 +O 19.6270 1.0160 5.8434 +H 17.5428 11.6802 8.1766 +O 12.9879 5.6743 2.0317 +H 3.7558 3.9235 17.4259 +O 18.0667 12.0651 10.3219 +H 13.8806 0.9077 16.0170 +O 6.0962 7.8076 10.0868 +H 3.2785 18.9142 14.6635 +O 9.8466 18.0675 3.0470 +H 14.3212 12.2393 5.1669 +O 0.4796 14.1437 1.0044 +H 1.4253 2.3563 2.0383 +O 6.9287 11.7583 6.7560 +H 13.3696 8.6055 14.6226 +O 16.0675 1.1029 4.2387 +H 11.7260 6.4815 19.9506 +40 20.0 20.0 20.0 +frame 418 +O 11.8774 16.2918 12.3826 +H 7.6576 10.0580 4.6287 +O 0.2013 10.6535 3.7427 +H 2.9308 14.6281 8.6233 +O 6.7116 6.5842 17.0448 +H 4.0036 13.2562 9.6768 +O 18.0436 0.8375 18.8819 +H 18.9040 4.3721 13.4173 +O 1.4838 14.8615 19.5432 +H 16.6935 7.5960 12.5434 +O 1.7289 19.9087 15.7898 +H 1.4889 4.1833 0.5636 +O 6.7353 1.4635 10.8888 +H 2.1957 9.7216 2.9922 +O 10.7782 10.1312 5.0567 +H 12.8236 17.0540 5.6381 +O 7.7131 10.0869 18.1655 +H 7.2501 0.7681 7.2138 +O 5.7748 18.9081 0.5271 +H 5.9825 1.5812 10.9813 +O 14.9593 3.6047 6.3700 +H 15.0497 3.2429 16.1905 +O 14.7649 5.0113 5.7777 +H 5.6749 7.6826 15.2491 +O 19.7127 0.8664 5.8153 +H 17.3690 11.3332 8.2564 +O 13.6375 5.4820 1.5400 +H 3.6670 3.7965 16.6280 +O 17.8843 11.6702 10.4916 +H 13.4681 1.4212 15.9852 +O 6.0463 8.2970 10.0991 +H 3.0984 19.0797 14.4357 +O 9.5924 18.0831 3.0554 +H 13.8379 11.6479 5.4758 +O 0.3086 14.4362 1.1143 +H 1.1993 1.9647 2.2739 +O 7.2444 11.3660 6.6709 +H 13.5589 9.0150 14.6144 +O 15.9261 1.0163 4.2399 +H 11.4783 6.8227 19.1299 +40 20.0 20.0 20.0 +frame 419 +O 11.8219 16.3020 12.2273 +H 7.2577 10.1825 4.5079 +O 19.8333 10.1803 3.7066 +H 2.8714 14.2355 8.5585 +O 6.7254 6.4138 17.1584 +H 3.9608 13.3976 9.6731 +O 18.4727 0.7753 19.2001 +H 18.6828 4.1573 13.4412 +O 1.2719 14.8350 19.1534 +H 16.9725 7.3191 12.0498 +O 1.7095 0.4375 15.7269 +H 1.4120 4.4377 0.8907 +O 6.9779 1.1755 11.2801 +H 2.4008 9.8152 3.0581 +O 10.5138 9.9613 5.1137 +H 13.7745 17.1639 6.2877 +O 7.3743 9.6177 18.1485 +H 7.1423 0.7460 7.9221 +O 5.7187 18.8459 0.9912 +H 5.6468 1.9562 10.6817 +O 15.3028 4.1043 6.2899 +H 15.0586 3.1646 15.9187 +O 14.9414 5.5277 5.8488 +H 5.1749 7.9533 15.4745 +O 19.8188 1.0610 5.7653 +H 17.3692 11.4253 8.1485 +O 13.9186 5.6907 1.6599 +H 3.6766 3.6313 16.5632 +O 17.7835 11.7228 10.8225 +H 13.6969 1.1315 15.7903 +O 6.0123 8.7183 9.9508 +H 2.6663 19.1016 14.6718 +O 9.6697 17.8547 3.1217 +H 13.7084 11.7907 6.2838 +O 19.8766 14.6860 1.2590 +H 0.9423 1.7406 1.6857 +O 6.6900 11.4893 6.7665 +H 13.6926 9.0483 15.2376 +O 16.3596 0.9423 4.1301 +H 11.7851 7.0458 19.4411 +40 20.0 20.0 20.0 +frame 420 +O 12.0474 16.3282 12.1612 +H 6.9537 10.3143 4.2073 +O 19.7918 10.2591 4.1568 +H 2.5511 14.4733 7.9593 +O 7.0334 6.8697 17.0852 +H 4.2577 13.2998 9.7443 +O 18.8949 0.5399 18.7974 +H 19.1122 4.3469 13.5946 +O 1.3746 14.2439 19.4817 +H 16.9822 6.7323 11.9075 +O 2.0263 0.7933 15.5485 +H 1.6931 4.4779 0.4683 +O 6.9502 0.9965 10.6879 +H 2.4679 9.6578 2.9443 +O 10.6090 9.7520 4.4949 +H 13.5629 17.2846 6.1593 +O 7.0798 9.5546 17.8697 +H 7.0888 0.6509 7.8756 +O 5.5932 19.0196 0.8580 +H 5.4964 2.3759 10.9571 +O 15.4362 4.1952 6.3941 +H 15.1645 3.0075 15.8415 +O 14.7294 4.9667 5.7681 +H 5.1530 7.4181 15.2896 +O 0.2008 1.1354 5.3093 +H 17.3058 11.4716 7.8974 +O 14.2858 5.4388 1.5935 +H 4.2836 3.5006 17.0966 +O 17.3553 11.8897 11.1196 +H 13.9906 1.2651 15.4646 +O 5.5345 8.5799 10.2335 +H 2.5081 19.0701 14.4423 +O 9.4648 17.5497 3.0495 +H 13.5244 11.5526 5.9657 +O 19.9709 14.4211 1.1598 +H 1.0170 1.7705 1.3924 +O 6.5686 11.4176 6.7469 +H 13.5946 9.0452 14.6123 +O 15.8407 1.2570 4.3311 +H 12.1685 7.0841 19.8817 +40 20.0 20.0 20.0 +frame 421 +O 11.6334 16.4555 11.9118 +H 7.0745 10.6694 4.9068 +O 0.4926 9.8918 3.7607 +H 2.8986 14.5390 7.9835 +O 7.1429 6.5066 17.2576 +H 3.9048 13.4271 9.6215 +O 19.1423 0.4888 18.5053 +H 18.2230 4.5799 13.6938 +O 1.1721 14.4058 19.9416 +H 16.7700 6.7879 12.3869 +O 2.0770 0.7967 15.5383 +H 1.6054 3.9301 0.2577 +O 6.7229 0.8902 10.6693 +H 1.9647 9.1201 2.9438 +O 10.5028 10.0632 5.0847 +H 13.7871 17.4599 6.3538 +O 7.6048 9.9280 17.8289 +H 7.1498 0.7723 8.0755 +O 5.5561 19.2243 0.6858 +H 5.1462 2.8993 10.8402 +O 15.6582 4.0442 6.0885 +H 15.3400 3.0329 15.5705 +O 14.0377 5.3341 6.0826 +H 5.3238 7.5462 15.6766 +O 0.1523 0.8852 5.6288 +H 17.4583 11.6607 7.9257 +O 13.8102 5.4260 1.8384 +H 4.2255 3.4245 17.6683 +O 17.3117 12.0306 10.4506 +H 13.9485 1.0551 15.4870 +O 5.4513 8.6978 10.0168 +H 2.3914 19.0080 14.6343 +O 9.4966 17.6086 3.1363 +H 13.0992 11.1193 5.8450 +O 19.9145 14.1260 0.9084 +H 1.1779 1.9931 1.6585 +O 6.2975 11.8601 5.9265 +H 14.0513 9.4956 14.4838 +O 16.0249 1.2235 4.4115 +H 13.2937 6.8627 19.7912 +40 20.0 20.0 20.0 +frame 422 +O 11.9745 16.6768 12.3662 +H 7.7630 10.8261 5.1496 +O 0.4736 9.6705 3.8206 +H 3.0403 14.4305 8.4415 +O 7.1736 6.0309 17.1878 +H 4.1538 13.3262 9.9419 +O 18.9570 1.0415 18.6703 +H 17.9753 4.2770 13.4801 +O 1.1403 14.4753 19.7688 +H 16.7729 6.6983 12.1807 +O 2.2517 1.3136 15.7626 +H 1.7272 3.5756 0.5190 +O 6.6552 0.9078 10.6770 +H 2.0973 8.9200 3.1146 +O 10.5666 10.2847 5.0922 +H 13.5062 18.3658 6.2555 +O 7.8096 9.6741 18.0965 +H 6.8707 0.9563 8.3640 +O 5.1292 19.2853 1.2562 +H 4.7712 3.0999 10.4384 +O 15.4427 3.8714 6.2835 +H 15.1874 2.9395 15.3055 +O 14.0903 5.4909 6.0597 +H 5.6330 7.3868 15.5746 +O 0.2019 1.0849 5.7847 +H 17.1905 11.6095 7.9496 +O 13.5961 5.4808 1.8979 +H 4.4734 3.3140 17.9822 +O 17.6571 11.9083 10.4221 +H 14.3426 1.0641 15.6138 +O 5.5413 8.7329 10.2339 +H 2.6077 18.9015 14.9641 +O 9.6817 17.2302 2.9094 +H 13.0764 10.9840 5.7246 +O 0.3060 14.1404 0.8573 +H 1.0509 1.9052 1.3976 +O 6.0045 11.7219 5.8308 +H 14.0243 9.1103 14.3560 +O 16.2145 1.5471 4.0540 +H 13.0243 6.6995 0.3093 +40 20.0 20.0 20.0 +frame 423 +O 12.5979 17.2052 12.1854 +H 7.8247 10.3338 4.5305 +O 0.3764 9.9670 3.5417 +H 3.4605 14.6600 8.4437 +O 6.7903 6.2459 16.8196 +H 4.5929 12.6875 9.7263 +O 19.0071 1.3139 18.8729 +H 17.8594 4.4754 13.3575 +O 0.5495 14.6287 19.5239 +H 17.0958 6.6326 12.3809 +O 2.6969 1.2048 15.9297 +H 1.2041 3.8418 0.6165 +O 6.9167 1.1264 10.6931 +H 2.0203 8.8238 3.0648 +O 10.6931 9.8676 5.4337 +H 13.4627 18.4957 6.2942 +O 7.8312 9.5055 18.3463 +H 6.4713 1.1585 8.4835 +O 4.9162 19.3610 0.8314 +H 4.6917 3.3249 10.3084 +O 15.6466 3.5563 5.9112 +H 15.6447 2.9190 15.6179 +O 13.6873 5.7149 6.4271 +H 5.4234 7.4590 15.4859 +O 0.3479 1.2621 5.9527 +H 16.9599 11.5151 7.8109 +O 13.6528 5.5444 1.8212 +H 4.4928 3.4057 17.7804 +O 17.7328 12.1778 10.4531 +H 14.5182 0.8580 15.9556 +O 5.9063 8.8669 9.7594 +H 2.3911 18.4735 15.0264 +O 9.9715 16.7538 2.5644 +H 12.9364 11.1067 5.9092 +O 0.2044 13.6818 0.6741 +H 0.3096 2.3743 1.4808 +O 6.0166 11.3585 6.2712 +H 14.3596 9.2203 14.3109 +O 16.0219 1.7744 4.3064 +H 13.0526 6.0809 19.7206 +40 20.0 20.0 20.0 +frame 424 +O 12.2721 17.0388 12.5182 +H 7.8767 10.2020 4.0754 +O 0.5191 10.0845 2.9713 +H 3.4152 14.9442 8.3796 +O 6.6067 5.8442 16.6734 +H 4.6837 13.0764 9.6900 +O 19.1627 1.6157 18.8281 +H 17.9124 4.1388 13.0536 +O 1.0414 15.0948 19.5117 +H 17.6474 6.7817 11.8879 +O 2.7889 1.2409 15.6970 +H 0.9586 4.3815 0.6595 +O 6.3705 0.6485 10.9760 +H 1.8597 8.6337 2.8464 +O 10.4969 9.7206 5.8692 +H 13.4795 18.4008 6.4083 +O 7.4489 9.7280 18.3026 +H 6.8130 1.2730 8.6811 +O 4.9465 19.2599 0.5987 +H 4.4502 3.5286 10.1128 +O 15.3615 3.0275 6.4213 +H 16.0724 2.9691 15.3371 +O 13.6509 6.1080 6.5041 +H 5.7473 6.9742 15.6829 +O 19.8606 1.6509 5.6053 +H 16.1290 11.9212 7.6206 +O 13.8346 5.6164 1.7393 +H 4.3234 2.9649 18.0106 +O 18.0049 12.4241 10.3202 +H 14.6219 1.0896 15.9949 +O 5.9693 8.9372 9.4544 +H 2.9283 18.1880 14.1616 +O 10.2908 16.7741 2.2920 +H 12.8624 11.3033 5.9452 +O 19.8078 13.6954 1.0873 +H 0.1956 2.3167 1.3221 +O 6.3539 11.7263 6.3111 +H 14.3903 9.2778 14.5454 +O 15.7793 1.8834 3.9217 +H 13.6674 6.7474 19.8916 +40 20.0 20.0 20.0 +frame 425 +O 11.7394 16.7807 12.2920 +H 7.9008 10.3218 4.2203 +O 0.2380 10.5316 3.3076 +H 3.7375 15.1346 8.2629 +O 6.7245 5.4656 16.8057 +H 4.2794 13.0971 10.2407 +O 18.9548 1.6749 18.5012 +H 18.2795 4.1181 12.9273 +O 0.9872 15.1799 19.9610 +H 17.9032 6.5838 11.6753 +O 3.4480 0.7479 16.1680 +H 1.0503 3.9621 0.7638 +O 6.3741 1.0615 10.7750 +H 2.3119 9.1973 3.1453 +O 10.2268 9.7563 6.1719 +H 13.9501 18.1608 6.4545 +O 7.3522 9.9205 17.8873 +H 6.6871 1.1676 9.0193 +O 4.7759 19.1110 0.9231 +H 4.8467 3.4587 9.6496 +O 15.6664 3.3780 6.7392 +H 16.0908 2.8510 14.9727 +O 13.7532 6.2826 6.6383 +H 5.2992 7.2128 15.7081 +O 19.7315 1.3543 5.5104 +H 16.0960 12.4498 7.5096 +O 13.6311 5.9674 1.7385 +H 4.1820 3.1526 18.6208 +O 17.7564 12.2669 10.1102 +H 14.4846 1.2735 16.1263 +O 6.0317 8.8533 9.1328 +H 3.0434 18.4060 14.2325 +O 9.9486 17.0424 1.9131 +H 12.8288 11.1980 5.8185 +O 19.4295 13.9242 2.0461 +H 0.3411 2.7906 1.1574 +O 6.6102 11.5428 6.0753 +H 14.2757 9.6463 14.5716 +O 15.2545 1.7955 4.1141 +H 13.5477 6.9974 0.2100 +40 20.0 20.0 20.0 +frame 426 +O 11.6393 16.6758 11.9364 +H 8.0850 10.3476 4.6608 +O 0.2642 9.7638 3.9040 +H 3.8155 15.3942 7.7419 +O 6.6519 5.3592 16.6762 +H 4.7728 12.8824 10.4420 +O 19.0639 1.3743 18.5205 +H 18.1775 4.1672 12.8811 +O 1.2210 15.6771 0.0366 +H 18.2177 6.1773 11.4656 +O 3.4598 0.4930 15.8436 +H 1.8320 4.2857 1.2178 +O 6.4625 1.5942 10.9908 +H 2.2754 8.6903 3.1902 +O 10.9019 9.5697 6.1740 +H 13.4632 18.6301 6.4971 +O 7.2333 10.1601 17.5305 +H 6.3414 0.9923 8.9932 +O 4.8021 19.5219 0.6143 +H 4.3265 3.3888 9.1360 +O 15.5159 3.6846 6.9372 +H 15.9834 2.5894 15.0504 +O 13.2736 5.9687 6.2502 +H 5.1543 6.7893 15.7286 +O 19.7832 1.2151 5.2602 +H 16.6584 12.2346 7.2240 +O 13.5889 6.1541 1.7205 +H 4.7907 3.4331 18.3766 +O 17.5640 12.4770 9.8453 +H 14.8601 0.7679 16.1346 +O 6.3125 9.0200 9.0412 +H 3.1054 18.4139 13.5392 +O 9.9750 17.2512 1.9611 +H 13.0419 11.2141 5.6211 +O 19.1417 13.6314 2.3937 +H 0.9722 3.2214 1.1024 +O 6.7800 11.0166 5.4397 +H 14.3355 10.0103 14.3279 +O 15.4546 1.7446 3.8844 +H 13.9782 7.2128 0.1133 +40 20.0 20.0 20.0 +frame 427 +O 11.7671 17.1146 12.1644 +H 8.1158 10.9277 4.5024 +O 0.0392 10.0480 4.0012 +H 3.5269 15.4344 8.1968 +O 6.8332 5.6461 16.7109 +H 4.6975 13.0485 10.4547 +O 19.0711 1.2350 18.6058 +H 18.2005 4.3193 12.4302 +O 0.7194 15.2648 19.6035 +H 17.8666 5.5717 11.3036 +O 3.5344 0.1931 15.1228 +H 1.8181 3.6833 1.1772 +O 6.4093 1.4579 11.1057 +H 2.1127 8.9936 3.1695 +O 10.6084 8.8106 6.0134 +H 13.2948 18.8101 6.3462 +O 7.2846 9.9564 17.6090 +H 6.5321 0.9532 8.7962 +O 4.6980 19.2695 0.2680 +H 4.3982 3.8400 9.2917 +O 15.2277 3.4878 7.4122 +H 15.9041 2.3820 15.1456 +O 13.3616 6.2931 6.3394 +H 5.1226 6.6192 15.6356 +O 19.4362 1.4311 5.0838 +H 17.0560 11.4400 7.4413 +O 13.9179 5.9037 1.4492 +H 4.4160 3.0384 17.8123 +O 17.9127 12.4561 10.4564 +H 14.4186 1.1945 16.1194 +O 5.9746 8.9539 8.1774 +H 2.9501 18.0539 13.6584 +O 10.0782 17.0946 1.9207 +H 13.1479 11.3539 5.4572 +O 19.5283 13.6832 2.2633 +H 0.7938 2.9310 1.0094 +O 6.8322 10.8252 5.0920 +H 14.8703 9.9373 14.4706 +O 15.3620 2.1652 3.8138 +H 14.3087 7.5005 0.0835 +40 20.0 20.0 20.0 +frame 428 +O 11.9110 17.2145 11.9853 +H 7.9611 10.7271 4.8054 +O 0.1193 10.0263 4.3567 +H 3.6729 15.3870 8.2369 +O 7.0487 6.1784 16.4234 +H 4.2980 12.3723 10.9355 +O 18.6156 1.3961 18.5776 +H 18.5402 3.9735 12.7370 +O 0.6523 14.9935 18.9569 +H 18.1301 5.0649 11.7379 +O 3.1858 0.2842 15.4487 +H 1.8216 3.9406 1.2276 +O 7.0681 1.4465 11.1603 +H 1.8803 9.0404 3.3195 +O 10.9734 8.5828 6.3890 +H 12.7676 18.6038 6.2106 +O 7.4415 9.7511 17.8152 +H 6.1253 1.4712 8.6328 +O 4.6972 19.0155 0.6269 +H 4.1678 3.7226 9.0190 +O 14.8227 3.5675 7.5098 +H 15.9966 2.3367 15.1643 +O 13.3129 6.3686 6.3099 +H 5.3679 6.4183 15.2947 +O 18.8821 1.6500 5.0722 +H 17.2354 11.4242 7.2233 +O 13.4341 6.4951 1.7024 +H 4.4606 3.3180 17.9683 +O 17.3994 12.1094 10.9159 +H 14.1681 1.5046 16.0569 +O 5.6504 8.8398 8.4730 +H 3.0175 17.9847 13.9470 +O 10.1410 17.0836 2.4940 +H 13.6825 11.1941 5.4739 +O 19.2993 13.5505 2.2043 +H 0.8652 2.9939 0.4377 +O 6.4160 11.1008 4.8481 +H 14.7575 9.9268 14.8150 +O 15.3472 2.5197 3.9043 +H 14.2112 7.5724 0.3843 +40 20.0 20.0 20.0 +frame 429 +O 11.7499 17.2633 12.3044 +H 7.6208 10.2173 4.8061 +O 0.2317 9.9421 4.0334 +H 3.8601 15.3915 8.2669 +O 7.3392 5.5851 16.2171 +H 4.0679 12.4273 10.8603 +O 18.7413 1.9485 19.1616 +H 18.1170 3.8275 12.9066 +O 0.5060 15.2177 19.3730 +H 17.9756 5.0058 11.9373 +O 3.1518 0.4220 15.2530 +H 1.9957 4.1289 1.4895 +O 7.3135 1.6746 11.5165 +H 2.0757 9.3268 3.5853 +O 11.1199 9.0555 6.5352 +H 12.5798 18.9386 6.1892 +O 7.8596 10.0494 17.4981 +H 6.5939 0.9465 9.0144 +O 4.5507 19.0304 0.8042 +H 4.0671 3.6345 8.9290 +O 14.8424 3.8801 7.3583 +H 15.9995 2.5493 14.8094 +O 13.0270 6.1632 6.2829 +H 4.9262 6.8297 15.3961 +O 19.1427 1.4380 4.9706 +H 17.3302 11.4742 7.8330 +O 13.1617 6.8909 1.5216 +H 4.5266 3.4948 18.8979 +O 17.7201 11.8553 10.7821 +H 13.8917 1.7237 16.3258 +O 5.4229 7.8864 8.7614 +H 2.6357 18.4596 14.0861 +O 9.7674 17.0633 2.1940 +H 13.9073 10.7725 5.5839 +O 19.5766 14.0764 2.4513 +H 0.6125 3.4332 0.1814 +O 6.7572 11.2841 4.6549 +H 14.7732 9.8841 15.0290 +O 14.7179 2.6059 3.7566 +H 14.4932 7.6799 1.4104 +40 20.0 20.0 20.0 +frame 430 +O 11.8068 17.4423 12.3188 +H 7.6804 10.2969 4.6847 +O 0.4754 9.3218 4.0311 +H 4.3234 15.3116 8.4249 +O 7.0842 5.6845 16.5837 +H 4.3779 12.5262 10.7174 +O 18.5317 1.4694 19.5228 +H 18.6491 3.8267 12.8697 +O 0.5240 15.2234 19.2179 +H 17.9492 5.2314 11.7232 +O 3.0178 0.5380 14.8717 +H 1.6879 4.7756 1.4599 +O 7.0782 1.3066 11.4127 +H 1.7727 9.3352 3.0625 +O 10.8494 8.6124 6.7952 +H 12.4108 18.4816 5.9298 +O 8.1015 10.4220 17.2807 +H 6.8014 1.0253 9.3277 +O 4.6893 18.8797 0.6441 +H 4.4056 3.4919 8.7861 +O 14.5077 4.1240 7.3412 +H 15.9262 2.3970 15.3315 +O 13.1529 6.0408 6.0808 +H 5.6318 7.0921 15.2207 +O 19.5790 1.8314 5.2352 +H 17.0310 11.5224 8.2005 +O 13.4339 6.6164 1.3424 +H 4.1560 3.7891 18.7895 +O 17.4152 11.7140 11.0565 +H 13.4063 1.8552 16.5758 +O 5.7183 7.8219 8.7069 +H 2.7273 18.2482 14.3717 +O 9.8612 16.6085 2.8454 +H 13.7970 10.4439 5.9708 +O 19.3338 13.9081 2.0397 +H 0.5997 3.3825 0.3728 +O 6.4855 11.3348 4.7311 +H 14.7469 9.9416 14.9732 +O 14.9364 2.4102 3.7705 +H 14.0942 7.4763 1.5818 +40 20.0 20.0 20.0 +frame 431 +O 11.9885 17.6140 11.9996 +H 8.2085 10.4687 4.6734 +O 0.6974 9.5553 4.1830 +H 4.6450 15.0548 8.6212 +O 7.3773 6.1414 16.2922 +H 4.4016 12.7130 11.0848 +O 18.4846 1.4494 18.9958 +H 18.6178 4.3937 13.0302 +O 0.0890 15.2836 19.1288 +H 17.7997 5.1621 11.4465 +O 2.6542 0.1442 15.5378 +H 1.8020 5.5373 1.7684 +O 7.0295 1.3117 11.6302 +H 1.3684 9.2344 3.2067 +O 10.7043 8.4944 6.6252 +H 12.2958 18.3460 6.1601 +O 7.7488 10.3993 16.7408 +H 6.5037 1.4183 8.8596 +O 4.2833 19.2016 0.6701 +H 4.4845 3.0668 8.5169 +O 14.5825 3.7888 6.9985 +H 16.5022 2.4081 15.4173 +O 12.9867 6.2008 5.4496 +H 5.3790 7.2320 15.3989 +O 19.7489 1.6009 4.9924 +H 17.0449 12.1801 8.3881 +O 13.2427 6.3915 1.2268 +H 3.6245 3.9104 18.6269 +O 17.5299 12.0119 11.5697 +H 13.7248 2.1855 17.1284 +O 5.7194 7.7074 8.3551 +H 2.0472 18.0398 14.1496 +O 9.7535 17.1721 3.2336 +H 13.8644 10.0819 5.7285 +O 19.2885 13.7782 2.2985 +H 0.9256 3.2599 0.2632 +O 6.8070 11.0097 4.8132 +H 14.6830 10.2767 15.1118 +O 14.7748 2.7046 3.4661 +H 14.1235 7.7105 1.9116 +40 20.0 20.0 20.0 +frame 432 +O 12.1536 17.6427 12.1183 +H 8.4938 10.2788 4.9961 +O 0.3268 9.4850 5.3009 +H 4.5238 14.9896 8.7213 +O 6.7614 6.0205 15.8593 +H 4.6224 13.0654 10.4565 +O 18.5733 1.2770 18.6254 +H 18.1251 4.5413 13.4018 +O 0.0670 15.1142 19.4540 +H 18.6385 4.9824 11.6190 +O 2.7659 0.6782 15.7503 +H 1.6470 5.2847 1.5003 +O 7.1244 0.8508 11.9492 +H 1.6765 9.6378 3.2619 +O 11.0181 8.8463 6.2876 +H 12.1026 18.7372 6.2171 +O 8.0886 10.5443 16.6619 +H 6.8531 2.0276 8.1205 +O 4.0038 19.0054 0.7400 +H 4.5502 3.0445 8.5447 +O 14.7125 4.0413 6.7851 +H 16.3111 2.7263 15.6930 +O 13.5623 6.2246 5.6682 +H 5.2866 7.5065 15.2000 +O 0.1411 1.7654 5.0124 +H 16.7851 11.6842 8.7825 +O 13.2597 6.0127 0.6182 +H 3.0839 3.4094 18.5218 +O 17.6571 12.1261 11.4377 +H 14.2128 2.5274 17.0884 +O 5.6433 7.5173 8.3469 +H 2.0765 17.7485 13.9802 +O 9.4667 17.1371 3.0430 +H 13.8705 10.0735 5.6237 +O 18.7382 13.3802 2.6385 +H 1.1134 3.0409 0.5981 +O 6.8067 10.9450 4.8662 +H 14.5021 9.9400 15.7135 +O 14.4902 2.5653 3.8082 +H 14.7828 7.5922 1.4159 +40 20.0 20.0 20.0 +frame 433 +O 12.2918 17.7427 12.2449 +H 8.6745 10.5411 4.6218 +O 0.0030 8.9783 5.2779 +H 4.4962 14.6934 8.7705 +O 6.5038 5.5581 15.7943 +H 4.7483 13.3916 10.5910 +O 18.2916 1.2655 18.5913 +H 18.1283 4.3787 13.2997 +O 0.1839 15.0612 19.2574 +H 18.9422 5.0302 11.1545 +O 2.4816 0.5348 15.9491 +H 2.0985 5.6149 1.5032 +O 6.9243 1.1411 12.0811 +H 1.6500 9.8764 3.0346 +O 11.2025 9.0109 6.7288 +H 12.1645 18.7395 6.3707 +O 8.2161 10.6628 16.3827 +H 7.0432 1.8197 7.7349 +O 4.2292 18.8871 0.7978 +H 4.4761 2.5876 8.7075 +O 14.9696 4.2046 6.5143 +H 16.6199 2.6432 16.4307 +O 13.0099 6.2471 5.6530 +H 5.1329 7.4515 15.1454 +O 0.1781 1.6239 5.2789 +H 17.1391 12.0760 8.5260 +O 12.9298 6.2356 0.6410 +H 3.5548 3.5679 18.9852 +O 17.2647 12.2960 11.3346 +H 14.4804 3.0724 16.6763 +O 5.9154 7.8361 8.7476 +H 2.4829 17.3822 13.4135 +O 9.4926 16.7996 2.8041 +H 13.9005 9.6172 5.7527 +O 19.1323 13.2637 2.5955 +H 1.4994 3.0112 0.9873 +O 6.5214 10.6155 4.8738 +H 14.7560 9.8648 15.5176 +O 13.6339 2.5295 3.6436 +H 15.1066 7.5858 1.9250 +40 20.0 20.0 20.0 +frame 434 +O 12.2355 17.7846 12.5332 +H 8.5339 10.2908 4.3516 +O 19.7578 8.9288 4.0717 +H 4.4582 14.7127 9.1015 +O 6.9117 6.0343 15.7571 +H 4.9534 14.0065 10.6469 +O 17.9892 1.3831 18.7410 +H 18.4103 4.3115 13.3477 +O 0.3880 14.5951 19.4238 +H 19.1806 5.2266 11.3827 +O 2.2378 0.1075 16.1630 +H 1.4835 5.4189 1.3031 +O 7.0438 1.1351 12.2660 +H 1.7999 9.5333 3.1788 +O 10.8332 9.0692 6.3033 +H 11.9780 18.4424 6.3554 +O 8.3388 10.6069 16.3105 +H 6.3394 1.4609 7.8563 +O 3.9892 18.7685 0.9954 +H 4.2545 2.6840 8.8806 +O 15.1009 3.9514 6.2370 +H 17.0804 2.6933 16.5719 +O 12.9504 6.6263 5.8558 +H 5.0607 7.4771 15.2889 +O 0.2228 1.7311 5.3777 +H 17.4269 11.6887 8.1572 +O 12.6515 6.1681 0.6085 +H 3.6322 3.5127 18.4562 +O 17.3170 11.9921 11.2900 +H 13.9276 2.8428 16.8496 +O 5.8949 8.5002 8.9266 +H 2.4572 17.6105 13.4135 +O 9.7229 16.9235 2.9328 +H 13.8028 9.9562 5.4313 +O 18.9834 13.1464 2.5590 +H 1.2236 2.9806 0.7463 +O 6.8766 10.2561 4.9994 +H 14.9164 9.7857 15.7830 +O 13.4160 2.4542 4.4449 +H 15.3683 7.7026 1.9626 +40 20.0 20.0 20.0 +frame 435 +O 12.5787 17.6096 12.4422 +H 8.3723 10.8035 4.1743 +O 0.1700 8.5873 3.6576 +H 4.8349 14.7164 9.1710 +O 7.2297 6.3123 15.4579 +H 4.7423 13.5222 10.1181 +O 17.8445 1.1769 18.0284 +H 18.7168 4.3220 13.4669 +O 19.9785 14.0329 19.6222 +H 19.5334 4.9430 10.6401 +O 2.3421 19.9578 16.3319 +H 1.3264 6.0033 0.6903 +O 7.4845 1.7777 12.4450 +H 1.2987 9.3646 2.8789 +O 11.0676 9.2036 6.2996 +H 11.7604 18.1410 6.4511 +O 8.0153 10.8617 15.7497 +H 6.5366 1.2601 7.8751 +O 3.8594 18.7685 0.9497 +H 4.2216 2.0429 8.3282 +O 15.1229 3.6531 5.8183 +H 17.0095 2.2822 16.5540 +O 13.0563 6.4932 5.7930 +H 4.4877 7.5982 15.3122 +O 0.4863 1.5933 5.3789 +H 17.0186 11.5409 7.8571 +O 13.0406 6.3473 0.6697 +H 3.5472 3.6579 18.3647 +O 16.8511 11.8750 10.8537 +H 13.4451 2.9387 17.1306 +O 5.7668 8.4199 8.4992 +H 2.3287 17.9752 13.3874 +O 9.6492 16.9887 3.0561 +H 13.9152 9.9076 5.3883 +O 18.9057 12.7384 1.7331 +H 0.5247 2.7855 1.0000 +O 7.6628 10.4019 4.6666 +H 14.9084 10.2664 15.3026 +O 13.2266 2.3529 3.9343 +H 14.9678 7.8473 1.8050 +40 20.0 20.0 20.0 +frame 436 +O 12.6055 17.3447 11.9650 +H 8.6591 11.1715 4.1965 +O 0.4182 8.3642 3.7980 +H 4.9176 14.7425 9.2830 +O 7.4126 5.9114 15.4104 +H 4.6049 13.6388 9.6774 +O 17.6482 1.1803 17.8974 +H 19.0969 3.9951 13.3401 +O 19.9414 14.1756 19.6486 +H 19.4647 4.9047 10.5662 +O 2.8367 19.7182 15.9665 +H 1.5289 6.2033 0.3839 +O 7.6399 1.4918 12.4291 +H 1.1634 9.3378 2.8578 +O 10.8959 8.9587 6.3610 +H 11.8889 17.9188 6.2115 +O 7.7238 10.9300 15.8034 +H 7.0316 0.6179 7.9701 +O 3.8179 18.5329 1.2292 +H 4.0320 2.2800 8.3500 +O 15.3821 3.2973 5.8906 +H 16.9422 2.3280 16.3032 +O 13.0059 6.4217 5.7641 +H 4.2733 7.3579 15.2545 +O 0.4120 1.1414 5.2963 +H 17.0554 11.4967 7.6515 +O 12.8840 6.2612 0.7950 +H 3.4100 3.8536 17.9482 +O 16.7590 11.4768 11.4958 +H 13.6913 3.2231 17.6287 +O 5.9011 8.7069 8.8377 +H 2.4767 17.6745 13.6022 +O 9.4300 16.3901 3.0538 +H 13.6397 9.9717 5.2933 +O 18.8942 13.1363 1.9292 +H 0.1018 2.6855 0.6818 +O 7.6621 10.3275 4.9752 +H 15.0254 10.2404 15.5844 +O 13.2762 2.3987 3.9246 +H 14.9321 7.7707 1.6190 +40 20.0 20.0 20.0 +frame 437 +O 12.2134 17.2329 11.5050 +H 8.8776 10.8438 4.3825 +O 0.8918 8.6439 3.5031 +H 4.8591 14.7074 9.2932 +O 7.4566 6.4405 15.8103 +H 4.5878 14.2444 9.2826 +O 18.2465 1.5705 17.7438 +H 19.6733 3.7578 13.4616 +O 19.9862 14.0453 0.1409 +H 19.2479 5.0468 10.1738 +O 3.0368 19.8091 15.2142 +H 1.6294 6.1027 0.6447 +O 7.9516 1.2560 12.0595 +H 1.1436 9.3834 2.3269 +O 11.0558 9.8126 6.4474 +H 11.7437 18.1995 6.8325 +O 7.8013 10.6124 15.8095 +H 7.3425 0.2491 7.8016 +O 3.4812 18.7489 1.7305 +H 4.0885 2.0283 9.0193 +O 15.2275 3.3748 5.6670 +H 16.7152 2.4851 16.3068 +O 12.8783 6.5715 6.0795 +H 4.1842 7.7229 15.1113 +O 0.2712 1.0563 5.0582 +H 16.2826 11.4586 7.6635 +O 12.4775 5.9835 1.3650 +H 3.3279 3.9555 17.7312 +O 16.6602 10.4810 11.6203 +H 13.6834 3.5447 17.8180 +O 5.8106 8.6453 8.6764 +H 2.7159 17.3345 13.5755 +O 9.7294 16.7394 3.0699 +H 13.8290 9.8843 4.9828 +O 18.7269 12.8319 1.6064 +H 19.9919 2.7664 0.6587 +O 7.4687 10.1464 4.4673 +H 15.1229 9.1791 15.6042 +O 14.0997 2.7681 3.7513 +H 14.5400 7.4800 1.6425 +40 20.0 20.0 20.0 +frame 438 +O 12.3549 17.2069 11.4100 +H 9.1924 10.3608 4.3252 +O 1.0782 9.1380 3.6379 +H 4.8563 14.6836 9.4499 +O 7.3799 6.1951 15.8056 +H 4.5909 14.4320 9.6041 +O 18.2142 1.2192 17.6569 +H 19.7703 3.5906 13.2643 +O 0.0220 14.3854 0.7606 +H 19.3421 5.2240 10.1518 +O 2.4728 19.6192 15.0538 +H 1.8184 5.7937 0.4567 +O 8.3368 0.9425 12.4280 +H 1.2786 9.7555 2.0562 +O 11.2221 9.3693 6.5081 +H 12.1284 17.7971 6.5791 +O 7.3448 10.9065 16.0623 +H 6.9506 0.3633 7.9934 +O 3.6841 18.8312 1.9161 +H 4.2221 2.0365 9.2671 +O 15.2090 3.5075 5.6136 +H 16.3971 2.3155 16.7714 +O 12.5629 6.4027 5.8110 +H 3.9345 7.5328 14.4908 +O 0.2826 0.8939 4.7965 +H 16.5143 11.4439 7.5828 +O 12.3790 6.3856 1.5686 +H 3.5336 4.2081 17.9450 +O 16.3317 9.8386 11.5069 +H 13.5064 3.4962 17.7281 +O 6.1597 9.3078 8.4398 +H 2.6979 17.0126 13.3905 +O 10.3034 16.9478 3.2135 +H 13.8658 9.8494 5.1932 +O 18.6352 12.4950 1.5447 +H 0.2203 2.8054 0.9497 +O 7.6688 10.3984 4.6040 +H 14.8695 9.1010 15.3319 +O 14.4228 2.6515 3.9475 +H 14.4533 7.3282 1.2430 +40 20.0 20.0 20.0 +frame 439 +O 12.0542 17.4092 11.4288 +H 9.3454 9.9402 3.9511 +O 1.0022 9.0531 3.7496 +H 5.4641 14.5843 9.5759 +O 7.1065 6.2319 15.6320 +H 4.4058 14.3391 9.7783 +O 18.2031 1.3085 17.9164 +H 19.6740 3.8815 13.3893 +O 19.6067 14.2152 0.7146 +H 19.3873 4.9361 10.4479 +O 2.3528 19.5845 15.1355 +H 1.6895 5.3761 0.4579 +O 8.1870 0.6540 13.1928 +H 1.4248 10.1512 2.0080 +O 11.3316 9.6050 6.6433 +H 11.6716 17.9713 6.5035 +O 7.3312 11.0360 16.1724 +H 7.5296 0.1729 8.1877 +O 3.6671 18.6344 2.0068 +H 4.0560 1.9438 8.5331 +O 14.7889 3.3866 5.1794 +H 16.3451 2.1043 16.3189 +O 12.7312 6.5435 5.8154 +H 3.4995 7.0270 14.6552 +O 19.9421 1.1723 4.5169 +H 16.7342 11.2299 7.7527 +O 12.5963 6.6184 1.2891 +H 3.8020 4.3540 18.1700 +O 16.4718 9.7429 11.4029 +H 13.4472 3.4843 17.4687 +O 6.5194 9.2803 8.7293 +H 2.6914 17.3097 13.4722 +O 10.8087 16.8517 3.5930 +H 13.9294 10.1499 5.1745 +O 19.0471 12.3277 1.6653 +H 0.4711 3.1037 0.6824 +O 7.5067 10.3528 4.6755 +H 15.2364 8.8027 15.7401 +O 14.2352 2.4035 4.5595 +H 14.1570 7.1733 0.9573 +40 20.0 20.0 20.0 +frame 440 +O 11.6665 17.2871 11.5637 +H 9.9832 9.3006 4.5812 +O 0.8583 9.3114 4.4077 +H 5.4401 14.2917 9.8358 +O 6.9466 6.6219 15.4916 +H 4.0844 14.1408 9.7726 +O 18.4705 2.1498 17.8686 +H 19.6848 3.5188 12.9753 +O 19.7060 14.2639 0.3708 +H 18.9789 5.0681 10.2247 +O 1.7481 19.4931 15.1931 +H 1.6027 5.4275 0.3878 +O 8.7778 0.6972 13.1437 +H 1.4371 10.0770 2.4481 +O 11.4182 9.1940 6.4559 +H 11.5393 17.8079 6.4632 +O 7.4667 10.3733 16.1973 +H 7.8113 0.1296 8.2375 +O 3.9925 19.1680 2.1608 +H 3.9427 1.6834 8.6406 +O 14.6063 4.1358 4.7690 +H 16.5631 2.4097 16.0684 +O 12.4751 6.5032 6.0617 +H 3.3292 7.1213 14.8649 +O 19.7938 1.3930 4.3381 +H 16.8038 11.5266 7.5411 +O 12.5705 6.2999 1.1921 +H 3.4884 4.7828 18.3247 +O 15.9104 9.7725 10.9495 +H 13.9157 3.8035 17.9818 +O 6.3474 9.4700 8.5855 +H 2.7775 17.3204 13.4924 +O 10.9174 16.8376 3.5389 +H 13.6084 10.2630 5.0985 +O 18.8977 12.4811 1.7456 +H 0.7420 3.3702 0.7095 +O 7.3587 10.1901 4.7566 +H 15.2629 9.2289 16.3910 +O 13.9372 2.3471 4.7018 +H 14.1053 7.0074 0.8111 +40 20.0 20.0 20.0 +frame 441 +O 11.9028 17.1953 11.9660 +H 9.2700 9.5747 4.5796 +O 1.8698 8.9996 4.1578 +H 5.7804 14.3298 9.4358 +O 6.6692 6.4664 15.4812 +H 4.4902 14.2901 9.9407 +O 18.2433 2.2341 17.4059 +H 19.9987 2.9286 13.0275 +O 19.4955 14.4044 0.5669 +H 18.6578 4.7628 10.1697 +O 2.0279 19.1823 15.0461 +H 1.6204 5.3083 0.2880 +O 8.8520 1.0756 13.0580 +H 1.5644 10.0793 2.8203 +O 11.4471 9.0431 6.6322 +H 11.4157 17.2701 6.3101 +O 7.1914 10.3579 15.8943 +H 7.5796 0.6323 8.5217 +O 4.5858 19.6938 2.3308 +H 3.6438 1.5650 8.6340 +O 14.8559 4.4516 4.8821 +H 16.4849 2.5109 16.2374 +O 12.2618 6.2411 5.9704 +H 3.2092 6.7272 14.5889 +O 19.6645 1.1374 4.2417 +H 16.6090 12.0008 7.7431 +O 12.4159 6.3307 0.7938 +H 3.8165 4.2802 18.3386 +O 15.6373 9.7240 11.2064 +H 13.7148 4.0998 18.4539 +O 6.1302 10.0346 8.7283 +H 2.8995 16.8606 13.4057 +O 10.6971 16.9479 3.1462 +H 13.7733 10.1564 5.1151 +O 18.8083 12.3144 1.6394 +H 0.9692 3.3986 0.7527 +O 6.8563 9.9141 4.7517 +H 15.5349 9.8576 16.8001 +O 13.6825 1.9761 4.4871 +H 14.1635 7.2191 1.0226 +40 20.0 20.0 20.0 +frame 442 +O 11.9005 16.8512 11.8770 +H 9.1283 9.6997 5.5193 +O 1.4535 8.8982 4.0377 +H 5.6345 14.1108 9.7584 +O 7.1412 6.5061 15.3983 +H 4.6458 14.1034 9.7567 +O 18.4180 2.1449 17.3316 +H 0.2309 3.4828 12.3782 +O 19.2027 14.8215 0.4413 +H 18.8462 4.3662 9.6945 +O 2.2500 19.1825 14.5952 +H 1.0957 5.6634 0.7688 +O 8.5792 0.6616 13.2819 +H 1.5011 9.8233 3.0756 +O 10.9184 8.9679 6.3058 +H 11.6864 17.5606 6.0589 +O 7.1143 10.3593 15.9471 +H 7.3390 0.5773 8.1571 +O 4.5970 19.9546 2.1047 +H 3.1845 1.7336 8.5100 +O 15.0934 4.3866 4.7611 +H 16.6756 2.1302 16.6260 +O 12.0000 6.1658 6.1342 +H 2.8154 6.6035 14.6756 +O 19.6182 0.6669 4.1104 +H 16.6366 12.5940 7.9803 +O 12.3439 6.0293 0.6183 +H 3.2266 4.6276 18.6258 +O 15.7269 9.0783 11.6284 +H 13.3907 3.9550 18.8050 +O 5.9248 10.2496 8.7303 +H 2.9034 16.8832 13.0461 +O 10.9450 17.0546 2.9218 +H 13.8734 9.7954 5.0335 +O 19.1205 12.1678 1.4801 +H 0.5722 3.3049 0.8384 +O 6.9265 9.6946 4.6583 +H 16.0469 10.3147 16.3907 +O 13.4327 1.9637 4.2591 +H 14.1356 6.8327 0.6385 +40 20.0 20.0 20.0 +frame 443 +O 11.5358 16.8712 11.2138 +H 9.2586 9.7231 5.9539 +O 1.5612 9.0764 4.2705 +H 5.6603 13.9282 9.1389 +O 7.1099 6.5129 15.8264 +H 4.6910 14.0585 9.7871 +O 18.5390 2.0837 17.7149 +H 19.9854 3.1995 11.8539 +O 18.6203 14.3182 0.0344 +H 18.7272 4.6982 9.2313 +O 2.0775 19.3581 14.3921 +H 1.4893 5.4027 0.7181 +O 8.8462 0.5988 13.4476 +H 1.3394 9.8161 3.0788 +O 11.3516 9.0233 6.8797 +H 11.6859 17.3870 6.1715 +O 7.2868 9.9939 15.5881 +H 7.9607 0.1650 8.0696 +O 4.5052 0.0601 2.0742 +H 3.6390 1.5135 8.4469 +O 14.5934 4.5734 4.0951 +H 16.3622 2.2771 16.3059 +O 12.3918 5.9536 5.5761 +H 2.6780 6.4393 14.3513 +O 19.8897 0.5700 3.9879 +H 16.9973 12.0735 7.9558 +O 12.6305 5.8313 0.4496 +H 3.2354 4.5167 18.4767 +O 15.8494 9.3621 12.0701 +H 13.0323 4.1220 18.5573 +O 5.8158 10.5116 8.6739 +H 2.9276 16.6091 13.5490 +O 10.5772 17.3247 3.2499 +H 13.7516 9.4368 5.0675 +O 19.1301 12.5347 1.3241 +H 0.5684 3.3857 0.6796 +O 6.4746 9.9511 4.9801 +H 15.8258 10.0744 16.3634 +O 13.0264 2.1493 4.6391 +H 14.2754 6.5520 0.3529 +40 20.0 20.0 20.0 +frame 444 +O 11.2044 16.5193 10.9575 +H 9.0351 9.6976 6.2385 +O 1.6278 9.1387 4.1696 +H 6.4513 13.8937 9.3074 +O 7.3862 6.3269 16.0082 +H 4.1774 13.6975 9.6297 +O 19.1805 2.5538 17.8529 +H 0.1717 3.0889 11.7493 +O 18.7094 14.3520 19.7740 +H 18.4012 4.4065 9.1323 +O 2.3470 19.5989 14.6634 +H 1.3433 5.2307 0.5838 +O 8.8890 0.7916 13.4186 +H 1.4900 9.8444 3.6856 +O 11.6603 8.9000 7.1737 +H 12.1137 17.5358 6.0270 +O 6.7112 9.5350 15.2131 +H 7.8678 19.8788 7.9998 +O 5.0463 0.3298 1.9674 +H 4.2577 1.9538 7.8163 +O 14.8346 4.5663 4.2219 +H 16.5053 2.2964 16.3506 +O 12.7188 5.8383 5.4757 +H 2.7419 6.2897 13.3343 +O 19.5395 0.1726 3.6477 +H 16.8477 11.6218 7.8715 +O 12.4844 5.7224 0.6682 +H 3.2971 4.6205 18.0833 +O 15.3771 9.5477 12.5083 +H 12.7834 4.1079 18.3922 +O 6.0152 10.6057 8.3425 +H 3.2357 17.1540 13.2700 +O 10.9184 17.1144 3.3427 +H 14.2385 9.0868 5.2564 +O 18.9793 11.9969 1.3245 +H 0.9037 3.8119 0.6392 +O 6.4336 10.1960 5.0353 +H 16.2778 9.8398 16.4949 +O 12.8020 1.6413 4.6055 +H 14.5745 6.3166 0.2266 +40 20.0 20.0 20.0 +frame 445 +O 11.4520 16.4006 10.6472 +H 8.9964 9.4178 6.2650 +O 1.8257 9.1569 4.0387 +H 7.0050 13.7874 9.2175 +O 7.3664 6.6878 15.6568 +H 3.9264 13.9367 9.6547 +O 19.6302 2.5344 17.9846 +H 0.8085 3.0183 11.7996 +O 19.4627 14.5766 19.7906 +H 17.7787 4.1822 9.4347 +O 2.3908 19.1320 14.9179 +H 1.6931 5.8690 0.3472 +O 8.5987 0.9559 13.6180 +H 1.8987 9.6976 3.3496 +O 11.7812 8.6322 7.4420 +H 12.2450 17.0545 6.5618 +O 6.6801 9.3051 15.4708 +H 7.8802 19.6618 7.7372 +O 4.9975 0.0235 2.4580 +H 3.8290 2.2742 7.7686 +O 14.6763 4.0932 4.8558 +H 16.5906 2.2440 16.8116 +O 12.9867 6.4912 5.4192 +H 2.8654 6.3081 13.3577 +O 19.2964 0.5868 3.8863 +H 16.8383 11.8517 7.7368 +O 12.6834 6.2771 0.3992 +H 3.3170 4.5150 17.9495 +O 15.4311 9.4777 12.7475 +H 12.5469 3.6906 18.5732 +O 5.9755 10.6451 8.8358 +H 3.1466 17.1342 13.7518 +O 11.1302 17.3733 3.5794 +H 14.1004 8.6097 5.2897 +O 19.0777 11.3399 0.9582 +H 0.5582 3.1079 0.4741 +O 6.2755 10.6044 4.3342 +H 16.7303 10.1930 16.1276 +O 11.9989 1.5188 4.8881 +H 14.5389 6.4151 0.0769 +40 20.0 20.0 20.0 +frame 446 +O 11.8733 16.1064 10.2299 +H 8.8590 9.2360 6.1263 +O 1.4275 8.7328 3.3060 +H 6.8806 13.4884 9.3684 +O 7.6262 6.5188 15.7616 +H 3.5430 13.8444 9.0234 +O 19.5954 2.6730 17.6927 +H 0.6132 3.2294 11.8839 +O 19.2703 14.7408 19.6439 +H 17.7375 4.6135 9.4863 +O 2.8512 19.0875 15.1250 +H 0.8703 6.0871 19.7952 +O 8.5103 0.9448 13.5236 +H 1.5936 9.9083 3.0754 +O 11.6384 8.4896 7.0081 +H 12.6108 16.9091 6.1271 +O 6.4540 9.9584 14.9579 +H 8.2282 19.5254 7.6412 +O 4.9834 0.1914 2.6090 +H 3.3909 1.8822 8.0805 +O 14.4200 3.8701 4.6648 +H 16.9201 2.5385 16.7277 +O 12.6516 6.1520 5.3472 +H 3.0380 6.3719 13.2419 +O 19.1804 0.4889 3.5213 +H 16.1439 11.7407 7.5489 +O 12.7089 6.3695 0.4529 +H 2.9663 4.3558 17.3602 +O 15.0459 9.0233 12.9794 +H 12.8933 4.4581 18.3441 +O 6.2205 10.4743 8.7000 +H 2.9766 17.3821 13.9457 +O 10.8789 17.7339 3.3891 +H 14.8132 8.2822 5.0276 +O 19.3502 11.4719 1.5869 +H 0.7536 2.9342 0.7021 +O 6.2139 10.4811 4.5672 +H 16.8916 10.4296 16.1051 +O 11.7874 1.6435 5.1085 +H 15.5464 6.6599 0.1316 +40 20.0 20.0 20.0 +frame 447 +O 11.5369 16.4759 9.9133 +H 9.2042 9.3077 6.9146 +O 1.5355 8.7835 3.5958 +H 6.4204 14.0032 8.9166 +O 6.9742 6.6218 16.2044 +H 4.0857 13.9038 8.6773 +O 19.3236 2.8757 16.9794 +H 0.7428 3.3158 11.8899 +O 19.6064 14.9132 19.7208 +H 17.7260 4.3652 9.8155 +O 2.8379 19.3109 15.0104 +H 0.7439 5.7767 19.5595 +O 8.4500 1.0269 13.9029 +H 0.9212 9.8240 3.3380 +O 11.6169 9.2085 7.1782 +H 13.0595 16.6416 6.2374 +O 6.8733 9.8287 14.7928 +H 8.7201 19.3938 7.2608 +O 4.4788 0.0475 2.9576 +H 3.3727 1.3340 8.6457 +O 13.9403 4.2389 4.5577 +H 17.2215 2.5195 16.8779 +O 12.5325 6.3182 5.9790 +H 3.6558 6.0683 13.1411 +O 19.0169 1.0009 3.3984 +H 16.1903 12.1064 7.2856 +O 13.2764 5.7729 0.4543 +H 2.8177 4.0209 17.6994 +O 15.0586 8.7351 13.4969 +H 12.7461 4.7063 18.1929 +O 6.2182 10.5192 8.7417 +H 2.7899 17.2102 14.0763 +O 10.8323 17.3704 3.6242 +H 14.3753 8.1813 5.0500 +O 19.3616 11.2273 1.6000 +H 0.8020 2.5318 0.7774 +O 6.8973 10.2372 4.7847 +H 17.0880 10.6840 15.9938 +O 11.5827 1.7180 4.9675 +H 15.4887 7.0575 0.2883 +40 20.0 20.0 20.0 +frame 448 +O 11.3020 16.4275 9.5837 +H 8.9485 9.3164 6.9483 +O 2.2500 8.9898 3.9952 +H 6.2321 13.8158 9.1303 +O 7.1196 6.8177 15.7390 +H 4.6872 14.2558 8.5621 +O 19.7439 3.0119 17.1266 +H 0.9532 3.4593 11.7164 +O 19.6331 14.7348 19.7823 +H 18.2002 3.8473 9.4368 +O 3.2382 19.6629 15.1822 +H 0.8224 5.8477 19.4782 +O 8.4422 1.2430 14.0755 +H 0.8670 10.0489 3.0337 +O 10.9298 9.1215 7.2099 +H 12.9677 16.3966 5.8892 +O 6.8499 9.5618 14.6128 +H 8.8371 19.5248 7.3780 +O 4.3257 0.1890 2.8438 +H 3.8117 1.2724 8.4640 +O 13.7524 4.6056 5.0757 +H 17.1718 2.6798 16.5252 +O 12.2335 6.2842 5.6750 +H 3.6296 5.9781 13.3132 +O 18.8452 0.7874 3.4125 +H 16.5027 12.0212 7.5059 +O 13.0757 5.7375 0.3482 +H 2.5966 4.3180 18.2088 +O 14.8435 8.9580 13.8680 +H 12.5073 4.0333 18.5903 +O 6.3180 10.3659 8.5631 +H 2.9652 17.1879 13.8916 +O 10.4954 16.9111 3.9109 +H 14.8126 8.3179 4.8356 +O 19.2022 11.3284 1.1597 +H 0.8704 2.9297 1.1137 +O 6.1577 9.9903 5.2361 +H 17.1325 10.7632 15.4871 +O 11.5890 1.8154 5.0782 +H 15.7227 7.1143 0.8853 +40 20.0 20.0 20.0 +frame 449 +O 11.5285 15.9769 9.4174 +H 8.5867 9.7147 6.8186 +O 2.2462 10.0914 4.0013 +H 5.8149 13.5670 9.3075 +O 7.1192 6.6309 16.2633 +H 4.4774 14.6638 8.2476 +O 19.3312 2.8091 17.5464 +H 1.1401 3.7332 11.6783 +O 0.1090 14.0854 19.5761 +H 17.9998 3.2188 9.1872 +O 3.3112 19.6833 15.3985 +H 0.9992 6.0840 19.2171 +O 8.5244 1.6458 13.7694 +H 1.0398 9.8248 2.7927 +O 11.1472 9.0939 6.8548 +H 12.6713 16.3287 5.8206 +O 6.7359 9.0203 14.7726 +H 8.6589 19.5547 7.5133 +O 4.4312 0.3443 2.9187 +H 3.6364 1.2841 8.5973 +O 14.5466 4.5078 5.5644 +H 17.1165 3.2168 16.6351 +O 12.4515 6.2988 5.6268 +H 4.3134 6.0316 13.7146 +O 18.8387 0.1265 4.1188 +H 16.2979 11.4534 7.0724 +O 13.1764 5.7418 0.1975 +H 2.4915 4.2024 17.8848 +O 14.9675 8.8402 14.2656 +H 12.6944 4.0723 18.6890 +O 5.9405 10.0551 8.8522 +H 3.0188 16.9658 13.5866 +O 10.4317 17.1186 4.2584 +H 15.0609 8.1291 5.2674 +O 19.0950 11.1412 1.7526 +H 0.6925 3.0501 1.0117 +O 6.2196 9.6396 4.8726 +H 16.9999 10.2969 14.8192 +O 11.5543 1.3908 5.3811 +H 16.2192 7.2178 0.6504 +40 20.0 20.0 20.0 +frame 450 +O 11.0509 16.2239 9.0287 +H 7.9073 9.8392 6.8551 +O 2.0108 10.5288 3.9252 +H 6.4126 13.4353 9.1468 +O 7.1562 6.7755 16.2613 +H 4.1597 14.2678 8.3966 +O 19.3561 2.1971 17.8638 +H 1.8504 3.3128 11.7622 +O 0.2267 14.2715 19.3819 +H 18.4048 3.4783 8.7852 +O 3.6405 19.6373 15.3225 +H 0.8801 6.0401 18.9156 +O 8.3556 1.4034 13.3915 +H 1.3042 9.8597 3.1159 +O 11.2625 9.4158 6.8841 +H 13.0637 15.8547 5.5789 +O 6.8459 8.9613 15.0034 +H 8.5612 19.2162 7.9291 +O 3.7078 0.3219 2.4058 +H 3.4433 1.2971 8.4812 +O 15.1281 4.3532 5.7064 +H 17.1795 2.9786 16.3957 +O 12.4621 6.8636 5.9141 +H 4.2871 5.8017 13.6128 +O 18.4229 0.5246 4.3788 +H 16.0254 10.8742 6.9411 +O 12.9250 5.9978 0.3533 +H 2.3798 4.6725 17.5836 +O 14.6680 8.7105 14.8472 +H 13.0643 4.0588 18.3042 +O 6.2202 9.7739 8.9042 +H 2.5948 16.6408 13.3091 +O 10.1162 17.4004 4.1601 +H 15.2893 7.8877 5.3541 +O 19.2567 11.1827 2.1383 +H 0.9264 2.7902 0.8279 +O 6.7910 9.2368 4.3310 +H 16.8834 10.6446 14.8361 +O 11.5426 1.2939 5.2079 +H 16.4204 7.3623 0.8650 +40 20.0 20.0 20.0 +frame 451 +O 10.7832 16.1597 8.6418 +H 8.0106 9.3969 6.4400 +O 1.6924 9.6843 3.6322 +H 6.5785 12.7626 9.0992 +O 7.0747 7.0212 16.7936 +H 4.0549 14.3310 8.4861 +O 18.6510 1.9436 17.9389 +H 2.3123 3.2704 11.6517 +O 19.8429 14.6630 19.2111 +H 17.6269 3.1373 8.3777 +O 3.6625 19.9056 15.4420 +H 1.2440 6.3859 19.1370 +O 8.4979 1.8959 13.4537 +H 1.4057 10.2138 3.3886 +O 11.3884 9.7053 6.7267 +H 13.5701 16.1823 5.2265 +O 7.2149 8.8261 14.9910 +H 7.8441 19.3461 7.9790 +O 3.9950 0.5521 2.4306 +H 3.5286 1.3573 8.5150 +O 16.0538 4.4464 5.4066 +H 17.2503 2.8569 16.8079 +O 13.0126 7.1255 6.4570 +H 4.3041 6.0391 13.3675 +O 18.9972 0.6786 4.2920 +H 16.2403 10.5937 7.0108 +O 13.4743 6.2646 0.5802 +H 2.3237 4.7136 17.5843 +O 14.5943 8.4084 14.9185 +H 13.2641 3.7855 18.9539 +O 6.0096 10.1090 9.1856 +H 2.5088 16.9439 13.5668 +O 10.0807 17.5018 3.5497 +H 15.6346 7.9298 5.5011 +O 18.4082 11.1605 2.1792 +H 0.9045 2.7923 0.5764 +O 6.3363 9.4688 4.3960 +H 16.0234 10.7057 14.5908 +O 10.9232 1.1979 5.0632 +H 16.0545 7.3778 0.6532 +40 20.0 20.0 20.0 +frame 452 +O 10.7651 16.2318 8.6011 +H 8.2553 9.4011 6.5682 +O 1.5168 9.8951 3.9922 +H 6.9145 12.6500 8.7260 +O 7.0430 7.1005 16.5638 +H 4.0038 14.5062 8.6040 +O 18.2563 1.3697 18.3746 +H 1.8441 2.7474 11.4076 +O 19.7177 14.1945 19.4616 +H 17.7367 2.8844 8.8674 +O 3.9881 19.9763 15.4770 +H 0.4825 6.0391 19.3091 +O 8.8464 2.2293 13.1844 +H 1.3003 10.0403 4.0158 +O 11.2457 9.2000 6.3945 +H 13.4942 16.2330 5.2776 +O 7.2944 8.9101 15.1360 +H 7.9918 19.6249 7.5555 +O 3.7185 0.9377 2.7781 +H 3.4542 1.7234 8.4843 +O 16.7110 4.7247 5.5197 +H 17.6915 2.9751 16.0959 +O 12.7924 7.4614 6.2947 +H 4.5096 6.0298 13.4302 +O 19.4471 1.1232 4.1947 +H 16.4056 10.4601 7.3027 +O 13.9739 6.8756 0.9082 +H 2.1998 4.1546 18.3057 +O 14.6227 8.2566 14.7639 +H 13.1853 3.5851 19.0694 +O 5.9828 9.9933 9.7586 +H 2.6539 16.8820 13.5315 +O 9.5270 16.9479 3.4733 +H 15.5899 7.8078 5.3562 +O 18.5992 11.1864 2.1761 +H 0.9728 2.5938 0.8356 +O 5.9534 9.2286 4.4203 +H 15.2011 10.5300 14.2610 +O 10.2704 1.8677 4.9192 +H 16.2524 7.4864 0.4291 +40 20.0 20.0 20.0 +frame 453 +O 10.4384 16.1795 8.9011 +H 7.7179 9.2303 5.8776 +O 0.6977 9.6365 4.6640 +H 6.7225 12.8454 8.6732 +O 6.7511 7.4853 16.3243 +H 4.6217 13.8606 8.5392 +O 17.9002 0.9111 18.5027 +H 1.9194 3.2226 11.4767 +O 19.3326 14.4059 19.5923 +H 17.8303 2.9730 8.3757 +O 3.9525 19.9561 15.3357 +H 0.3234 6.0408 19.0922 +O 8.6625 2.3868 13.0073 +H 0.9019 10.0684 3.8015 +O 12.0188 9.7496 5.9902 +H 13.3359 16.5472 4.9165 +O 7.1340 9.0754 15.8470 +H 8.0154 19.4257 7.9322 +O 3.9022 0.7048 2.6506 +H 3.8875 1.5677 9.1129 +O 16.7926 4.2870 5.3435 +H 17.7707 2.4787 16.2867 +O 12.6952 7.4186 6.0279 +H 4.7958 6.0866 13.1524 +O 19.3205 1.3254 4.1354 +H 16.2383 10.1127 7.0651 +O 14.0948 6.4694 1.0948 +H 2.7917 4.2190 18.3331 +O 14.5187 8.2242 14.6320 +H 13.0797 3.8390 19.3955 +O 5.7364 9.9698 9.8006 +H 2.4757 16.6889 12.7986 +O 8.8278 16.9326 3.4824 +H 15.7209 7.3880 5.2599 +O 19.1851 11.1121 2.3397 +H 1.4819 2.4020 1.1406 +O 6.2140 9.0156 5.0618 +H 14.8704 10.4525 14.5279 +O 10.5818 1.4499 4.6850 +H 16.8525 7.2422 19.5386 +40 20.0 20.0 20.0 +frame 454 +O 10.2537 16.0834 9.3541 +H 7.7673 9.6421 5.2097 +O 0.3779 9.2540 4.4536 +H 6.9063 12.6726 8.6407 +O 6.6764 7.8490 16.2986 +H 4.1721 13.9475 8.2235 +O 17.9289 1.0669 18.2706 +H 1.6919 3.0378 11.5067 +O 19.4721 14.4619 19.6651 +H 17.5274 2.9732 8.0923 +O 3.9165 19.8846 15.4675 +H 0.1540 6.3424 18.8504 +O 8.6071 2.3448 12.5886 +H 0.9028 9.8557 4.0346 +O 11.9236 9.5220 5.9473 +H 13.2999 16.0813 5.0667 +O 6.9534 9.1975 15.8093 +H 7.5538 19.7916 8.1131 +O 4.1407 1.1307 2.6448 +H 3.5893 1.8059 9.3158 +O 16.8024 4.1426 5.6788 +H 17.7752 2.2640 16.2552 +O 12.7069 7.3369 5.9225 +H 4.8238 5.5285 13.1332 +O 19.2202 1.4603 4.5811 +H 16.4680 10.0274 6.5474 +O 13.8079 6.4735 1.0509 +H 3.0154 4.1736 18.0068 +O 14.4559 8.3154 15.1664 +H 13.2253 3.5969 19.3439 +O 5.9249 10.0110 9.9710 +H 2.5252 16.7191 13.1554 +O 9.5677 17.0909 3.4274 +H 15.6436 7.2966 5.1526 +O 19.6446 10.9576 3.1244 +H 1.3365 2.6639 1.3653 +O 6.6584 9.1766 4.8122 +H 14.7821 10.2473 14.9957 +O 10.5251 1.8432 4.7158 +H 16.3418 7.4697 19.8918 +40 20.0 20.0 20.0 +frame 455 +O 10.4571 16.0823 9.4461 +H 8.1968 9.8571 5.0983 +O 19.8373 9.8229 4.2172 +H 6.6810 12.2583 8.9822 +O 6.9821 7.8310 16.6796 +H 4.1608 14.3222 7.9266 +O 18.1567 1.3722 18.2931 +H 2.1106 3.0659 11.2431 +O 19.5835 14.4811 0.0687 +H 16.7841 2.7028 7.6344 +O 3.3795 19.7912 15.4670 +H 0.6767 6.8716 18.6411 +O 9.0465 2.0303 12.6612 +H 1.1949 9.8376 4.3872 +O 11.5220 9.1913 5.7621 +H 13.7029 15.7121 5.3166 +O 7.0989 9.5688 15.8805 +H 7.5439 0.3323 7.8412 +O 4.2477 1.1722 2.5865 +H 3.9417 1.5089 9.9322 +O 16.6585 3.7318 5.9740 +H 17.4503 1.9199 16.3540 +O 12.3152 6.9147 5.9988 +H 5.0644 5.7931 12.7552 +O 18.8838 1.1861 4.3063 +H 16.0318 9.9370 7.1450 +O 13.9458 6.4161 1.0893 +H 3.0848 4.0159 17.4364 +O 14.7218 8.1027 15.7913 +H 13.0418 3.2245 18.9371 +O 6.6237 9.9192 9.4623 +H 2.6100 16.7174 13.3297 +O 9.6839 17.0702 3.5142 +H 15.7942 6.9755 5.0573 +O 19.4577 11.4378 2.9399 +H 1.5735 2.5404 1.4551 +O 6.6337 9.8563 5.0601 +H 14.5181 10.5097 15.0869 +O 10.9543 2.3915 4.5306 +H 16.7695 7.3302 19.8509 +40 20.0 20.0 20.0 +frame 456 +O 10.6968 16.3679 9.7166 +H 7.9255 10.0111 5.8725 +O 19.8518 10.1327 4.6242 +H 6.5166 12.1612 9.2940 +O 6.7945 7.8000 16.9458 +H 4.2744 14.1430 7.7593 +O 18.0812 1.2300 17.9437 +H 2.3663 3.4280 11.2058 +O 19.6314 14.6803 0.2106 +H 16.7526 3.1103 8.0882 +O 3.4189 19.8550 15.6982 +H 0.8478 6.9451 18.5217 +O 8.9271 2.4563 12.9005 +H 1.3270 9.8633 4.1836 +O 11.3326 9.2041 5.5516 +H 13.6217 15.8528 5.1798 +O 7.1418 9.9676 16.1262 +H 7.6601 19.9155 7.9753 +O 3.7423 1.4742 2.8187 +H 3.5899 1.3699 9.4834 +O 16.2807 3.6401 5.8781 +H 17.2487 1.7659 16.5880 +O 11.7797 6.8923 6.3235 +H 4.8970 5.5347 13.0765 +O 19.2448 1.6683 4.5787 +H 15.7955 9.8586 7.0374 +O 14.3786 6.1928 1.1346 +H 3.1048 3.9084 17.2724 +O 14.5626 7.9699 15.7343 +H 13.0872 3.6907 19.2362 +O 7.0730 10.0122 9.3638 +H 2.8077 16.7820 13.7160 +O 9.5798 17.3267 3.7106 +H 15.1659 7.2913 5.2380 +O 19.4735 11.7300 3.1400 +H 1.5176 2.3897 1.2482 +O 6.8359 9.7785 4.7289 +H 14.2744 10.4181 15.2116 +O 10.8282 3.0011 4.4758 +H 16.9534 7.2963 19.9347 +40 20.0 20.0 20.0 +frame 457 +O 10.6285 16.3850 9.5352 +H 7.5323 10.3057 6.0876 +O 0.1290 10.1527 4.6320 +H 7.0075 12.2321 9.0508 +O 7.2404 8.1014 17.3375 +H 4.7165 14.1854 8.5319 +O 18.3545 1.5593 18.2305 +H 2.9075 3.3900 11.2355 +O 19.2019 14.6016 19.3258 +H 16.6696 2.8389 7.8872 +O 3.2990 0.1926 15.7054 +H 1.4103 7.1491 18.3647 +O 8.5951 2.3826 12.6702 +H 1.3107 9.6923 4.1834 +O 11.1762 9.4051 5.9341 +H 13.3834 16.4269 4.8788 +O 7.6719 9.7914 16.6076 +H 7.6057 19.5142 7.8354 +O 4.0242 1.3521 3.1654 +H 3.5310 1.3730 9.8653 +O 16.4303 3.4149 6.1844 +H 16.6809 1.6273 16.7463 +O 11.3736 6.7475 6.2874 +H 5.1978 5.4962 12.6676 +O 18.7382 1.5298 5.0456 +H 15.9457 10.1412 7.0192 +O 14.2190 6.0260 1.1215 +H 3.0586 4.4246 16.9850 +O 14.5293 7.6501 15.7557 +H 12.9886 3.5969 18.7501 +O 7.2215 9.7399 9.8015 +H 3.0022 16.3865 12.9451 +O 9.3573 17.6004 3.4175 +H 15.3101 7.0604 5.2218 +O 19.7463 11.7271 3.1852 +H 1.1128 2.1232 1.2362 +O 7.3529 9.6530 4.6500 +H 14.2318 10.9936 15.0322 +O 10.8980 3.1595 4.3782 +H 16.3049 7.4515 19.8154 +40 20.0 20.0 20.0 +frame 458 +O 10.6122 16.8096 9.4277 +H 7.6104 10.1200 6.1249 +O 0.6202 9.9130 4.5866 +H 7.2529 12.9819 8.9547 +O 6.8157 7.7447 17.0459 +H 5.1264 14.0983 8.6998 +O 18.5386 1.4434 18.7912 +H 3.2021 3.3527 10.8003 +O 18.6168 14.3026 19.2583 +H 16.5940 3.0536 8.0365 +O 3.4202 0.4132 15.9965 +H 1.4880 6.8377 18.7074 +O 8.7919 2.2840 13.0472 +H 1.1174 9.8387 4.0557 +O 11.6750 9.0517 6.1027 +H 13.7764 16.2691 5.2869 +O 7.6353 9.7318 16.3954 +H 7.1890 19.5058 8.5845 +O 4.0320 1.3889 2.8766 +H 3.8199 1.4526 9.9682 +O 17.1094 3.5466 6.3946 +H 16.8915 1.3642 17.1823 +O 11.8047 7.2361 5.8900 +H 4.9769 5.4177 12.5085 +O 18.8201 1.8978 4.5617 +H 15.8076 10.0522 6.6355 +O 14.2764 5.5083 1.4211 +H 3.2033 4.5968 17.4113 +O 14.1843 8.0299 15.7308 +H 13.5295 3.5244 18.5192 +O 6.8913 10.1131 10.0550 +H 2.5116 16.4055 13.0096 +O 9.8566 17.6663 3.6912 +H 15.2132 7.1029 5.2082 +O 19.9782 11.4441 3.5326 +H 1.5080 2.0213 0.6964 +O 7.7261 9.4481 3.6780 +H 14.0546 11.5734 14.2663 +O 11.0607 3.1967 4.3536 +H 16.7333 7.5344 0.0365 +40 20.0 20.0 20.0 +frame 459 +O 10.6539 16.3607 9.3254 +H 7.9459 9.8323 6.1402 +O 1.3103 9.9104 4.4043 +H 7.2596 12.9739 8.2571 +O 6.8008 7.8979 17.2303 +H 5.4798 14.4436 8.7686 +O 18.7371 1.8258 18.8664 +H 3.5946 3.3285 10.3015 +O 18.4876 14.7534 19.4861 +H 16.8041 3.2120 8.1067 +O 3.1799 0.9489 15.6715 +H 1.5650 6.9085 18.8427 +O 8.8212 2.7973 13.0655 +H 1.3590 9.4858 3.8731 +O 11.7282 9.3033 5.5624 +H 13.7057 16.0909 5.4615 +O 7.8186 9.4302 16.6312 +H 6.6343 19.3401 8.7139 +O 3.6020 1.4432 2.9319 +H 3.3025 1.5122 9.9465 +O 17.3100 3.8970 6.2869 +H 17.2734 1.5174 17.1445 +O 12.0267 7.1788 5.5792 +H 4.6096 5.2066 12.5592 +O 18.9539 2.5589 3.7892 +H 15.6560 10.1475 6.2148 +O 14.4453 5.2795 0.6170 +H 3.4058 4.9733 17.3767 +O 13.7512 7.6873 15.6775 +H 13.5384 3.6364 18.0170 +O 6.6217 9.6677 10.0643 +H 2.7588 16.3369 12.9416 +O 10.3231 17.2299 3.7991 +H 15.3656 7.4768 5.3364 +O 19.9526 11.9404 3.3124 +H 1.9891 1.6501 0.8563 +O 7.4814 9.3392 3.4776 +H 14.2954 11.6117 14.3229 +O 11.2264 3.1067 4.1000 +H 17.0079 7.8930 19.9988 +40 20.0 20.0 20.0 +frame 460 +O 11.0379 17.1006 9.5047 +H 7.1650 9.6791 6.3341 +O 1.4089 10.1345 5.0208 +H 8.0258 12.7021 8.0126 +O 6.7918 8.0870 17.2909 +H 6.0442 14.0928 8.9064 +O 18.9369 1.7664 18.9566 +H 3.6729 3.2151 10.1533 +O 18.5914 14.3935 19.9865 +H 16.6770 2.8944 8.4663 +O 3.2864 1.1750 15.6264 +H 1.5570 6.6091 18.2412 +O 8.0403 2.8548 12.7648 +H 1.2491 9.3902 4.2269 +O 11.1095 8.7711 5.4476 +H 13.7907 15.7693 5.1393 +O 7.8958 9.2708 16.6442 +H 6.1994 19.6014 8.5266 +O 3.9609 0.7132 2.7820 +H 3.1969 1.9336 10.0176 +O 17.3590 3.6359 5.9276 +H 17.5461 1.6337 17.3286 +O 12.5093 6.7324 5.0039 +H 4.5943 5.1392 12.4019 +O 18.4960 2.8082 3.8733 +H 15.9869 9.5618 6.4725 +O 14.3625 5.9561 0.4488 +H 3.3009 5.0202 17.4048 +O 13.0618 7.8385 15.6332 +H 13.1605 3.5407 18.5753 +O 5.7254 9.8750 10.0632 +H 2.2621 16.0168 12.7395 +O 10.1589 17.5248 4.2976 +H 15.6290 7.1191 5.4643 +O 19.9376 11.1638 3.8040 +H 2.0103 1.8733 1.1022 +O 6.6936 9.3919 3.4092 +H 14.0764 11.8692 14.6297 +O 11.3191 3.6252 4.0188 +H 16.7607 8.1289 19.6347 +40 20.0 20.0 20.0 +frame 461 +O 10.6838 16.5182 9.4435 +H 7.1453 10.3074 6.5980 +O 1.5684 9.9257 5.1131 +H 8.0414 12.6983 8.3369 +O 6.6651 8.6849 17.2992 +H 5.4376 13.5507 8.9264 +O 18.9171 1.8242 19.4115 +H 3.6570 3.4682 9.7511 +O 18.0720 14.0043 0.0485 +H 16.8683 3.1388 7.9207 +O 2.7165 1.0375 15.2711 +H 1.2536 6.3473 17.6293 +O 8.2987 3.2456 13.3055 +H 1.1439 9.3778 4.8768 +O 11.3346 8.8821 5.4402 +H 13.6512 15.3680 5.4068 +O 7.9866 9.0918 17.1393 +H 5.8261 19.6264 8.7362 +O 3.8859 0.5462 2.8975 +H 3.0473 1.8706 10.0363 +O 18.0190 3.7951 5.5193 +H 18.0733 1.7371 17.5565 +O 12.8058 7.0933 5.1450 +H 5.2342 4.9769 12.7814 +O 18.3019 3.3315 4.1507 +H 15.8160 9.0667 6.6176 +O 13.3272 5.7182 0.5408 +H 3.7607 5.2742 17.3062 +O 12.8011 7.7989 16.0942 +H 12.9728 3.4994 18.1933 +O 5.4545 9.8474 10.3255 +H 1.9739 16.1845 12.8285 +O 9.8052 17.1979 4.7029 +H 14.9641 7.0052 5.7434 +O 0.0164 11.0101 3.5660 +H 2.1908 2.0584 1.4184 +O 6.2827 9.0726 3.1705 +H 14.1260 11.6434 14.5226 +O 11.2534 3.7077 4.0846 +H 16.8998 7.8141 19.5263 +40 20.0 20.0 20.0 +frame 462 +O 11.2984 16.6557 9.0699 +H 7.2762 10.1145 6.6456 +O 1.4388 10.0771 4.6749 +H 8.0845 12.4150 8.0195 +O 6.5399 8.6492 17.6053 +H 5.4956 13.1628 8.8452 +O 19.2222 2.4242 18.6009 +H 4.0485 3.8109 9.3055 +O 17.9421 13.6865 19.3662 +H 16.7693 2.9055 8.4653 +O 2.8622 0.8934 15.3052 +H 0.9688 6.4114 17.4031 +O 7.7319 3.0091 13.5184 +H 0.9839 9.2845 4.8839 +O 11.3452 8.9792 5.3230 +H 14.1201 15.8456 5.7543 +O 7.7331 9.2514 17.3054 +H 5.6265 19.3396 8.7666 +O 4.1489 0.3293 2.9322 +H 2.8664 2.0555 9.6320 +O 18.4723 3.3943 5.2768 +H 18.6939 1.4102 17.2482 +O 13.1664 6.7522 4.9073 +H 5.3713 4.5518 12.5018 +O 18.6782 2.8361 4.4230 +H 15.7693 9.1536 6.5978 +O 13.2170 5.4431 0.3976 +H 4.0276 5.6966 17.4296 +O 13.0904 8.1449 15.8859 +H 12.7705 3.1339 18.3595 +O 5.5497 9.6078 10.5456 +H 1.9359 16.1309 12.6002 +O 9.6129 17.5000 4.8967 +H 14.9310 6.9943 5.5095 +O 0.0914 11.3902 3.2091 +H 2.7508 2.2530 1.8488 +O 5.9666 9.2119 2.9356 +H 14.4706 11.3650 14.8287 +O 11.3430 3.9725 3.9539 +H 16.6495 7.7491 19.1452 +40 20.0 20.0 20.0 +frame 463 +O 10.9449 17.2507 9.1701 +H 7.1377 10.3179 6.4803 +O 0.9837 9.8536 4.4545 +H 7.7708 12.6373 7.4741 +O 6.9297 8.9827 17.6540 +H 5.5820 12.7319 9.0486 +O 19.6480 2.5348 18.9175 +H 4.2021 3.1112 9.2643 +O 17.8465 13.6903 19.0252 +H 17.0514 2.4954 8.3844 +O 2.5487 0.8442 15.5078 +H 1.2188 6.4730 17.9883 +O 8.3387 2.9297 13.1688 +H 1.0547 9.6813 5.0709 +O 11.3825 9.6612 5.3066 +H 14.0407 15.6890 4.9256 +O 7.8632 9.2515 17.6429 +H 5.6820 19.6606 9.2405 +O 4.3443 0.4529 3.5133 +H 3.0273 1.8412 9.9438 +O 18.1058 3.4366 5.5072 +H 18.6027 1.2594 17.1544 +O 12.8215 6.5594 5.4237 +H 5.4257 4.3769 12.0776 +O 18.2038 2.8280 4.3756 +H 15.7312 9.1289 6.5739 +O 13.4293 5.0966 0.1740 +H 4.2660 5.8133 17.3218 +O 12.6647 7.7441 15.9277 +H 12.7130 3.3543 17.7980 +O 5.6083 10.0117 10.3776 +H 2.3140 15.8995 13.0754 +O 8.8209 17.4078 4.8277 +H 15.2724 6.9258 5.0906 +O 0.4128 11.8992 2.9432 +H 2.6963 2.2831 2.1049 +O 5.6821 8.4921 2.7886 +H 14.4504 11.4648 14.8671 +O 11.3232 3.7816 4.6273 +H 16.2995 8.0918 19.5308 +40 20.0 20.0 20.0 +frame 464 +O 10.7872 17.4577 8.9398 +H 6.7993 10.0291 6.1373 +O 1.0469 10.0550 4.4913 +H 7.8108 12.7669 7.2408 +O 6.7798 9.2415 17.5963 +H 6.0427 13.2764 8.6350 +O 19.7108 2.5755 19.2611 +H 4.3561 2.7356 8.8977 +O 18.1510 13.9795 18.9055 +H 17.4400 2.0336 8.5227 +O 2.1778 0.0963 15.1991 +H 1.2073 6.6062 17.8985 +O 8.2444 2.8181 13.6163 +H 1.3275 9.3586 4.7033 +O 10.9929 9.6121 5.1947 +H 13.8245 15.8036 4.6937 +O 7.5840 9.7371 16.9912 +H 6.4243 19.8710 9.1108 +O 4.2037 0.4080 3.2006 +H 2.6672 1.7891 10.7348 +O 18.3515 3.5261 6.2844 +H 18.7062 1.3635 16.9540 +O 13.2415 6.5246 5.7819 +H 5.0483 4.3310 11.9735 +O 18.2052 2.7047 4.3929 +H 15.8090 9.3847 6.5011 +O 13.2284 5.2197 0.4797 +H 4.2122 5.8523 17.4732 +O 12.5327 7.7753 15.9583 +H 12.2313 3.2804 17.9152 +O 5.1944 9.6810 10.2908 +H 2.3555 16.1298 13.4255 +O 9.1656 16.6079 4.5307 +H 15.2991 7.0683 5.3790 +O 0.2039 12.6125 3.3185 +H 3.1034 2.4315 2.8169 +O 5.8741 8.8770 2.5087 +H 14.1643 11.3281 14.8641 +O 11.0751 3.7526 4.3541 +H 16.3925 7.6542 19.4817 +40 20.0 20.0 20.0 +frame 465 +O 10.8238 17.6118 9.0001 +H 6.8776 10.2572 6.4151 +O 0.7918 9.9777 4.6187 +H 7.5531 12.6263 6.9117 +O 6.3559 9.6516 18.0135 +H 5.6778 12.6059 8.8226 +O 0.1272 2.6862 19.4644 +H 4.3794 2.7699 8.3790 +O 17.7411 13.4976 19.1721 +H 16.6720 1.6969 8.9180 +O 2.0735 0.2049 15.0427 +H 1.5728 6.6779 17.8680 +O 8.6574 2.5329 14.2154 +H 1.6784 9.5678 4.4325 +O 11.3507 9.8929 4.9949 +H 13.3342 16.3260 4.5801 +O 7.5995 9.7317 17.1594 +H 6.7722 19.8856 9.2694 +O 4.1379 0.0735 3.5511 +H 2.7202 1.9486 10.8351 +O 18.3719 3.4524 6.1470 +H 18.2320 1.4478 17.1770 +O 13.2179 6.4113 5.8030 +H 4.4960 4.1944 12.0257 +O 17.8687 3.2059 3.9899 +H 15.9493 9.2361 6.5602 +O 13.1823 5.0089 0.6228 +H 3.8983 6.1609 17.2639 +O 13.0014 7.8013 15.8677 +H 12.4989 3.2828 18.3084 +O 5.4486 9.6290 10.1609 +H 1.7777 16.7222 13.1376 +O 9.5005 17.2781 4.6450 +H 15.0245 7.0077 5.6221 +O 19.8010 13.1209 3.5645 +H 2.8229 2.3257 2.6701 +O 5.8997 8.7971 2.2634 +H 14.0840 11.2135 14.4841 +O 10.8799 3.9209 4.0428 +H 16.1635 7.3763 19.2324 +40 20.0 20.0 20.0 +frame 466 +O 11.2647 17.5022 8.9040 +H 7.0387 10.4430 6.1880 +O 1.0279 9.7700 4.1184 +H 7.5343 12.8632 6.9501 +O 6.3755 9.3127 17.7119 +H 5.5981 12.6452 9.2249 +O 0.2885 3.2362 19.4576 +H 4.5452 2.8560 8.5079 +O 17.7161 13.5201 19.2779 +H 16.8710 1.6702 8.8196 +O 2.2521 0.3367 14.9927 +H 1.3633 6.7882 18.1211 +O 8.8325 2.5736 14.2532 +H 1.3635 9.5565 4.5374 +O 11.5156 10.3932 4.8085 +H 12.8024 15.9064 5.0165 +O 8.0445 9.7344 17.7246 +H 6.9752 19.6016 9.1858 +O 4.6022 0.0803 3.6282 +H 2.9094 1.9807 10.9924 +O 18.3949 3.7059 6.1660 +H 18.3196 1.2287 17.0475 +O 12.6782 5.7560 5.9791 +H 4.5343 4.3711 11.9550 +O 18.4144 3.2167 4.1536 +H 15.7381 9.6249 6.4948 +O 13.4023 5.0295 0.2794 +H 4.1743 6.2246 17.5817 +O 12.5811 7.4933 15.5832 +H 12.6947 3.3781 18.7047 +O 5.2669 9.7115 10.3890 +H 1.5992 16.4491 13.4753 +O 9.5521 17.2549 4.7798 +H 14.7921 7.0308 5.6840 +O 19.8726 12.4162 3.6694 +H 3.1510 2.8452 2.9099 +O 5.6651 8.3573 2.3027 +H 14.0690 10.6269 14.6561 +O 11.3335 4.0310 4.0549 +H 15.9119 7.1907 18.9034 +40 20.0 20.0 20.0 +frame 467 +O 10.7335 17.6409 8.5798 +H 7.2198 10.4937 5.8745 +O 0.9628 9.8724 4.6871 +H 6.9875 12.7560 6.4935 +O 6.5960 9.4626 17.0391 +H 5.4282 12.8543 8.8932 +O 0.0335 2.7656 19.4042 +H 4.0373 2.8118 8.4398 +O 17.6791 13.7387 19.3940 +H 17.2177 1.6730 9.2545 +O 2.4472 19.8187 15.0064 +H 1.6722 6.6021 18.3485 +O 8.9265 2.2521 13.6179 +H 1.2300 9.4455 4.5159 +O 11.8339 10.4716 5.0580 +H 13.0648 15.4537 5.3826 +O 7.8696 9.8932 17.6446 +H 6.5656 19.1824 9.0167 +O 4.3823 19.9376 3.5940 +H 2.9939 2.1906 11.4490 +O 18.6580 3.4704 5.7708 +H 18.9388 1.0385 17.3694 +O 12.7581 5.6529 6.1850 +H 4.6549 4.4971 12.2490 +O 18.4745 3.2630 3.8839 +H 16.3949 9.5685 6.7902 +O 12.8653 4.6351 0.1816 +H 4.3695 6.5636 17.3264 +O 12.5157 7.6314 16.3236 +H 12.2584 3.2016 18.6616 +O 5.3172 9.1667 10.9885 +H 1.5406 16.3935 13.1803 +O 9.9716 17.1287 5.5480 +H 14.7752 7.5385 5.9796 +O 0.3769 12.6877 3.8789 +H 2.8629 2.8535 3.0464 +O 5.0014 8.4575 1.6550 +H 14.1825 10.2257 14.1601 +O 11.6000 3.9128 3.9534 +H 16.1981 6.9179 18.9190 +40 20.0 20.0 20.0 +frame 468 +O 10.3392 17.4688 8.7474 +H 6.7517 10.8714 5.9351 +O 1.1958 10.3165 4.2631 +H 7.1915 13.0140 6.8314 +O 6.8654 9.7255 16.9969 +H 5.4980 12.9078 9.1148 +O 0.2527 3.4591 19.5137 +H 4.3222 3.1160 8.8984 +O 17.8711 13.6617 19.2938 +H 16.9915 1.3157 9.2575 +O 2.7241 19.9776 15.1533 +H 2.2384 6.4009 18.8656 +O 8.9466 2.0703 13.4591 +H 1.2029 9.6674 4.4429 +O 11.6933 9.8599 4.9786 +H 13.1597 14.9808 5.4264 +O 7.8912 10.4668 17.1950 +H 6.6409 18.9361 8.7196 +O 4.3348 0.0747 3.5771 +H 2.9040 2.4373 11.7266 +O 18.4631 2.9815 5.2703 +H 18.8563 1.1947 17.6583 +O 13.6136 5.8609 6.8035 +H 4.5211 4.8982 12.0707 +O 18.1944 3.2658 3.8686 +H 16.4219 9.3564 7.0692 +O 12.9522 4.5248 0.9048 +H 4.2428 6.1993 17.0993 +O 12.5994 7.5503 16.2502 +H 12.5457 3.7195 18.5213 +O 4.4794 9.0166 10.6364 +H 1.7192 16.1092 12.7908 +O 9.8888 16.6766 5.7395 +H 14.3361 7.7265 6.1357 +O 0.4594 12.4109 4.1815 +H 2.9459 2.8320 2.6997 +O 5.0276 8.0407 1.4744 +H 13.8412 10.4139 14.2142 +O 11.9180 4.4093 4.0659 +H 15.6637 7.1443 18.9564 +40 20.0 20.0 20.0 +frame 469 +O 9.9469 16.9259 8.8335 +H 6.8581 10.3533 6.2335 +O 1.5788 10.1987 4.5969 +H 6.7798 12.8020 6.7621 +O 6.7443 9.5006 16.6346 +H 5.3740 13.0771 9.5404 +O 0.1823 3.2584 19.0710 +H 4.8784 3.0759 9.2468 +O 17.5729 13.7421 18.6945 +H 16.9946 1.4898 8.9984 +O 2.8578 0.5697 15.2519 +H 2.1212 7.0336 18.6791 +O 9.1979 1.7630 13.2913 +H 0.9907 9.2282 4.5821 +O 11.4867 9.3153 5.0572 +H 13.6116 15.1821 5.2112 +O 7.8607 10.1090 17.2329 +H 6.7077 18.9505 8.4289 +O 3.8646 0.5389 3.7093 +H 2.8371 2.4247 11.7400 +O 18.3045 3.1800 5.1467 +H 18.9405 1.7832 17.1469 +O 13.0203 6.1253 6.9876 +H 4.7448 4.6108 12.3132 +O 18.1226 2.7435 3.9265 +H 16.6521 9.7500 6.9748 +O 12.6221 4.8042 0.9386 +H 4.8601 6.6991 16.6469 +O 12.1845 7.5330 15.9696 +H 12.3510 4.3542 18.4651 +O 4.3615 9.1191 10.8781 +H 1.7986 16.3613 12.9235 +O 9.5890 16.7175 6.2126 +H 14.3809 6.9740 5.9808 +O 0.3452 12.0212 4.1189 +H 2.9345 2.5510 2.6211 +O 4.6752 8.0971 1.1081 +H 13.2095 10.7217 14.1150 +O 11.5121 4.3664 4.0494 +H 15.3062 6.9695 18.9211 +40 20.0 20.0 20.0 +frame 470 +O 10.4763 16.6864 8.8278 +H 6.9396 10.5582 6.0098 +O 1.3340 10.2413 5.0283 +H 6.8981 12.6895 7.0799 +O 7.1288 9.8485 16.1992 +H 5.5709 12.9982 9.1844 +O 0.2129 3.1912 19.0708 +H 4.6563 2.8205 9.1322 +O 17.5958 14.2406 18.7726 +H 17.4931 1.8663 9.1593 +O 3.1048 0.6972 14.6495 +H 2.3745 6.8132 18.4697 +O 9.1075 1.4890 13.1299 +H 1.4422 8.9601 4.3107 +O 11.3460 9.4330 5.6005 +H 14.1322 14.8867 4.6680 +O 8.3378 9.5535 17.1240 +H 6.8765 18.6799 8.3561 +O 3.6525 0.5318 3.2786 +H 2.4722 2.0189 11.7070 +O 18.4635 2.6754 5.0277 +H 18.7413 1.3709 17.0520 +O 12.7574 5.8709 6.7264 +H 4.5906 4.4212 12.3042 +O 18.2191 2.3666 3.5944 +H 17.0540 10.2519 6.9193 +O 13.0361 4.9802 1.0868 +H 4.8441 6.4396 16.8748 +O 11.9439 6.8829 16.2089 +H 12.4853 4.0194 18.7590 +O 4.3420 9.1633 11.0013 +H 1.8225 16.3371 13.0411 +O 10.0217 16.4371 6.6554 +H 14.8153 7.3998 6.0281 +O 19.9160 12.5623 3.9009 +H 2.5214 3.3861 2.8466 +O 4.7001 8.0831 1.3925 +H 12.7385 11.1573 14.3528 +O 11.4242 4.1829 3.8495 +H 15.4901 6.6948 19.8219 +40 20.0 20.0 20.0 +frame 471 +O 10.7740 16.5505 8.6754 +H 7.2739 10.1334 5.6267 +O 0.9121 10.3939 5.1027 +H 6.9015 12.7080 7.5047 +O 6.9060 9.6944 16.4716 +H 5.7174 12.9971 9.1149 +O 0.1240 3.5535 19.3054 +H 4.7092 2.7821 8.9056 +O 17.4114 14.3944 18.4880 +H 17.5414 2.0182 9.1284 +O 3.2119 0.7733 14.4491 +H 2.0137 6.6805 18.6093 +O 8.9998 1.4533 13.3342 +H 1.8439 9.3562 4.1827 +O 11.3318 9.5409 5.1796 +H 13.9241 14.7626 4.6683 +O 7.9647 9.5014 16.9118 +H 7.2502 18.4498 8.3191 +O 4.0325 0.1274 3.4218 +H 2.8505 1.7941 11.6446 +O 18.6173 2.4051 5.3676 +H 19.0416 1.2990 16.5190 +O 13.4007 5.6810 6.2737 +H 4.9347 4.6533 12.0777 +O 18.0419 2.3287 3.8164 +H 17.0922 10.9301 6.6068 +O 13.1055 4.7319 0.4275 +H 4.7623 6.5767 16.8998 +O 12.2756 7.0114 16.0947 +H 13.2877 3.9299 18.7827 +O 4.6046 9.5303 11.0298 +H 1.4742 16.1336 13.1710 +O 10.1782 16.3564 6.6650 +H 15.1464 7.5628 6.3294 +O 0.1835 12.4948 3.7806 +H 2.1514 3.6308 2.3732 +O 4.6998 7.9211 1.1964 +H 12.7348 11.0672 15.1348 +O 10.8960 3.6737 4.1255 +H 15.9007 6.3148 18.9376 +40 20.0 20.0 20.0 +frame 472 +O 10.6621 15.7759 8.2623 +H 7.3813 10.2847 5.4542 +O 0.9371 10.3459 5.5468 +H 6.4611 12.4892 7.1843 +O 6.8881 9.4770 17.0841 +H 5.0738 13.1104 8.7155 +O 0.7015 4.4604 19.2334 +H 5.2140 2.6843 8.6974 +O 17.4975 14.0669 18.8682 +H 17.8460 2.4332 8.4008 +O 2.9710 1.2151 14.2615 +H 1.7800 7.1576 18.6057 +O 9.0259 1.4679 13.0698 +H 1.9148 9.0976 4.4488 +O 10.8636 9.5421 5.5263 +H 13.8662 15.6218 4.8612 +O 7.7746 9.3151 16.6842 +H 7.2547 18.3186 8.4291 +O 4.2104 0.2843 3.6731 +H 2.6845 1.6034 12.0894 +O 18.9834 2.0196 5.6588 +H 18.7557 0.9975 16.6504 +O 13.2863 5.9955 5.7996 +H 5.4145 4.5675 12.5204 +O 18.0263 2.0683 3.6075 +H 17.1968 10.6281 6.9116 +O 12.9072 4.8387 0.8860 +H 4.5694 6.2402 17.0324 +O 11.8968 6.7252 16.3208 +H 13.3466 3.7445 19.5054 +O 5.0014 9.1566 11.2528 +H 1.7382 16.4227 13.1261 +O 9.4381 16.7241 6.8011 +H 15.3036 7.8686 6.1384 +O 0.4667 12.6513 3.7155 +H 2.0497 3.5660 2.0302 +O 4.5610 8.2126 0.8858 +H 12.7717 10.8314 14.9478 +O 11.0185 3.9302 4.4111 +H 16.0696 6.3859 18.6998 +40 20.0 20.0 20.0 +frame 473 +O 10.5592 15.7219 8.3609 +H 7.3774 10.4090 5.8352 +O 0.7485 10.4895 5.6640 +H 6.6402 12.6077 6.9821 +O 6.3225 9.5978 17.0212 +H 4.8059 13.7899 8.9382 +O 0.4071 4.5235 19.3308 +H 5.4823 2.4474 8.8021 +O 17.2697 13.8166 18.7453 +H 17.9125 2.5831 8.5003 +O 3.0454 0.8466 14.3513 +H 1.7789 6.7566 18.2833 +O 9.1544 1.1517 13.2031 +H 1.9378 9.2375 4.0766 +O 10.6402 9.8011 5.9728 +H 13.7199 15.4023 4.6530 +O 7.9692 9.0506 17.0401 +H 7.1228 18.3663 8.4722 +O 4.1995 0.1709 3.3875 +H 3.1434 1.6780 11.8171 +O 19.4129 2.0635 5.8224 +H 18.7803 1.2116 16.7028 +O 12.9644 5.9065 5.9605 +H 5.1936 4.5910 12.7685 +O 17.9133 2.1833 3.5842 +H 17.2786 10.4270 6.7836 +O 12.4302 5.0300 1.2867 +H 4.0911 6.8792 16.8318 +O 11.2865 6.7780 17.0508 +H 13.2940 4.2085 19.8722 +O 4.7457 8.8870 10.7481 +H 1.9768 16.7947 13.6514 +O 9.5994 16.4556 6.5476 +H 15.0361 7.7995 6.0388 +O 0.4096 12.7067 3.6175 +H 1.8888 3.8783 1.8205 +O 4.4370 8.6018 0.9594 +H 12.3704 10.4362 14.6398 +O 11.1033 3.6379 4.3082 +H 16.2718 6.8254 18.2070 +40 20.0 20.0 20.0 +frame 474 +O 10.9538 15.2384 8.6872 +H 7.2904 10.4368 5.9435 +O 0.8403 10.4125 5.6045 +H 7.2818 12.7038 7.1301 +O 6.5239 9.6865 17.3506 +H 4.2226 14.2386 8.7765 +O 0.4647 4.5736 19.7653 +H 5.5479 2.3159 8.9193 +O 17.3308 13.9774 19.3506 +H 17.7335 2.1766 8.5308 +O 3.0291 0.5329 14.6337 +H 2.0769 6.7874 18.4473 +O 9.1786 1.1376 13.5051 +H 2.1063 9.5679 3.7786 +O 10.4323 10.0161 5.9144 +H 13.9660 15.6634 4.3996 +O 7.9595 9.3202 16.9294 +H 7.1940 18.3734 8.1044 +O 3.9453 0.0730 3.8188 +H 3.2494 1.2810 11.0616 +O 18.4640 1.9983 6.2606 +H 18.8564 1.3113 17.5090 +O 12.5427 6.2970 6.1150 +H 4.8670 4.8930 12.3162 +O 17.7821 2.0979 3.7494 +H 17.6264 10.2456 6.3569 +O 12.1683 5.0448 1.2644 +H 3.5279 6.9639 17.0016 +O 11.5453 6.9487 17.1403 +H 13.3101 4.3648 0.3447 +O 4.3410 8.3758 11.6434 +H 1.9481 17.5592 13.6202 +O 9.6621 16.4355 6.4581 +H 15.1741 7.8132 6.2165 +O 0.2686 13.2368 4.0915 +H 1.5632 4.1668 1.8991 +O 4.0661 8.8682 1.0098 +H 12.0258 9.8975 14.6376 +O 11.7624 3.6764 4.4335 +H 16.4671 6.7526 18.3505 +40 20.0 20.0 20.0 +frame 475 +O 10.7290 15.3991 8.6848 +H 7.2467 10.8450 5.9409 +O 0.7777 9.8836 5.2437 +H 6.9766 13.1462 7.3662 +O 6.4658 9.7657 18.1120 +H 4.0540 14.5480 8.8081 +O 0.4681 4.8318 0.4930 +H 5.7509 2.3968 9.2229 +O 17.2569 13.8400 19.1744 +H 17.6775 2.3866 8.5740 +O 2.7810 0.7273 14.7254 +H 2.0223 5.8561 18.6524 +O 9.1813 0.9753 14.1568 +H 2.1296 9.1625 3.6110 +O 10.7091 10.0883 6.1031 +H 14.0713 15.3234 4.2882 +O 7.6913 8.9373 16.8250 +H 7.4888 18.5091 8.4005 +O 3.6933 19.9953 3.7576 +H 3.4726 1.6399 10.9796 +O 18.4467 1.7290 6.3506 +H 18.8223 1.2070 17.6159 +O 12.5472 6.5988 5.8841 +H 4.3017 4.5360 12.1681 +O 17.8252 2.3429 3.9890 +H 17.3594 9.9059 6.2802 +O 12.1102 5.2196 1.9736 +H 3.4602 7.2548 17.1130 +O 11.8289 6.9123 16.9252 +H 13.4655 4.1398 0.3281 +O 4.1641 8.3898 12.1088 +H 1.5685 17.4635 13.7859 +O 9.5656 16.3047 6.5353 +H 14.5665 7.7287 6.2476 +O 0.5574 13.5532 3.7383 +H 1.0745 4.1957 1.8871 +O 3.8100 8.7386 1.2418 +H 12.0647 10.3465 14.5199 +O 11.9638 4.0926 4.3768 +H 16.6783 6.4817 18.0138 +40 20.0 20.0 20.0 +frame 476 +O 10.7765 15.3062 8.8647 +H 7.0953 11.3671 5.8128 +O 0.7019 9.6905 5.1175 +H 6.7636 13.2744 7.1670 +O 6.4969 9.9799 17.9677 +H 3.9464 14.3254 8.5916 +O 0.7957 4.5995 0.3539 +H 5.6826 2.0718 9.2225 +O 17.8046 13.8501 19.6060 +H 17.5572 2.5331 8.7548 +O 2.1877 0.5081 14.7669 +H 2.1439 5.4519 19.2244 +O 9.2029 1.1798 14.1940 +H 1.7335 8.7326 3.6138 +O 10.8857 9.8482 5.5154 +H 14.2707 15.2530 4.2714 +O 7.2123 9.0435 16.8005 +H 8.0688 18.7882 8.5024 +O 3.4196 19.5576 3.3369 +H 3.5456 1.4336 11.0326 +O 18.1623 1.7393 6.7454 +H 19.1781 1.3518 17.9426 +O 12.1627 7.1282 5.7803 +H 4.4594 4.5589 12.2689 +O 17.8778 2.6840 4.0284 +H 17.1304 9.9096 6.3405 +O 11.7898 5.2078 2.3555 +H 3.3503 6.6740 17.1191 +O 11.1960 6.5353 16.8394 +H 13.9809 4.0734 0.5334 +O 3.9722 8.1313 12.3122 +H 1.5010 17.9861 14.1374 +O 9.7304 16.1713 6.4829 +H 14.5141 7.6325 6.1480 +O 0.7862 13.2320 3.6001 +H 0.6234 3.9542 2.1386 +O 3.8124 9.0522 0.8766 +H 12.2902 10.4468 14.5941 +O 11.9035 4.2438 4.4041 +H 16.9955 6.3205 18.2199 +40 20.0 20.0 20.0 +frame 477 +O 11.1440 15.4970 9.5209 +H 7.1343 11.6243 5.7721 +O 0.7682 9.6882 5.3119 +H 6.4217 13.0950 7.2170 +O 6.2491 9.8772 17.3607 +H 3.9067 14.3002 8.4230 +O 0.5548 4.2866 0.5729 +H 5.9935 2.1468 9.2701 +O 18.0290 14.5575 19.9445 +H 17.9207 2.4659 8.3342 +O 2.1646 0.6593 14.4544 +H 2.0892 5.5637 18.9844 +O 9.5358 1.2591 14.3082 +H 1.6602 9.0944 3.1780 +O 10.7034 9.5376 5.2040 +H 13.7396 15.6064 4.6287 +O 7.1791 9.5982 17.0663 +H 8.2000 18.7444 8.1966 +O 3.4840 19.5697 2.6165 +H 3.6856 1.2738 10.9823 +O 18.2099 1.7764 7.0705 +H 19.0566 1.4935 17.9586 +O 12.4438 7.1770 6.0478 +H 4.3024 4.9610 12.1810 +O 18.1204 2.8950 3.7664 +H 17.4592 10.3421 6.6527 +O 12.0093 4.5714 2.7876 +H 3.4660 6.6411 16.4768 +O 11.7385 6.9743 16.9841 +H 14.3859 3.8157 0.7476 +O 4.2420 7.9261 12.0838 +H 1.7108 17.8959 13.7721 +O 9.7757 16.1802 6.5153 +H 14.3239 7.8855 5.9681 +O 1.0095 13.1000 3.4220 +H 0.7045 3.9249 1.7712 +O 3.8729 9.2117 1.0141 +H 12.4409 10.4550 14.8149 +O 11.3096 4.5246 4.9669 +H 16.5697 6.5989 18.0055 +40 20.0 20.0 20.0 +frame 478 +O 11.6619 14.8904 9.6589 +H 6.7409 11.4813 5.1363 +O 0.8595 9.0628 5.1064 +H 6.4235 12.8686 6.7666 +O 5.9003 9.7628 17.1737 +H 3.6464 13.8064 8.4810 +O 0.0857 4.6324 0.7119 +H 6.1651 2.4275 8.6510 +O 17.8438 14.4882 19.6934 +H 17.8448 2.4979 7.9733 +O 2.0847 0.2668 14.3110 +H 2.4534 5.0211 18.8087 +O 9.5700 1.3995 14.1932 +H 1.2324 9.3675 3.0369 +O 10.4712 9.1863 5.1806 +H 12.7965 15.0233 5.0764 +O 7.1921 9.8609 17.1777 +H 8.1255 18.9606 8.2468 +O 4.2035 19.4315 2.8859 +H 3.8330 0.8848 11.3189 +O 18.0364 1.5702 6.8124 +H 18.9541 1.3199 17.9675 +O 13.0357 7.8264 5.5084 +H 4.6469 4.7950 11.7450 +O 18.0944 2.8282 3.6049 +H 17.1169 10.7156 7.0259 +O 11.9228 4.6819 2.6149 +H 4.4018 6.6763 16.7066 +O 11.3805 6.5895 17.5545 +H 14.2913 3.4873 0.3424 +O 4.4708 7.7957 12.2098 +H 1.6539 17.8916 13.5433 +O 9.3317 16.0064 6.0704 +H 14.5208 8.0479 5.6270 +O 1.3693 12.8431 3.7835 +H 0.8428 3.7995 1.9359 +O 3.7584 9.0504 1.3710 +H 12.6409 10.8104 14.9387 +O 10.8743 4.6728 5.1439 +H 16.6214 6.5316 17.5957 +40 20.0 20.0 20.0 +frame 479 +O 11.3776 14.6557 9.5487 +H 7.3445 10.9588 5.0808 +O 0.3978 9.3130 5.0989 +H 6.1957 12.7242 6.7473 +O 5.8595 9.4085 17.2165 +H 4.6507 14.2022 8.3266 +O 19.8273 4.6625 0.6589 +H 5.8349 3.2186 8.8270 +O 17.8802 14.2055 19.7164 +H 17.6817 2.6490 7.4909 +O 1.7755 0.5202 14.0859 +H 1.9047 5.3123 19.5709 +O 9.3049 1.0385 13.7646 +H 0.9101 9.5315 3.2191 +O 10.2753 9.3202 5.2473 +H 13.1274 14.9190 4.9121 +O 6.7908 10.2231 17.3226 +H 8.0917 19.3715 8.5236 +O 4.1647 19.7267 2.5649 +H 3.9366 0.8567 11.2815 +O 18.1298 1.7616 7.2119 +H 18.8336 1.3429 18.0811 +O 12.9805 7.7859 5.0550 +H 4.6586 4.9687 11.6287 +O 18.1154 2.8997 3.1128 +H 16.9635 10.9367 7.3734 +O 12.0895 4.7490 2.3562 +H 4.4039 6.1357 16.3414 +O 11.3675 6.8762 17.0889 +H 14.3225 3.5254 0.7115 +O 4.3100 7.5306 11.8803 +H 1.1110 17.7612 13.7581 +O 9.5175 16.4483 6.3208 +H 14.3966 7.8223 5.8897 +O 1.8147 13.3162 3.5974 +H 0.6421 3.3244 2.1833 +O 3.7281 9.2605 1.1296 +H 12.5901 10.4151 15.0637 +O 10.5218 5.2799 4.9440 +H 16.2050 6.2668 17.6186 +40 20.0 20.0 20.0 +frame 480 +O 11.1357 14.5181 9.0442 +H 7.1786 10.4303 5.5774 +O 0.4214 9.4314 5.2666 +H 6.1382 12.4433 6.8618 +O 6.0508 9.5431 17.4552 +H 4.3982 14.1088 7.7278 +O 19.6401 5.0126 0.5477 +H 5.8514 3.1834 8.7998 +O 17.9653 14.2765 19.9488 +H 17.3439 2.4755 7.7852 +O 2.1509 0.4010 14.4795 +H 1.7654 5.7269 19.5247 +O 9.1110 1.1865 14.1922 +H 0.5883 9.3600 3.6082 +O 10.7391 9.4632 5.7291 +H 13.1407 14.5874 4.6564 +O 7.1534 9.6872 17.3275 +H 8.0909 19.8393 8.5640 +O 4.3969 19.9080 2.4697 +H 3.9274 1.4707 11.6764 +O 17.6960 1.9395 7.7128 +H 18.6933 1.5534 18.2868 +O 12.9881 7.9946 5.4634 +H 4.8615 4.9033 11.5650 +O 18.1338 2.8814 3.5675 +H 17.1860 10.9011 7.8033 +O 12.1344 4.8592 2.4223 +H 4.3489 6.2352 16.8203 +O 11.7014 6.5426 17.6901 +H 14.8262 3.5940 0.5304 +O 4.2014 7.0752 11.7196 +H 1.0727 17.2855 13.8442 +O 9.4151 16.0431 5.9473 +H 14.4965 7.4117 5.4164 +O 2.0148 13.2341 3.4042 +H 0.7231 2.9338 2.4046 +O 3.9566 9.1371 0.2982 +H 12.9084 10.0407 15.0337 +O 11.1184 5.6982 5.3548 +H 16.3873 6.0403 17.7689 +40 20.0 20.0 20.0 +frame 481 +O 11.3702 14.7637 8.9488 +H 6.9726 10.5062 5.7950 +O 0.7727 9.7417 5.2031 +H 5.7463 12.2394 6.7955 +O 6.3650 9.5271 16.8406 +H 4.0875 13.5739 7.6026 +O 19.8601 4.8284 0.7251 +H 5.5983 3.1642 9.0834 +O 18.2183 13.7927 19.8972 +H 17.2158 2.4443 7.8262 +O 1.8838 0.2263 14.7705 +H 1.7221 5.5745 18.7544 +O 9.0777 0.9688 14.1244 +H 0.1222 9.0214 3.2823 +O 11.1263 9.6536 5.4135 +H 13.4311 14.5530 4.5189 +O 6.9810 9.6167 17.4833 +H 8.2713 19.6681 8.6324 +O 4.2612 0.0629 2.5050 +H 4.0848 2.4050 11.7783 +O 17.7092 1.6999 7.9300 +H 18.4328 1.0314 19.0101 +O 13.1336 8.1661 5.3302 +H 4.5366 4.9412 11.9093 +O 18.0815 2.7849 3.4310 +H 17.9342 10.9526 7.6452 +O 11.7470 4.6069 1.9769 +H 4.5273 6.3009 16.9290 +O 11.7862 6.7048 17.9901 +H 14.5000 4.0725 0.8464 +O 4.1753 6.8547 11.7038 +H 1.2148 17.3657 13.7676 +O 9.1372 15.8543 6.0192 +H 14.2975 6.9491 5.7206 +O 2.3279 13.3253 2.9493 +H 0.3315 2.7901 2.5132 +O 4.9838 8.5888 0.4284 +H 13.1905 9.8734 15.2904 +O 11.2042 5.4120 5.3154 +H 16.8409 5.8633 17.6479 +40 20.0 20.0 20.0 +frame 482 +O 11.3234 14.8434 9.1078 +H 6.5915 10.3335 5.7463 +O 0.4517 9.3847 5.4161 +H 5.5876 11.6758 6.6880 +O 6.2370 9.5990 16.3225 +H 4.0224 13.4583 7.8684 +O 19.3675 4.9774 0.9971 +H 5.3893 3.3299 9.2864 +O 18.3563 14.4843 19.5641 +H 17.3292 2.0924 8.0854 +O 2.1423 19.6635 14.4708 +H 1.9473 5.7872 18.9195 +O 9.5831 0.9688 14.1387 +H 0.1001 9.1551 3.2969 +O 11.0580 9.6484 5.4212 +H 13.3605 14.3740 3.9327 +O 7.4024 10.1018 17.4783 +H 8.4106 19.3818 9.1931 +O 3.9088 0.2657 2.2101 +H 4.7286 2.3262 11.4905 +O 17.5010 1.4184 7.9586 +H 18.5542 1.4737 18.9020 +O 12.7943 8.4371 6.0157 +H 4.5065 4.9698 11.9992 +O 18.0422 2.8068 3.5188 +H 18.1280 10.8091 7.9170 +O 11.4536 4.6551 2.2156 +H 4.5472 6.3822 16.4829 +O 11.8553 6.7582 18.4490 +H 14.8367 4.2507 1.3116 +O 4.4851 5.9923 11.7313 +H 1.1265 17.2995 13.6944 +O 9.1131 15.7629 6.4219 +H 14.5457 6.6391 5.7678 +O 2.1040 13.2241 3.2233 +H 0.4509 2.7511 3.3170 +O 4.9934 8.7360 0.3382 +H 13.5071 9.5553 15.5564 +O 11.0403 5.5691 5.1109 +H 16.8259 5.5103 17.8596 +40 20.0 20.0 20.0 +frame 483 +O 11.4206 14.6843 8.8391 +H 6.2234 10.1527 5.7407 +O 19.9839 9.0340 5.1124 +H 5.3906 11.7635 6.5099 +O 6.1296 9.3962 16.6516 +H 3.6959 13.1178 8.2286 +O 19.4372 5.4523 1.0410 +H 5.5432 3.9293 9.6232 +O 18.0798 14.2193 19.3802 +H 17.6617 2.5767 7.7242 +O 2.3214 19.4716 14.6046 +H 2.0087 5.5347 18.9270 +O 9.7164 1.1587 14.0670 +H 19.9679 8.8144 3.1723 +O 10.8081 9.8395 5.8361 +H 13.4307 14.5499 3.9380 +O 7.4342 10.4683 17.5328 +H 7.8988 19.8879 9.4281 +O 4.0877 19.8361 2.4836 +H 4.4222 2.3766 11.4748 +O 17.3749 1.2250 7.9819 +H 18.9096 1.6843 19.1727 +O 12.7810 8.9993 5.9199 +H 4.7066 4.7185 11.5630 +O 18.6226 2.7730 3.8916 +H 17.8759 10.6405 7.9645 +O 11.0620 4.8881 2.4528 +H 4.6464 6.7041 16.5916 +O 12.1719 6.9174 18.6310 +H 14.7218 3.9287 1.0880 +O 4.4804 6.3145 10.9634 +H 1.4350 17.1416 13.9773 +O 8.9110 15.2853 5.7614 +H 14.2819 6.7983 5.8407 +O 2.2851 13.3409 3.2472 +H 0.4885 2.9503 3.0462 +O 5.1859 9.1070 0.6820 +H 13.8725 9.9345 15.6915 +O 11.0321 5.5158 5.2578 +H 16.7185 5.7292 17.3106 +40 20.0 20.0 20.0 +frame 484 +O 10.9173 14.4809 8.9024 +H 5.7761 9.9748 6.0221 +O 0.0671 8.7573 4.9425 +H 5.7060 11.2862 6.6287 +O 6.0867 9.8321 16.7950 +H 3.6264 13.1451 8.6015 +O 19.0241 5.3633 1.0373 +H 5.8534 3.7892 9.6376 +O 17.5042 14.5835 19.3562 +H 17.7338 2.7888 7.8978 +O 2.3953 19.4051 14.1278 +H 2.1308 5.4035 18.4265 +O 9.6656 1.4035 13.6000 +H 0.1116 8.6521 2.2632 +O 11.0994 9.6868 5.4872 +H 13.3733 14.8217 3.5691 +O 7.8561 10.8478 17.5670 +H 7.9352 19.2029 9.3365 +O 4.6066 19.7505 2.5657 +H 4.2820 2.4508 12.2921 +O 17.7946 1.3067 8.1074 +H 18.8649 1.6937 19.1243 +O 12.7938 8.5117 5.9835 +H 4.5885 4.1798 11.6322 +O 18.8147 2.6608 3.6831 +H 17.8053 10.3792 7.8621 +O 10.7057 4.9850 2.4554 +H 4.9216 6.4380 16.7296 +O 11.9250 7.0708 18.6824 +H 15.0176 3.5907 1.0397 +O 4.8819 6.3590 11.2073 +H 1.5446 17.0338 14.2650 +O 9.1421 14.9370 5.4238 +H 14.3535 7.2135 5.9585 +O 2.1412 13.3005 3.4907 +H 0.3667 2.9362 2.9240 +O 5.3454 8.7523 0.0575 +H 13.4827 9.5584 15.8678 +O 10.5679 5.6244 5.2468 +H 16.4434 5.5297 17.0120 +40 20.0 20.0 20.0 +frame 485 +O 10.5322 14.4913 9.3223 +H 5.4286 10.0738 5.9994 +O 0.0936 8.9878 4.9958 +H 5.7371 11.3146 6.3657 +O 5.9215 9.9556 16.8584 +H 3.5306 13.4226 8.6878 +O 19.0870 5.4928 1.3475 +H 5.6688 3.8160 9.7848 +O 17.3083 14.3180 19.2774 +H 17.9157 3.3396 7.5300 +O 2.6489 19.1345 14.0148 +H 1.9573 4.8972 18.0482 +O 9.5417 1.4961 14.0727 +H 19.9208 8.8716 2.7319 +O 11.1534 9.9219 5.2479 +H 13.4029 13.9774 3.8541 +O 7.7729 10.8901 17.4821 +H 7.8467 19.2000 9.4169 +O 4.7527 19.8505 2.7312 +H 4.3646 2.4721 12.1797 +O 18.1137 1.5632 8.3326 +H 19.6303 2.2075 19.2820 +O 12.7145 7.9732 5.9973 +H 4.4881 4.3198 11.6551 +O 18.8292 2.5182 4.0097 +H 18.1190 9.9628 8.0492 +O 10.3210 5.2521 2.4881 +H 4.8219 6.5578 16.5737 +O 12.0078 7.2967 18.7533 +H 14.8057 3.1741 1.2387 +O 5.1559 6.2156 10.7525 +H 1.5271 17.0432 14.3698 +O 9.2853 14.6912 5.3841 +H 14.4266 7.0035 5.6310 +O 2.2344 13.4808 3.2871 +H 0.6011 2.9007 2.6522 +O 5.3355 8.6981 19.8773 +H 13.3524 9.7070 15.7769 +O 10.8785 5.4853 5.3944 +H 16.5887 5.3662 17.0570 +40 20.0 20.0 20.0 +frame 486 +O 10.4665 14.5163 9.4042 +H 5.1867 10.2840 6.0441 +O 19.9232 8.4223 4.9097 +H 5.5870 11.0746 6.5338 +O 5.8978 9.0486 17.1644 +H 3.4567 12.9579 8.7483 +O 18.8259 5.8948 0.9570 +H 5.5476 3.9493 10.1269 +O 17.6430 14.1357 19.3915 +H 18.0300 3.3250 7.3368 +O 2.2981 18.8762 14.0631 +H 2.1284 5.1096 18.5091 +O 9.4480 1.5828 14.0152 +H 19.8625 8.5210 2.6884 +O 11.3558 9.9580 5.6698 +H 13.4771 13.6933 4.0398 +O 7.8545 10.9301 17.8211 +H 8.3465 19.5518 9.3355 +O 4.6460 19.9315 2.7748 +H 4.1575 2.1573 11.8546 +O 18.2992 0.8360 7.9475 +H 19.8746 1.7746 19.0721 +O 12.3923 7.4742 6.1618 +H 4.9667 3.9236 11.7097 +O 18.6376 2.2789 3.7675 +H 17.7285 10.2708 8.2986 +O 10.5841 5.3403 2.5592 +H 5.3568 6.1954 16.4679 +O 12.2032 7.7021 19.0641 +H 14.6840 3.4673 1.1360 +O 5.0073 6.2824 10.7054 +H 1.3076 17.5385 13.8914 +O 9.2930 14.9879 5.2528 +H 14.2023 7.2556 5.7536 +O 2.3911 13.4014 3.3685 +H 0.6987 2.6545 2.7326 +O 5.0845 8.8873 19.2255 +H 13.9576 9.9036 15.5570 +O 11.0815 5.7197 5.4834 +H 16.5808 5.5859 16.7007 +40 20.0 20.0 20.0 +frame 487 +O 10.6043 15.1540 9.4237 +H 5.5803 9.9238 5.8827 +O 19.7863 8.0984 4.8415 +H 5.5293 10.9045 6.6789 +O 5.4624 9.2975 17.8234 +H 3.7092 12.9287 8.7636 +O 18.7315 6.3177 0.8607 +H 5.6175 3.3596 10.2235 +O 17.4027 14.0809 19.1863 +H 17.9486 3.9176 7.6642 +O 2.6661 18.5485 13.9639 +H 1.8204 5.3165 18.6232 +O 9.3354 1.1363 13.6860 +H 19.8600 8.7661 2.2583 +O 11.5780 10.2811 5.5277 +H 12.9158 13.6398 4.4951 +O 7.9082 11.0483 18.3956 +H 8.0996 19.0495 9.3980 +O 4.1138 19.8472 2.8136 +H 4.0007 2.2764 11.4845 +O 17.7152 1.0286 8.0432 +H 0.1127 2.3357 19.3331 +O 12.1869 7.1735 6.2214 +H 4.9938 4.4204 12.0328 +O 18.3320 1.9048 3.6230 +H 17.7050 10.1450 8.2131 +O 10.2516 5.2291 2.6719 +H 5.1932 5.9961 15.9908 +O 11.8165 7.3815 19.1031 +H 14.7564 3.3363 1.4814 +O 5.1227 6.8200 10.7573 +H 1.1318 17.2856 14.0747 +O 9.8326 15.2681 5.4830 +H 14.3155 7.5173 5.5027 +O 2.4028 13.4874 3.8014 +H 0.4631 2.0099 3.1036 +O 5.3735 8.6763 19.7828 +H 14.4087 10.1725 15.0528 +O 10.9978 5.4104 5.2963 +H 15.9213 5.5954 16.8979 +40 20.0 20.0 20.0 +frame 488 +O 10.8898 14.8427 9.5650 +H 5.9886 10.1194 6.1855 +O 0.3430 8.0579 4.9213 +H 5.5905 10.6676 6.9131 +O 5.6400 9.2397 17.2763 +H 3.0154 12.6161 8.8283 +O 18.8320 6.1289 0.8687 +H 5.5250 3.4583 11.0181 +O 17.7536 13.9458 18.9836 +H 18.2139 3.7923 7.6897 +O 2.7655 18.9483 13.8696 +H 1.4790 4.8099 18.6423 +O 9.5125 1.4416 14.2914 +H 19.7786 8.8687 2.5290 +O 11.8695 10.4158 5.3146 +H 13.3530 13.8640 4.5220 +O 7.8483 11.2730 18.6414 +H 8.2610 18.7840 9.7357 +O 4.7997 0.4939 2.8186 +H 4.1108 2.5599 10.9742 +O 17.6958 0.5319 8.3660 +H 19.8719 2.1858 19.0618 +O 12.5790 7.0834 6.0075 +H 4.8262 4.3008 12.0140 +O 18.5974 2.3234 3.4928 +H 18.0069 10.5968 7.9940 +O 9.9167 4.7654 2.5827 +H 5.2056 5.8646 15.7104 +O 11.2377 7.6139 19.2910 +H 14.6480 3.9027 1.1947 +O 5.4328 7.0206 11.1129 +H 0.7425 17.0291 14.4544 +O 9.8222 14.8272 5.2822 +H 14.3748 7.4264 5.1617 +O 2.4788 13.7803 3.8416 +H 0.4833 2.5848 3.1750 +O 5.6856 8.8772 19.1618 +H 15.1046 9.9356 14.6292 +O 10.9138 5.5146 5.2036 +H 15.7928 5.5835 16.9775 +40 20.0 20.0 20.0 +frame 489 +O 10.9064 15.4391 9.8902 +H 5.7600 9.9427 6.7244 +O 0.2087 7.7608 4.9321 +H 5.6421 10.2606 6.5943 +O 5.5697 9.2799 16.9839 +H 2.8498 12.6692 8.8786 +O 18.6952 6.7335 0.5593 +H 5.6052 3.9292 11.5851 +O 17.2610 13.7152 19.1759 +H 18.2466 4.1398 7.8829 +O 2.4953 18.4545 14.3249 +H 0.8355 5.4172 18.3438 +O 9.6644 1.5855 14.3263 +H 19.8113 8.9951 2.4283 +O 12.1159 10.3555 5.5161 +H 13.9777 13.9457 4.3984 +O 7.6597 10.9205 18.1562 +H 8.8565 18.4317 9.7636 +O 5.1552 0.7791 2.8230 +H 3.9987 3.1082 11.1961 +O 18.3107 0.4180 8.0741 +H 19.5117 1.7175 18.8975 +O 12.0104 7.2260 5.7799 +H 4.4400 4.3441 11.7165 +O 18.4200 2.2324 3.1363 +H 18.2959 10.4709 7.7864 +O 10.1949 4.6068 2.4950 +H 5.1460 5.6455 15.7127 +O 11.0089 7.6599 19.0466 +H 15.2511 3.7898 0.3328 +O 5.3919 6.9102 11.4726 +H 1.1804 17.2244 14.5492 +O 10.1427 14.5782 5.4286 +H 14.2715 7.8705 4.8052 +O 2.4036 13.6186 3.8135 +H 0.7645 2.0934 3.5187 +O 6.1328 9.0505 19.1345 +H 15.1061 10.3638 14.4623 +O 11.2488 6.1368 5.5010 +H 15.6517 5.5277 17.2955 +40 20.0 20.0 20.0 +frame 490 +O 10.4628 15.4023 9.7704 +H 6.2348 9.8511 6.7106 +O 0.1815 6.9607 5.0270 +H 5.9697 10.2259 6.7334 +O 5.8280 9.1643 17.4770 +H 2.5300 12.9430 8.6120 +O 19.2064 6.6852 0.3898 +H 5.2887 3.7707 11.3136 +O 17.5218 13.1221 19.2550 +H 17.9128 4.1796 8.1755 +O 2.1156 18.2233 14.4767 +H 0.4456 5.1283 18.1992 +O 9.4494 1.6343 15.1455 +H 19.6110 9.0565 2.3150 +O 12.5966 10.1046 5.6666 +H 13.9700 14.0535 4.6475 +O 7.8715 10.5851 17.7090 +H 9.1952 18.3000 10.0515 +O 5.1797 1.0443 2.3293 +H 4.2592 2.5745 11.4739 +O 17.8064 0.6767 8.4507 +H 19.9094 1.6135 18.8235 +O 12.0229 7.6038 5.8262 +H 4.4955 4.7083 11.5688 +O 18.3031 1.6590 3.2278 +H 18.4146 10.3947 7.5161 +O 10.1292 4.5750 2.5079 +H 5.1441 5.4483 15.8060 +O 11.1047 7.8230 18.4741 +H 15.3788 3.4666 0.2190 +O 5.4444 6.6065 11.4901 +H 1.3798 16.6766 14.5274 +O 10.1817 14.6230 5.2875 +H 14.3560 8.2460 4.9905 +O 2.2165 13.4203 4.3484 +H 0.2286 1.9465 3.7650 +O 6.1220 9.1587 19.0245 +H 14.5337 10.0443 14.0686 +O 11.5046 6.0060 5.1864 +H 15.6199 5.2171 17.5700 +40 20.0 20.0 20.0 +frame 491 +O 10.6124 15.2414 9.9133 +H 6.4291 9.7644 6.7924 +O 0.0089 7.1421 4.9901 +H 6.2242 10.0689 7.1923 +O 5.7540 9.2567 17.2649 +H 2.5494 12.6162 9.2250 +O 19.0534 6.7785 0.2015 +H 5.5528 4.4109 11.4620 +O 17.5683 13.0794 19.1424 +H 18.2652 3.5893 8.0571 +O 1.9606 18.6241 14.4769 +H 0.1126 5.4779 17.8473 +O 9.1859 1.9973 15.1519 +H 0.0548 9.4510 2.4582 +O 12.8517 10.3980 5.7866 +H 14.3051 14.2170 4.5135 +O 7.7562 10.2403 17.5921 +H 8.8494 18.4608 10.3183 +O 5.0019 1.9260 1.8915 +H 4.0365 2.6553 11.1755 +O 17.8795 0.4255 8.2552 +H 0.4964 1.9379 19.1665 +O 12.2192 7.7418 5.9339 +H 3.8957 4.6250 11.5714 +O 18.9492 1.8585 3.5305 +H 18.1559 10.2967 7.0108 +O 10.2079 4.5850 2.7712 +H 5.6126 5.3865 16.0471 +O 11.4050 7.6463 18.3422 +H 15.8618 3.6101 0.2040 +O 5.1511 6.2897 11.3061 +H 1.2858 16.8144 14.1925 +O 10.6071 14.2583 5.4107 +H 13.8394 8.5381 5.0082 +O 2.1140 13.4996 4.7135 +H 0.5296 2.0658 3.7066 +O 5.6930 9.2418 19.1204 +H 14.6734 9.8384 14.2156 +O 10.8159 5.7025 5.2689 +H 15.6704 5.5490 17.8443 +40 20.0 20.0 20.0 +frame 492 +O 10.5078 15.0200 9.6919 +H 6.3916 10.0961 6.7160 +O 19.6889 7.0645 5.0206 +H 6.7403 10.1252 7.4847 +O 6.1134 9.6368 17.5352 +H 2.7691 12.3942 8.7763 +O 19.3811 7.0891 0.0890 +H 5.7696 4.4420 11.9200 +O 17.9487 13.1511 19.3307 +H 18.5684 3.0099 8.2601 +O 1.9711 19.2772 14.4895 +H 0.0086 5.3556 17.5044 +O 9.0738 2.2688 15.2539 +H 19.8323 8.9976 2.5455 +O 12.1168 10.3308 5.7587 +H 14.5319 14.3490 4.4090 +O 7.4763 9.8234 17.3250 +H 8.0974 18.3025 10.5131 +O 4.7775 1.7826 1.6195 +H 3.8793 2.5655 10.8104 +O 18.2283 19.7451 8.3167 +H 0.7866 1.8206 18.8961 +O 12.1376 7.4951 5.5699 +H 3.5011 4.5764 11.4093 +O 18.9030 1.8251 3.2429 +H 17.9297 10.3146 6.8812 +O 10.5044 4.6226 3.0566 +H 5.5195 5.6115 16.2691 +O 12.1161 7.8990 17.9830 +H 15.4218 3.6147 0.0190 +O 5.2221 6.6573 11.2298 +H 1.5684 16.8679 14.2590 +O 10.6791 13.9788 5.6433 +H 13.7595 8.3141 4.6751 +O 2.4622 14.1903 4.7348 +H 0.4852 1.5841 4.5163 +O 5.7051 9.1607 19.3919 +H 14.4800 10.1371 14.1443 +O 10.6367 5.1131 4.7866 +H 15.3651 5.4508 17.7967 +40 20.0 20.0 20.0 +frame 493 +O 10.6811 14.9530 10.4403 +H 6.6977 10.2393 6.5501 +O 19.3001 6.7902 5.5167 +H 6.7838 10.2871 7.0988 +O 5.9744 9.7625 17.9541 +H 2.4481 12.0238 8.6100 +O 19.6430 7.2158 19.7552 +H 6.2405 4.4918 12.1615 +O 17.6978 13.1099 19.7582 +H 19.0048 3.2783 8.6890 +O 1.5524 19.3245 14.9981 +H 0.4193 5.7339 17.6101 +O 9.3019 2.2965 15.5770 +H 19.9568 9.0420 2.4448 +O 12.8286 10.4866 5.5150 +H 14.4525 14.2626 4.3098 +O 7.4613 10.2545 17.6686 +H 8.1663 18.6060 10.8288 +O 4.6199 1.3455 1.6350 +H 3.7370 2.1314 11.4379 +O 18.5225 19.8492 8.5478 +H 0.1872 1.8426 19.0670 +O 12.7650 7.5217 5.6222 +H 3.6885 4.7782 12.0182 +O 19.6443 1.5053 3.3270 +H 17.8803 10.1706 7.0490 +O 10.4649 4.4725 3.2225 +H 5.8912 5.6251 16.1776 +O 12.2636 8.1887 18.2162 +H 15.1275 4.3763 0.0675 +O 5.6613 6.8425 11.1919 +H 0.9894 16.2771 14.3102 +O 10.9753 13.7360 5.7147 +H 13.7750 8.4858 4.7498 +O 2.3384 13.8046 4.8929 +H 0.4032 1.3537 4.5457 +O 5.4409 8.8137 19.6136 +H 14.3826 10.2431 14.3327 +O 10.9601 5.5952 5.4443 +H 15.6610 5.2204 18.2116 +40 20.0 20.0 20.0 +frame 494 +O 9.6153 15.2060 10.2290 +H 6.3618 10.3728 6.3746 +O 18.7434 6.6980 5.0036 +H 6.9255 9.9726 6.4860 +O 6.0667 9.9205 17.7149 +H 2.1565 12.3362 8.3654 +O 19.6793 6.9572 19.5748 +H 6.2311 4.4422 12.1382 +O 17.1576 13.0041 19.6745 +H 18.8661 2.8053 8.3119 +O 2.2901 19.8058 14.6674 +H 0.3638 5.4413 17.5338 +O 9.1936 2.8079 15.3586 +H 0.2983 9.2699 2.7174 +O 12.7408 10.6522 5.8476 +H 14.6745 14.1658 4.0465 +O 7.5210 9.5181 17.0671 +H 7.6521 18.7101 10.6142 +O 4.0867 1.4252 1.3653 +H 3.7023 2.1799 11.0332 +O 18.1826 19.7735 8.6719 +H 19.8329 1.9910 19.1610 +O 12.8457 7.4065 5.6544 +H 3.6564 5.1668 12.2799 +O 18.9774 1.4635 3.9005 +H 18.1014 9.9747 6.9001 +O 10.5502 4.6643 2.6930 +H 5.6625 5.6268 15.7227 +O 12.5423 7.9240 17.8168 +H 15.4067 4.0760 0.2300 +O 5.5526 6.7874 10.9047 +H 1.4787 16.5766 14.1468 +O 11.3362 13.7627 5.3590 +H 13.5751 8.3205 5.0624 +O 2.0338 13.9479 4.8250 +H 0.8803 0.9104 4.1992 +O 5.6576 9.0510 19.6200 +H 14.1163 10.3892 14.5773 +O 10.4585 5.7888 5.4146 +H 15.3942 5.3150 18.4020 +40 20.0 20.0 20.0 +frame 495 +O 9.3593 15.4181 10.0915 +H 5.8774 10.9983 5.7388 +O 18.6748 6.2523 4.9503 +H 6.7064 9.5672 6.8615 +O 6.3200 9.8390 18.0064 +H 1.9801 12.3376 8.0344 +O 19.8824 6.8439 19.6943 +H 5.6920 4.3140 12.0840 +O 17.1208 13.4553 0.1053 +H 18.7240 2.6058 8.8685 +O 2.0538 0.0137 14.6411 +H 0.4501 5.5999 17.6010 +O 8.5543 3.0261 15.3389 +H 0.5226 9.1830 2.9213 +O 12.6461 10.7267 5.6573 +H 14.3202 14.4298 4.0420 +O 7.5615 10.0209 16.7453 +H 8.5378 18.5357 10.6308 +O 4.5112 1.1156 1.1413 +H 3.5510 1.9398 11.4069 +O 18.1297 19.6977 8.7830 +H 19.4332 1.7541 19.2019 +O 13.0174 6.8710 5.8043 +H 4.0195 5.4477 12.0175 +O 18.6609 1.4541 3.7036 +H 18.3246 10.4015 7.2372 +O 10.2894 4.3611 2.2185 +H 5.6968 5.4378 15.9758 +O 12.3572 8.3354 17.9421 +H 15.9947 3.9454 0.3116 +O 6.1170 7.3331 10.9292 +H 1.4419 16.7690 14.0410 +O 11.6527 13.7107 5.1862 +H 13.7483 8.3478 4.7899 +O 1.5682 14.6874 4.6004 +H 1.1211 1.1972 4.2638 +O 5.3560 9.2465 19.8591 +H 14.1797 10.5376 14.9225 +O 10.7891 5.9707 5.7850 +H 14.9520 5.5889 18.2739 +40 20.0 20.0 20.0 +frame 496 +O 8.7995 15.7096 9.7246 +H 5.8128 10.7821 5.6886 +O 18.4518 6.1700 5.3990 +H 6.7282 9.8655 7.0624 +O 6.3277 10.0140 18.0086 +H 1.3732 12.1137 8.4362 +O 19.3638 6.8752 19.5108 +H 5.5477 4.2757 11.8944 +O 17.1891 13.4122 19.9238 +H 18.5028 2.8180 8.8240 +O 1.9707 0.2713 14.9845 +H 0.5495 5.5091 17.5272 +O 8.3938 2.5926 15.6439 +H 0.5128 9.4994 2.8269 +O 13.2902 10.6725 5.7865 +H 14.0742 14.7734 3.8922 +O 7.4078 10.6323 16.2950 +H 8.6791 18.5575 11.1747 +O 4.2434 1.4360 1.1190 +H 3.7240 1.9746 11.2403 +O 18.6003 0.3207 9.1665 +H 19.0883 1.7154 19.6370 +O 13.1965 7.2226 5.5942 +H 3.8329 5.3938 11.6737 +O 18.7413 1.8371 3.7957 +H 18.9589 9.9837 7.3573 +O 10.3111 4.7343 2.1711 +H 5.5810 5.2864 16.2779 +O 11.9097 8.5663 17.9965 +H 15.7264 4.4082 0.7440 +O 5.7517 7.0763 10.6102 +H 0.9482 16.7835 13.9079 +O 11.9364 13.7535 5.4000 +H 13.6730 8.2159 4.9861 +O 1.5404 14.9448 5.0547 +H 1.0068 0.9879 4.4208 +O 5.0461 9.3768 19.4673 +H 14.1826 10.4311 15.1352 +O 11.4827 5.3585 5.9475 +H 14.8700 5.6243 18.0435 +40 20.0 20.0 20.0 +frame 497 +O 8.3745 15.9669 9.9690 +H 5.9501 10.9881 5.5441 +O 18.5126 6.0966 5.1013 +H 6.2636 9.6059 6.7333 +O 5.7782 10.1038 17.9080 +H 1.0784 12.1257 9.1526 +O 18.9415 7.0271 19.4511 +H 5.1536 4.1721 11.2500 +O 17.3407 13.4327 19.3155 +H 18.4611 3.0441 8.7651 +O 2.0110 0.7982 14.7723 +H 0.6238 5.6395 17.1606 +O 8.1870 2.1853 15.5145 +H 0.6749 9.2675 2.8100 +O 13.6244 10.6745 5.6274 +H 14.2625 15.4680 3.3507 +O 6.9237 10.4847 16.7231 +H 8.5042 18.5938 11.2921 +O 4.1188 1.5584 1.1178 +H 3.4648 2.0703 11.4940 +O 18.9497 0.5051 9.4700 +H 19.3870 2.1679 19.6810 +O 13.3838 7.5067 5.6121 +H 3.5774 5.5597 11.6751 +O 18.8793 1.6231 3.4365 +H 19.1201 9.8299 7.3700 +O 10.3808 4.9027 2.2125 +H 5.9875 5.1020 16.4971 +O 11.3753 8.6434 17.5228 +H 16.4131 4.1144 0.5849 +O 5.7423 7.0794 10.8211 +H 0.4916 16.8254 13.4633 +O 11.3560 13.5336 5.3552 +H 13.6344 8.4302 5.1108 +O 1.2811 14.8595 4.9514 +H 1.2421 0.6402 4.3232 +O 5.6198 9.5715 19.2189 +H 14.3893 10.9721 14.9859 +O 11.1547 5.4531 6.0058 +H 15.0380 5.6700 17.9221 +40 20.0 20.0 20.0 +frame 498 +O 8.4335 15.5891 10.1015 +H 5.7710 10.6881 5.1820 +O 18.2840 5.8556 5.2216 +H 6.9172 9.4932 6.9851 +O 5.8949 10.0281 17.6296 +H 0.7768 12.4723 8.6676 +O 18.6971 7.0895 19.2586 +H 4.8256 3.9525 11.5883 +O 17.6352 13.4310 19.5387 +H 18.7087 2.5853 8.6993 +O 1.4978 0.3885 14.6957 +H 0.4996 6.2324 17.4121 +O 7.9616 2.0802 15.9296 +H 0.0762 9.0813 2.3742 +O 13.8472 10.6172 5.9473 +H 14.5526 15.3250 3.5177 +O 7.2324 9.9991 17.0347 +H 8.5950 18.9141 11.1847 +O 3.8166 1.5453 0.6737 +H 3.4463 1.9402 11.9867 +O 19.1434 0.3839 9.1186 +H 19.3542 2.3654 19.7917 +O 13.1404 7.9068 5.9954 +H 3.3292 5.5327 11.8365 +O 18.7618 1.5788 3.7467 +H 18.9001 10.2502 7.1223 +O 10.2078 4.7802 1.9629 +H 5.9329 4.7817 16.4742 +O 11.6852 8.5481 17.1226 +H 16.5575 4.1543 0.1921 +O 5.7539 7.5471 10.6469 +H 0.6766 16.8669 12.9855 +O 11.0372 13.8315 4.8255 +H 13.5810 8.0821 5.6781 +O 1.5670 15.5059 4.8388 +H 1.1363 19.9896 4.6140 +O 5.6217 9.3368 19.2886 +H 14.3758 11.4558 14.9210 +O 11.5498 5.7286 6.2753 +H 15.4033 5.5723 17.5644 +40 20.0 20.0 20.0 +frame 499 +O 8.5086 15.5288 9.9125 +H 5.5986 10.2803 5.1533 +O 18.5062 5.9727 5.5506 +H 7.2321 9.6690 7.1741 +O 5.9911 10.3882 17.5833 +H 0.8492 12.6213 8.7624 +O 19.1328 7.0375 19.2855 +H 5.0353 4.1543 11.1883 +O 17.3585 13.2233 19.3927 +H 18.5071 2.3573 8.6835 +O 1.2580 0.4254 15.2516 +H 0.2581 6.1238 17.8406 +O 8.3404 1.6218 16.1451 +H 0.1164 8.6968 2.3729 +O 13.4865 10.5267 5.6916 +H 14.0741 15.0069 3.9318 +O 7.3165 9.9418 17.3119 +H 9.1842 18.9450 11.3115 +O 3.4218 1.1553 0.6058 +H 3.4030 2.0342 11.8670 +O 19.8000 0.1852 9.4830 +H 19.5624 2.6911 19.7241 +O 13.0538 8.0188 5.5941 +H 2.9774 5.6083 11.2192 +O 18.2754 1.2841 3.5231 +H 18.8235 10.3946 7.3887 +O 10.3954 5.5985 1.9154 +H 6.4404 4.7260 16.6545 +O 11.8178 8.5439 17.3040 +H 16.1335 3.6626 0.7082 +O 6.1066 7.6354 10.4907 +H 0.6112 16.7118 12.9477 +O 11.3900 13.6006 4.7156 +H 13.1121 7.9517 5.4202 +O 0.8075 15.3272 4.7400 +H 1.5269 19.4607 4.3047 +O 5.6502 9.1242 19.2030 +H 13.8988 10.8303 15.3296 +O 11.8647 5.7287 6.0814 +H 14.5838 5.4032 17.6046 +40 20.0 20.0 20.0 +frame 500 +O 8.2755 15.8782 9.8043 +H 5.9027 10.5042 5.0070 +O 18.0085 6.4650 5.8525 +H 7.3984 9.8908 6.5994 +O 5.8859 10.1511 17.8818 +H 0.9163 12.1280 8.8318 +O 18.4862 7.3346 19.1025 +H 5.2500 4.1108 11.1778 +O 17.4134 13.0928 19.3023 +H 18.4679 1.9329 8.8961 +O 1.4794 0.3276 15.4468 +H 0.5084 5.7801 17.4680 +O 8.1926 1.4525 16.2149 +H 19.4077 8.9314 1.9833 +O 13.3614 10.9824 6.0948 +H 13.9006 14.5177 3.9741 +O 7.7931 10.0362 17.5177 +H 8.5212 19.1257 11.1645 +O 3.6245 1.1026 0.3127 +H 3.4605 2.0436 11.4995 +O 0.4020 19.9375 9.9751 +H 19.7350 2.5258 19.6322 +O 13.1354 8.1843 5.3395 +H 3.0886 6.1635 10.6923 +O 17.7524 1.2405 3.6536 +H 18.7845 10.2784 7.4480 +O 10.2809 5.5775 1.7828 +H 6.4640 4.9002 16.8923 +O 11.4937 8.5842 17.1259 +H 15.8204 3.3067 0.2439 +O 6.1074 7.5304 10.5360 +H 19.9660 17.1527 12.5220 +O 11.1390 13.4616 4.6577 +H 12.7170 7.8413 5.2190 +O 0.5303 14.9733 4.7061 +H 1.8859 19.0404 4.2088 +O 5.5620 9.4772 19.1137 +H 13.8505 11.2202 15.2839 +O 12.1463 5.7513 5.7532 +H 14.3291 5.4231 17.5770 diff --git a/tests/data/readOptimizerFile/optimization.opt b/tests/data/readOptimizerFile/optimization.opt new file mode 100644 index 00000000..f8987117 --- /dev/null +++ b/tests/data/readOptimizerFile/optimization.opt @@ -0,0 +1,11 @@ + 1 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1 1 1 1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 2 1.79384918e+03 1.92336253e-01 2.14988423e+02 4.92512651e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 3 1.34515730e+03 1.20962165e-01 1.73569378e+02 4.29373368e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 4 1.02953050e+03 8.25894816e-02 1.76380502e+02 3.79692648e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 5 8.05884682e+02 5.97165376e-02 1.70221190e+02 3.32064711e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 6 6.20572253e+02 4.33934679e-02 1.39948046e+02 3.01968908e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 7 5.37468359e+02 3.60194266e-02 1.71315384e+02 2.95291562e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 8 5.13727195e+02 3.32313933e-02 1.75807631e+02 2.85953628e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 9 4.73360384e+02 2.96353670e-02 1.64721445e+02 2.69448323e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 10 4.23525966e+02 2.57522388e-02 1.64183639e+02 2.57016672e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 + 11 3.88243509e+02 2.30142422e-02 1.53613362e+02 2.48886764e+01 -1 -1 -1 -1 1.00000000e-14 1.00000000e-14 1.00000000e-14 1.00000000e-14 diff --git a/tests/data/spectrum_broadening/lines.dat b/tests/data/spectrum_broadening/lines.dat new file mode 100644 index 00000000..f36e5bca --- /dev/null +++ b/tests/data/spectrum_broadening/lines.dat @@ -0,0 +1,78 @@ + 36.7203 11.4330 + 83.2782 0.8398 + 114.5203 0.9518 + 123.9687 1.7923 + 177.4823 0.3567 + 202.8284 2.3726 + 251.3648 5.3587 + 297.9139 12.5608 + 315.0632 6.4862 + 328.0200 46.5647 + 343.8891 31.1522 + 356.9271 123.1068 + 391.5044 5.5875 + 418.4992 34.6485 + 425.9542 0.4431 + 454.2016 34.7805 + 463.9071 34.4825 + 480.2397 39.7927 + 505.5283 71.0007 + 527.1408 282.7391 + 569.4478 193.8552 + 581.4349 19.9912 + 612.7650 699.0533 + 619.1992 184.8364 + 659.3940 121.3732 + 670.3874 31.2910 + 691.8485 13.1038 + 695.2356 28.2041 + 731.2681 186.0250 + 754.0804 66.8150 + 768.3369 5.6426 + 799.4214 2.4443 + 814.8117 0.8442 + 830.5558 29.7633 + 852.0810 60.7518 + 910.9338 19.9925 + 912.4574 0.1807 + 962.5810 0.0719 + 994.5172 147.6090 + 995.9281 2.8255 + 1017.4717 0.0112 + 1040.3170 112.1285 + 1061.3325 0.1643 + 1110.1892 21.6610 + 1114.5195 0.4901 + 1161.0698 8.6180 + 1175.4742 3.1712 + 1183.9785 42.6766 + 1213.9286 82.4957 + 1262.3493 41.8579 + 1296.1307 666.4341 + 1314.8784 1891.7172 + 1328.3100 85.5923 + 1366.0765 15.1897 + 1376.4810 38.2484 + 1415.8329 73.8728 + 1466.4065 278.0501 + 1485.0125 12.9365 + 1499.9860 18.3122 + 1512.1373 17.6809 + 1567.7667 984.4310 + 1596.2048 231.9279 + 1616.9138 85.0590 + 1628.6640 350.8337 + 1634.4603 46.2347 + 1648.7426 132.1248 + 1672.3881 174.8745 + 1690.6982 369.2146 + 3195.5905 20.4772 + 3197.1585 4.0948 + 3209.5104 14.3646 + 3223.1845 5.8014 + 3224.5717 6.0031 + 3225.9795 19.4500 + 3498.0848 103.4260 + 3535.5668 140.0599 + 3638.0389 206.4396 + 3643.4800 78.4046 diff --git a/tests/data/spectrum_broadening/spectrum.dat b/tests/data/spectrum_broadening/spectrum.dat new file mode 100644 index 00000000..b9f01a2c --- /dev/null +++ b/tests/data/spectrum_broadening/spectrum.dat @@ -0,0 +1,15960 @@ + 10.0000 1.918547669503e+00 + 10.2500 1.983400193770e+00 + 10.5000 2.049804263929e+00 + 10.7500 2.117769635512e+00 + 11.0000 2.187304901425e+00 + 11.2500 2.258417442490e+00 + 11.5000 2.331113378286e+00 + 11.7500 2.405397518380e+00 + 12.0000 2.481273314064e+00 + 12.2500 2.558742810701e+00 + 12.5000 2.637806600794e+00 + 12.7500 2.718463777882e+00 + 13.0000 2.800711891392e+00 + 13.2500 2.884546902541e+00 + 13.5000 2.969963141424e+00 + 13.7500 3.056953265399e+00 + 14.0000 3.145508218876e+00 + 14.2500 3.235617194650e+00 + 14.5000 3.327267596873e+00 + 14.7500 3.420445005802e+00 + 15.0000 3.515133144431e+00 + 15.2500 3.611313847125e+00 + 15.5000 3.708967030372e+00 + 15.7500 3.808070665776e+00 + 16.0000 3.908600755383e+00 + 16.2500 4.010531309474e+00 + 16.5000 4.113834326915e+00 + 16.7500 4.218479778183e+00 + 17.0000 4.324435591153e+00 + 17.2500 4.431667639764e+00 + 17.5000 4.540139735645e+00 + 17.7500 4.649813622792e+00 + 18.0000 4.760648975394e+00 + 18.2500 4.872603398870e+00 + 18.5000 4.985632434212e+00 + 18.7500 5.099689565691e+00 + 19.0000 5.214726231996e+00 + 19.2500 5.330691840870e+00 + 19.5000 5.447533787278e+00 + 19.7500 5.565197475176e+00 + 20.0000 5.683626342900e+00 + 20.2500 5.802761892221e+00 + 20.5000 5.922543721073e+00 + 20.7500 6.042909559995e+00 + 21.0000 6.163795312270e+00 + 21.2500 6.285135097783e+00 + 21.5000 6.406861300570e+00 + 21.7500 6.528904620066e+00 + 22.0000 6.651194126009e+00 + 22.2500 6.773657316970e+00 + 22.5000 6.896220182477e+00 + 22.7500 7.018807268677e+00 + 23.0000 7.141341747473e+00 + 23.2500 7.263745489076e+00 + 23.5000 7.385939137892e+00 + 23.7500 7.507842191657e+00 + 24.0000 7.629373083735e+00 + 24.2500 7.750449268463e+00 + 24.5000 7.870987309447e+00 + 24.7500 7.990902970681e+00 + 25.0000 8.110111310361e+00 + 25.2500 8.228526777271e+00 + 25.5000 8.346063309581e+00 + 25.7500 8.462634435922e+00 + 26.0000 8.578153378574e+00 + 26.2500 8.692533158599e+00 + 26.5000 8.805686702761e+00 + 26.7500 8.917526952039e+00 + 27.0000 9.027966971566e+00 + 27.2500 9.136920061794e+00 + 27.5000 9.244299870697e+00 + 27.7500 9.350020506812e+00 + 28.0000 9.453996652920e+00 + 28.2500 9.556143680148e+00 + 28.5000 9.656377762301e+00 + 28.7500 9.754615990193e+00 + 29.0000 9.850776485777e+00 + 29.2500 9.944778515847e+00 + 29.5000 1.003654260510e+01 + 29.7500 1.012599064833e+01 + 30.0000 1.021304602156e+01 + 30.2500 1.029763369185e+01 + 30.5000 1.037968032563e+01 + 30.7500 1.045911439525e+01 + 31.0000 1.053586628359e+01 + 31.2500 1.060986838658e+01 + 31.5000 1.068105521325e+01 + 31.7500 1.074936348330e+01 + 32.0000 1.081473222184e+01 + 32.2500 1.087710285113e+01 + 32.5000 1.093641927931e+01 + 32.7500 1.099262798556e+01 + 33.0000 1.104567810196e+01 + 33.2500 1.109552149145e+01 + 33.5000 1.114211282211e+01 + 33.7500 1.118540963729e+01 + 34.0000 1.122537242161e+01 + 34.2500 1.126196466267e+01 + 34.5000 1.129515290833e+01 + 34.7500 1.132490681933e+01 + 35.0000 1.135119921736e+01 + 35.2500 1.137400612825e+01 + 35.5000 1.139330682034e+01 + 35.7500 1.140908383786e+01 + 36.0000 1.142132302930e+01 + 36.2500 1.143001357067e+01 + 36.5000 1.143514798363e+01 + 36.7500 1.143672214843e+01 + 37.0000 1.143473531163e+01 + 37.2500 1.142919008864e+01 + 37.5000 1.142009246096e+01 + 37.7500 1.140745176824e+01 + 38.0000 1.139128069512e+01 + 38.2500 1.137159525288e+01 + 38.5000 1.134841475595e+01 + 38.7500 1.132176179335e+01 + 39.0000 1.129166219509e+01 + 39.2500 1.125814499359e+01 + 39.5000 1.122124238029e+01 + 39.7500 1.118098965740e+01 + 40.0000 1.113742518507e+01 + 40.2500 1.109059032390e+01 + 40.5000 1.104052937308e+01 + 40.7500 1.098728950422e+01 + 41.0000 1.093092069099e+01 + 41.2500 1.087147563475e+01 + 41.5000 1.080900968633e+01 + 41.7500 1.074358076410e+01 + 42.0000 1.067524926857e+01 + 42.2500 1.060407799356e+01 + 42.5000 1.053013203428e+01 + 42.7500 1.045347869241e+01 + 43.0000 1.037418737844e+01 + 43.2500 1.029232951136e+01 + 43.5000 1.020797841608e+01 + 43.7500 1.012120921860e+01 + 44.0000 1.003209873928e+01 + 44.2500 9.940725384327e+00 + 44.5000 9.847169035829e+00 + 44.7500 9.751510940382e+00 + 45.0000 9.653833596696e+00 + 45.2500 9.554220642293e+00 + 45.5000 9.452756739556e+00 + 45.7500 9.349527461329e+00 + 46.0000 9.244619176283e+00 + 46.2500 9.138118934276e+00 + 46.5000 9.030114351892e+00 + 46.7500 8.920693498389e+00 + 47.0000 8.809944782248e+00 + 47.2500 8.697956838519e+00 + 47.5000 8.584818417175e+00 + 47.7500 8.470618272651e+00 + 48.0000 8.355445054758e+00 + 48.2500 8.239387201158e+00 + 48.5000 8.122532831561e+00 + 48.7500 8.004969643831e+00 + 49.0000 7.886784812144e+00 + 49.2500 7.768064887369e+00 + 49.5000 7.648895699804e+00 + 49.7500 7.529362264428e+00 + 50.0000 7.409548688773e+00 + 50.2500 7.289538083575e+00 + 50.5000 7.169412476295e+00 + 50.7500 7.049252727625e+00 + 51.0000 6.929138451089e+00 + 51.2500 6.809147935827e+00 + 51.5000 6.689358072631e+00 + 51.7500 6.569844283339e+00 + 52.0000 6.450680453623e+00 + 52.2500 6.331938869248e+00 + 52.5000 6.213690155849e+00 + 52.7500 6.096003222261e+00 + 53.0000 5.978945207444e+00 + 53.2500 5.862581431025e+00 + 53.5000 5.746975347462e+00 + 53.7500 5.632188503870e+00 + 54.0000 5.518280501465e+00 + 54.2500 5.405308960667e+00 + 54.5000 5.293329489808e+00 + 54.7500 5.182395657449e+00 + 55.0000 5.072558968266e+00 + 55.2500 4.963868842476e+00 + 55.5000 4.856372598748e+00 + 55.7500 4.750115440575e+00 + 56.0000 4.645140446024e+00 + 56.2500 4.541488560829e+00 + 56.5000 4.439198594743e+00 + 56.7500 4.338307221092e+00 + 57.0000 4.238848979446e+00 + 57.2500 4.140856281335e+00 + 57.5000 4.044359418916e+00 + 57.7500 3.949386576517e+00 + 58.0000 3.855963844950e+00 + 58.2500 3.764115238516e+00 + 58.5000 3.673862714588e+00 + 58.7500 3.585226195682e+00 + 59.0000 3.498223593915e+00 + 59.2500 3.412870837731e+00 + 59.5000 3.329181900813e+00 + 59.7500 3.247168833052e+00 + 60.0000 3.166841793477e+00 + 60.2500 3.088209085030e+00 + 60.5000 3.011277191087e+00 + 60.7500 2.936050813604e+00 + 61.0000 2.862532912785e+00 + 61.2500 2.790724748167e+00 + 61.5000 2.720625920997e+00 + 61.7500 2.652234417826e+00 + 62.0000 2.585546655173e+00 + 62.2500 2.520557525190e+00 + 62.5000 2.457260442207e+00 + 62.7500 2.395647390056e+00 + 63.0000 2.335708970079e+00 + 63.2500 2.277434449728e+00 + 63.5000 2.220811811649e+00 + 63.7500 2.165827803164e+00 + 64.0000 2.112467986069e+00 + 64.2500 2.060716786647e+00 + 64.5000 2.010557545820e+00 + 64.7500 1.961972569357e+00 + 65.0000 1.914943178060e+00 + 65.2500 1.869449757847e+00 + 65.5000 1.825471809670e+00 + 65.7500 1.782987999189e+00 + 66.0000 1.741976206141e+00 + 66.2500 1.702413573336e+00 + 66.5000 1.664276555230e+00 + 66.7500 1.627540966008e+00 + 67.0000 1.592182027125e+00 + 67.2500 1.558174414265e+00 + 67.5000 1.525492303657e+00 + 67.7500 1.494109417709e+00 + 68.0000 1.463999069929e+00 + 68.2500 1.435134209076e+00 + 68.5000 1.407487462520e+00 + 68.7500 1.381031178778e+00 + 69.0000 1.355737469185e+00 + 69.2500 1.331578248693e+00 + 69.5000 1.308525275750e+00 + 69.7500 1.286550191259e+00 + 70.0000 1.265624556585e+00 + 70.2500 1.245719890595e+00 + 70.5000 1.226807705722e+00 + 70.7500 1.208859543034e+00 + 71.0000 1.191847006302e+00 + 71.2500 1.175741795054e+00 + 71.5000 1.160515736615e+00 + 71.7500 1.146140817123e+00 + 72.0000 1.132589211517e+00 + 72.2500 1.119833312502e+00 + 72.5000 1.107845758480e+00 + 72.7500 1.096599460459e+00 + 73.0000 1.086067627936e+00 + 73.2500 1.076223793758e+00 + 73.5000 1.067041837966e+00 + 73.7500 1.058496010630e+00 + 74.0000 1.050560953671e+00 + 74.2500 1.043211721697e+00 + 74.5000 1.036423801836e+00 + 74.7500 1.030173132592e+00 + 75.0000 1.024436121728e+00 + 75.2500 1.019189663184e+00 + 75.5000 1.014411153034e+00 + 75.7500 1.010078504506e+00 + 76.0000 1.006170162064e+00 + 76.2500 1.002665114564e+00 + 76.5000 9.995429074987e-01 + 76.7500 9.967836543353e-01 + 77.0000 9.943680469666e-01 + 77.2500 9.922773652762e-01 + 77.5000 9.904934858355e-01 + 77.7500 9.889988897403e-01 + 78.0000 9.877766695995e-01 + 78.2500 9.868105356855e-01 + 78.5000 9.860848212580e-01 + 78.7500 9.855844870720e-01 + 79.0000 9.852951250792e-01 + 79.2500 9.852029613359e-01 + 79.5000 9.852948581255e-01 + 79.7500 9.855583153076e-01 + 80.0000 9.859814709031e-01 + 80.2500 9.865531009268e-01 + 80.5000 9.872626184763e-01 + 80.7500 9.881000720886e-01 + 81.0000 9.890561433744e-01 + 81.2500 9.901221439398e-01 + 81.5000 9.912900116065e-01 + 81.7500 9.925523059400e-01 + 82.0000 9.939022030966e-01 + 82.2500 9.953334900001e-01 + 82.5000 9.968405578578e-01 + 82.7500 9.984183950271e-01 + 83.0000 1.000062579244e+00 + 83.2500 1.001769269224e+00 + 83.5000 1.003535195646e+00 + 83.7500 1.005357651533e+00 + 84.0000 1.007234482039e+00 + 84.2500 1.009164073658e+00 + 84.5000 1.011145342857e+00 + 84.7500 1.013177724167e+00 + 85.0000 1.015261157718e+00 + 85.2500 1.017396076254e+00 + 85.5000 1.019583391630e+00 + 85.7500 1.021824480814e+00 + 86.0000 1.024121171390e+00 + 86.2500 1.026475726611e+00 + 86.5000 1.028890829978e+00 + 86.7500 1.031369569397e+00 + 87.0000 1.033915420902e+00 + 87.2500 1.036532231983e+00 + 87.5000 1.039224204524e+00 + 87.7500 1.041995877372e+00 + 88.0000 1.044852108561e+00 + 88.2500 1.047798057202e+00 + 88.5000 1.050839165066e+00 + 88.7500 1.053981137876e+00 + 89.0000 1.057229926330e+00 + 89.2500 1.060591706881e+00 + 89.5000 1.064072862285e+00 + 89.7500 1.067679961951e+00 + 90.0000 1.071419742110e+00 + 90.2500 1.075299085825e+00 + 90.5000 1.079325002867e+00 + 90.7500 1.083504609491e+00 + 91.0000 1.087845108112e+00 + 91.2500 1.092353766934e+00 + 91.5000 1.097037899538e+00 + 91.7500 1.101904844464e+00 + 92.0000 1.106961944804e+00 + 92.2500 1.112216527843e+00 + 92.5000 1.117675884769e+00 + 92.7500 1.123347250471e+00 + 93.0000 1.129237783464e+00 + 93.2500 1.135354545963e+00 + 93.5000 1.141704484125e+00 + 93.7500 1.148294408502e+00 + 94.0000 1.155130974711e+00 + 94.2500 1.162220664369e+00 + 94.5000 1.169569766300e+00 + 94.7500 1.177184358057e+00 + 95.0000 1.185070287775e+00 + 95.2500 1.193233156377e+00 + 95.5000 1.201678300182e+00 + 95.7500 1.210410773905e+00 + 96.0000 1.219435334105e+00 + 96.2500 1.228756423093e+00 + 96.5000 1.238378153319e+00 + 96.7500 1.248304292271e+00 + 97.0000 1.258538247910e+00 + 97.2500 1.269083054655e+00 + 97.5000 1.279941359945e+00 + 97.7500 1.291115411400e+00 + 98.0000 1.302607044605e+00 + 98.2500 1.314417671530e+00 + 98.5000 1.326548269604e+00 + 98.7500 1.338999371479e+00 + 99.0000 1.351771055472e+00 + 99.2500 1.364862936735e+00 + 99.5000 1.378274159140e+00 + 99.7500 1.392003387912e+00 +100.0000 1.406048803019e+00 +100.2500 1.420408093329e+00 +100.5000 1.435078451548e+00 +100.7500 1.450056569954e+00 +101.0000 1.465338636924e+00 +101.2500 1.480920334284e+00 +101.5000 1.496796835465e+00 +101.7500 1.512962804489e+00 +102.0000 1.529412395784e+00 +102.2500 1.546139254833e+00 +102.5000 1.563136519650e+00 +102.7500 1.580396823108e+00 +103.0000 1.597912296092e+00 +103.2500 1.615674571491e+00 +103.5000 1.633674789027e+00 +103.7500 1.651903600911e+00 +104.0000 1.670351178324e+00 +104.2500 1.689007218717e+00 +104.5000 1.707860953922e+00 +104.7500 1.726901159065e+00 +105.0000 1.746116162268e+00 +105.2500 1.765493855138e+00 +105.5000 1.785021704013e+00 +105.7500 1.804686761974e+00 +106.0000 1.824475681580e+00 +106.2500 1.844374728338e+00 +106.5000 1.864369794867e+00 +106.7500 1.884446415750e+00 +107.0000 1.904589783049e+00 +107.2500 1.924784762463e+00 +107.5000 1.945015910102e+00 +107.7500 1.965267489866e+00 +108.0000 1.985523491383e+00 +108.2500 2.005767648501e+00 +108.5000 2.025983458295e+00 +108.7500 2.046154200565e+00 +109.0000 2.066262957793e+00 +109.2500 2.086292635536e+00 +109.5000 2.106225983218e+00 +109.7500 2.126045615286e+00 +110.0000 2.145734032712e+00 +110.2500 2.165273644798e+00 +110.5000 2.184646791240e+00 +110.7500 2.203835764446e+00 +111.0000 2.222822832042e+00 +111.2500 2.241590259550e+00 +111.5000 2.260120333193e+00 +111.7500 2.278395382800e+00 +112.0000 2.296397804764e+00 +112.2500 2.314110085021e+00 +112.5000 2.331514822015e+00 +112.7500 2.348594749612e+00 +113.0000 2.365332759917e+00 +113.2500 2.381711925973e+00 +113.5000 2.397715524290e+00 +113.7500 2.413327057173e+00 +114.0000 2.428530274815e+00 +114.2500 2.443309197116e+00 +114.5000 2.457648135187e+00 +114.7500 2.471531712515e+00 +115.0000 2.484944885745e+00 +115.2500 2.497872965040e+00 +115.5000 2.510301634004e+00 +115.7500 2.522216969108e+00 +116.0000 2.533605458615e+00 +116.2500 2.544454020948e+00 +116.5000 2.554750022484e+00 +116.7500 2.564481294739e+00 +117.0000 2.573636150920e+00 +117.2500 2.582203401810e+00 +117.5000 2.590172370962e+00 +117.7500 2.597532909180e+00 +118.0000 2.604275408256e+00 +118.2500 2.610390813946e+00 +118.5000 2.615870638162e+00 +118.7500 2.620706970357e+00 +119.0000 2.624892488088e+00 +119.2500 2.628420466738e+00 +119.5000 2.631284788381e+00 +119.7500 2.633479949777e+00 +120.0000 2.635001069485e+00 +120.2500 2.635843894079e+00 +120.5000 2.636004803463e+00 +120.7500 2.635480815275e+00 +121.0000 2.634269588371e+00 +121.2500 2.632369425392e+00 +121.5000 2.629779274404e+00 +121.7500 2.626498729616e+00 +122.0000 2.622528031168e+00 +122.2500 2.617868064007e+00 +122.5000 2.612520355840e+00 +122.7500 2.606487074172e+00 +123.0000 2.599771022453e+00 +123.2500 2.592375635317e+00 +123.5000 2.584304972949e+00 +123.7500 2.575563714572e+00 +124.0000 2.566157151086e+00 +124.2500 2.556091176861e+00 +124.5000 2.545372280708e+00 +124.7500 2.534007536046e+00 +125.0000 2.522004590288e+00 +125.2500 2.509371653454e+00 +125.5000 2.496117486058e+00 +125.7500 2.482251386267e+00 +126.0000 2.467783176380e+00 +126.2500 2.452723188640e+00 +126.5000 2.437082250405e+00 +126.7500 2.420871668725e+00 +127.0000 2.404103214329e+00 +127.2500 2.386789105075e+00 +127.5000 2.368941988887e+00 +127.7500 2.350574926199e+00 +128.0000 2.331701371965e+00 +128.2500 2.312335157243e+00 +128.5000 2.292490470407e+00 +128.7500 2.272181838005e+00 +129.0000 2.251424105316e+00 +129.2500 2.230232416624e+00 +129.5000 2.208622195257e+00 +129.7500 2.186609123421e+00 +130.0000 2.164209121873e+00 +130.2500 2.141438329452e+00 +130.5000 2.118313082524e+00 +130.7500 2.094849894366e+00 +131.0000 2.071065434520e+00 +131.2500 2.046976508168e+00 +131.5000 2.022600035548e+00 +131.7500 1.997953031447e+00 +132.0000 1.973052584816e+00 +132.2500 1.947915838531e+00 +132.5000 1.922559969328e+00 +132.7500 1.897002167958e+00 +133.0000 1.871259619583e+00 +133.2500 1.845349484439e+00 +133.5000 1.819288878815e+00 +133.7500 1.793094856347e+00 +134.0000 1.766784389683e+00 +134.2500 1.740374352526e+00 +134.5000 1.713881502087e+00 +134.7500 1.687322461972e+00 +135.0000 1.660713705528e+00 +135.2500 1.634071539657e+00 +135.5000 1.607412089139e+00 +135.7500 1.580751281464e+00 +136.0000 1.554104832202e+00 +136.2500 1.527488230919e+00 +136.5000 1.500916727661e+00 +136.7500 1.474405320016e+00 +137.0000 1.447968740768e+00 +137.2500 1.421621446149e+00 +137.5000 1.395377604702e+00 +137.7500 1.369251086767e+00 +138.0000 1.343255454584e+00 +138.2500 1.317403953036e+00 +138.5000 1.291709501015e+00 +138.7500 1.266184683437e+00 +139.0000 1.240841743878e+00 +139.2500 1.215692577865e+00 +139.5000 1.190748726788e+00 +139.7500 1.166021372455e+00 +140.0000 1.141521332269e+00 +140.2500 1.117259055035e+00 +140.5000 1.093244617377e+00 +140.7500 1.069487720771e+00 +141.0000 1.045997689179e+00 +141.2500 1.022783467269e+00 +141.5000 9.998536192271e-01 +141.7500 9.772163281268e-01 +142.0000 9.548793958655e-01 +142.2500 9.328502436414e-01 +142.5000 9.111359129607e-01 +142.7500 8.897430671613e-01 +143.0000 8.686779934358e-01 +143.2500 8.479466053397e-01 +143.5000 8.275544457661e-01 +143.7500 8.075066903709e-01 +144.0000 7.878081514320e-01 +144.2500 7.684632821214e-01 +144.5000 7.494761811752e-01 +144.7500 7.308505979414e-01 +145.0000 7.125899377854e-01 +145.2500 6.946972678368e-01 +145.5000 6.771753230563e-01 +145.7500 6.600265126039e-01 +146.0000 6.432529264896e-01 +146.2500 6.268563424866e-01 +146.5000 6.108382332883e-01 +146.7500 5.951997738903e-01 +147.0000 5.799418491772e-01 +147.2500 5.650650616974e-01 +147.5000 5.505697396053e-01 +147.7500 5.364559447550e-01 +148.0000 5.227234809258e-01 +148.2500 5.093719021628e-01 +148.5000 4.964005212165e-01 +148.7500 4.838084180620e-01 +149.0000 4.715944484858e-01 +149.2500 4.597572527200e-01 +149.5000 4.482952641128e-01 +149.7500 4.372067178177e-01 +150.0000 4.264896594892e-01 +150.2500 4.161419539707e-01 +150.5000 4.061612939618e-01 +150.7500 3.965452086534e-01 +151.0000 3.872910723177e-01 +151.2500 3.783961128434e-01 +151.5000 3.698574202050e-01 +151.7500 3.616719548565e-01 +152.0000 3.538365560401e-01 +152.2500 3.463479500026e-01 +152.5000 3.392027581101e-01 +152.7500 3.323975048542e-01 +153.0000 3.259286257442e-01 +153.2500 3.197924750772e-01 +153.5000 3.139853335828e-01 +153.7500 3.085034159355e-01 +154.0000 3.033428781323e-01 +154.2500 2.984998247300e-01 +154.5000 2.939703159406e-01 +154.7500 2.897503745804e-01 +155.0000 2.858359928716e-01 +155.2500 2.822231390941e-01 +155.5000 2.789077640864e-01 +155.7500 2.758858075937e-01 +156.0000 2.731532044630e-01 +156.2500 2.707058906862e-01 +156.5000 2.685398092877e-01 +156.7500 2.666509160612e-01 +157.0000 2.650351851517e-01 +157.2500 2.636886144874e-01 +157.5000 2.626072310593e-01 +157.7500 2.617870960514e-01 +158.0000 2.612243098216e-01 +158.2500 2.609150167356e-01 +158.5000 2.608554098537e-01 +158.7500 2.610417354734e-01 +159.0000 2.614702975276e-01 +159.2500 2.621374618416e-01 +159.5000 2.630396602475e-01 +159.7500 2.641733945606e-01 +160.0000 2.655352404153e-01 +160.2500 2.671218509642e-01 +160.5000 2.689299604400e-01 +160.7500 2.709563875804e-01 +161.0000 2.731980389178e-01 +161.2500 2.756519119322e-01 +161.5000 2.783150980689e-01 +161.7500 2.811847856195e-01 +162.0000 2.842582624664e-01 +162.2500 2.875329186894e-01 +162.5000 2.910062490332e-01 +162.7500 2.946758552356e-01 +163.0000 2.985394482124e-01 +163.2500 3.025948500992e-01 +163.5000 3.068399961460e-01 +163.7500 3.112729364633e-01 +164.0000 3.158918376154e-01 +164.2500 3.206949840589e-01 +164.5000 3.256807794216e-01 +164.7500 3.308477476187e-01 +165.0000 3.361945338019e-01 +165.2500 3.417199051369e-01 +165.5000 3.474227514048e-01 +165.7500 3.533020854221e-01 +166.0000 3.593570432751e-01 +166.2500 3.655868843618e-01 +166.5000 3.719909912376e-01 +166.7500 3.785688692582e-01 +167.0000 3.853201460134e-01 +167.2500 3.922445705481e-01 +167.5000 3.993420123617e-01 +167.7500 4.066124601829e-01 +168.0000 4.140560205119e-01 +168.2500 4.216729159251e-01 +168.5000 4.294634831369e-01 +168.7500 4.374281708120e-01 +169.0000 4.455675371233e-01 +169.2500 4.538822470508e-01 +169.5000 4.623730694150e-01 +169.7500 4.710408736416e-01 +170.0000 4.798866262518e-01 +170.2500 4.889113870754e-01 +170.5000 4.981163051820e-01 +170.7500 5.075026145280e-01 +171.0000 5.170716293156e-01 +171.2500 5.268247390633e-01 +171.5000 5.367634033846e-01 +171.7500 5.468891464750e-01 +172.0000 5.572035513061e-01 +172.2500 5.677082535289e-01 +172.5000 5.784049350845e-01 +172.7500 5.892953175269e-01 +173.0000 6.003811550587e-01 +173.2500 6.116642272835e-01 +173.5000 6.231463316803e-01 +173.7500 6.348292758027e-01 +174.0000 6.467148692118e-01 +174.2500 6.588049151474e-01 +174.5000 6.711012019466e-01 +174.7500 6.836054942181e-01 +175.0000 6.963195237828e-01 +175.2500 7.092449803897e-01 +175.5000 7.223835022211e-01 +175.7500 7.357366661982e-01 +176.0000 7.493059781009e-01 +176.2500 7.630928625180e-01 +176.5000 7.770986526409e-01 +176.7500 7.913245799201e-01 +177.0000 8.057717635999e-01 +177.2500 8.204412001515e-01 +177.5000 8.353337526225e-01 +177.7500 8.504501399240e-01 +178.0000 8.657909260759e-01 +178.2500 8.813565094333e-01 +178.5000 8.971471119152e-01 +178.7500 9.131627682603e-01 +179.0000 9.294033153339e-01 +179.2500 9.458683815099e-01 +179.5000 9.625573761545e-01 +179.7500 9.794694792369e-01 +180.0000 9.966036310937e-01 +180.2500 1.013958522373e+00 +180.5000 1.031532584190e+00 +180.7500 1.049323978510e+00 +181.0000 1.067330588805e+00 +181.2500 1.085550010995e+00 +181.5000 1.103979544707e+00 +181.7500 1.122616184888e+00 +182.0000 1.141456613790e+00 +182.2500 1.160497193355e+00 +182.5000 1.179733958033e+00 +182.7500 1.199162608063e+00 +183.0000 1.218778503233e+00 +183.2500 1.238576657150e+00 +183.5000 1.258551732056e+00 +183.7500 1.278698034194e+00 +184.0000 1.299009509775e+00 +184.2500 1.319479741541e+00 +184.5000 1.340101945976e+00 +184.7500 1.360868971157e+00 +185.0000 1.381773295294e+00 +185.2500 1.402807025957e+00 +185.5000 1.423961900018e+00 +185.7500 1.445229284329e+00 +186.0000 1.466600177137e+00 +186.2500 1.488065210267e+00 +186.5000 1.509614652075e+00 +186.7500 1.531238411188e+00 +187.0000 1.552926041032e+00 +187.2500 1.574666745168e+00 +187.5000 1.596449383434e+00 +187.7500 1.618262478897e+00 +188.0000 1.640094225619e+00 +188.2500 1.661932497245e+00 +188.5000 1.683764856396e+00 +188.7500 1.705578564878e+00 +189.0000 1.727360594696e+00 +189.2500 1.749097639864e+00 +189.5000 1.770776129008e+00 +189.7500 1.792382238746e+00 +190.0000 1.813901907830e+00 +190.2500 1.835320852044e+00 +190.5000 1.856624579830e+00 +190.7500 1.877798408633e+00 +191.0000 1.898827481936e+00 +191.2500 1.919696786969e+00 +191.5000 1.940391173060e+00 +191.7500 1.960895370611e+00 +192.0000 1.981194010662e+00 +192.2500 2.001271645018e+00 +192.5000 2.021112766907e+00 +192.7500 2.040701832136e+00 +193.0000 2.060023280708e+00 +193.2500 2.079061558867e+00 +193.5000 2.097801141531e+00 +193.7500 2.116226555077e+00 +194.0000 2.134322400438e+00 +194.2500 2.152073376466e+00 +194.5000 2.169464303527e+00 +194.7500 2.186480147281e+00 +195.0000 2.203106042596e+00 +195.2500 2.219327317573e+00 +195.5000 2.235129517611e+00 +195.7500 2.250498429484e+00 +196.0000 2.265420105380e+00 +196.2500 2.279880886853e+00 +196.5000 2.293867428647e+00 +196.7500 2.307366722341e+00 +197.0000 2.320366119773e+00 +197.2500 2.332853356194e+00 +197.5000 2.344816573110e+00 +197.7500 2.356244340764e+00 +198.0000 2.367125680219e+00 +198.2500 2.377450084988e+00 +198.5000 2.387207542181e+00 +198.7500 2.396388553118e+00 +199.0000 2.404984153370e+00 +199.2500 2.412985932192e+00 +199.5000 2.420386051302e+00 +199.7500 2.427177262971e+00 +200.0000 2.433352927400e+00 +200.2500 2.438907029330e+00 +200.5000 2.443834193864e+00 +200.7500 2.448129701476e+00 +201.0000 2.451789502157e+00 +201.2500 2.454810228698e+00 +201.5000 2.457189209059e+00 +201.7500 2.458924477815e+00 +202.0000 2.460014786662e+00 +202.2500 2.460459613938e+00 +202.5000 2.460259173175e+00 +202.7500 2.459414420642e+00 +203.0000 2.457927061876e+00 +203.2500 2.455799557186e+00 +203.5000 2.453035126122e+00 +203.7500 2.449637750905e+00 +204.0000 2.445612178808e+00 +204.2500 2.440963923487e+00 +204.5000 2.435699265262e+00 +204.7500 2.429825250353e+00 +205.0000 2.423349689062e+00 +205.2500 2.416281152925e+00 +205.5000 2.408628970826e+00 +205.7500 2.400403224084e+00 +206.0000 2.391614740536e+00 +206.2500 2.382275087617e+00 +206.5000 2.372396564454e+00 +206.7500 2.361992192993e+00 +207.0000 2.351075708178e+00 +207.2500 2.339661547197e+00 +207.5000 2.327764837819e+00 +207.7500 2.315401385843e+00 +208.0000 2.302587661687e+00 +208.2500 2.289340786132e+00 +208.5000 2.275678515257e+00 +208.7500 2.261619224585e+00 +209.0000 2.247181892476e+00 +209.2500 2.232386082779e+00 +209.5000 2.217251926794e+00 +209.7500 2.201800104556e+00 +210.0000 2.186051825478e+00 +210.2500 2.170028808388e+00 +210.5000 2.153753260979e+00 +210.7500 2.137247858721e+00 +211.0000 2.120535723239e+00 +211.2500 2.103640400225e+00 +211.5000 2.086585836877e+00 +211.7500 2.069396358925e+00 +212.0000 2.052096647259e+00 +212.2500 2.034711714192e+00 +212.5000 2.017266879394e+00 +212.7500 1.999787745522e+00 +213.0000 1.982300173566e+00 +213.2500 1.964830257961e+00 +213.5000 1.947404301470e+00 +213.7500 1.930048789880e+00 +214.0000 1.912790366528e+00 +214.2500 1.895655806686e+00 +214.5000 1.878671991832e+00 +214.7500 1.861865883823e+00 +215.0000 1.845264499003e+00 +215.2500 1.828894882254e+00 +215.5000 1.812784081024e+00 +215.7500 1.796959119344e+00 +216.0000 1.781446971857e+00 +216.2500 1.766274537868e+00 +216.5000 1.751468615446e+00 +216.7500 1.737055875582e+00 +217.0000 1.723062836423e+00 +217.2500 1.709515837596e+00 +217.5000 1.696441014638e+00 +217.7500 1.683864273532e+00 +218.0000 1.671811265383e+00 +218.2500 1.660307361223e+00 +218.5000 1.649377626966e+00 +218.7500 1.639046798531e+00 +219.0000 1.629339257118e+00 +219.2500 1.620279004674e+00 +219.5000 1.611889639540e+00 +219.7500 1.604194332291e+00 +220.0000 1.597215801780e+00 +220.2500 1.590976291390e+00 +220.5000 1.585497545506e+00 +220.7500 1.580800786209e+00 +221.0000 1.576906690207e+00 +221.2500 1.573835366007e+00 +221.5000 1.571606331328e+00 +221.7500 1.570238490786e+00 +222.0000 1.569750113836e+00 +222.2500 1.570158812988e+00 +222.5000 1.571481522320e+00 +222.7500 1.573734476279e+00 +223.0000 1.576933188787e+00 +223.2500 1.581092432680e+00 +223.5000 1.586226219462e+00 +223.7500 1.592347779419e+00 +224.0000 1.599469542088e+00 +224.2500 1.607603117098e+00 +224.5000 1.616759275411e+00 +224.7500 1.626947930966e+00 +225.0000 1.638178122757e+00 +225.2500 1.650457997354e+00 +225.5000 1.663794791894e+00 +225.7500 1.678194817565e+00 +226.0000 1.693663443600e+00 +226.2500 1.710205081809e+00 +226.5000 1.727823171677e+00 +226.7500 1.746520166045e+00 +227.0000 1.766297517413e+00 +227.2500 1.787155664880e+00 +227.5000 1.809094021769e+00 +227.7500 1.832110963944e+00 +228.0000 1.856203818867e+00 +228.2500 1.881368855426e+00 +228.5000 1.907601274556e+00 +228.7500 1.934895200693e+00 +229.0000 1.963243674102e+00 +229.2500 1.992638644099e+00 +229.5000 2.023070963206e+00 +229.7500 2.054530382292e+00 +230.0000 2.087005546697e+00 +230.2500 2.120483993419e+00 +230.5000 2.154952149362e+00 +230.7500 2.190395330704e+00 +231.0000 2.226797743402e+00 +231.2500 2.264142484889e+00 +231.5000 2.302411546972e+00 +231.7500 2.341585819979e+00 +232.0000 2.381645098193e+00 +232.2500 2.422568086580e+00 +232.5000 2.464332408865e+00 +232.7500 2.506914616971e+00 +233.0000 2.550290201852e+00 +233.2500 2.594433605742e+00 +233.5000 2.639318235848e+00 +233.7500 2.684916479503e+00 +234.0000 2.731199720806e+00 +234.2500 2.778138358753e+00 +234.5000 2.825701826893e+00 +234.7500 2.873858614497e+00 +235.0000 2.922576289276e+00 +235.2500 2.971821521631e+00 +235.5000 3.021560110457e+00 +235.7500 3.071757010492e+00 +236.0000 3.122376361212e+00 +236.2500 3.173381517266e+00 +236.5000 3.224735080447e+00 +236.7500 3.276398933181e+00 +237.0000 3.328334273522e+00 +237.2500 3.380501651637e+00 +237.5000 3.432861007752e+00 +237.7500 3.485371711543e+00 +238.0000 3.537992602938e+00 +238.2500 3.590682034290e+00 +238.5000 3.643397913900e+00 +238.7500 3.696097750845e+00 +239.0000 3.748738701050e+00 +239.2500 3.801277614595e+00 +239.5000 3.853671084160e+00 +239.7500 3.905875494601e+00 +240.0000 3.957847073557e+00 +240.2500 4.009541943065e+00 +240.5000 4.060916172089e+00 +240.7500 4.111925829917e+00 +241.0000 4.162527040347e+00 +241.2500 4.212676036590e+00 +241.5000 4.262329216818e+00 +241.7500 4.311443200274e+00 +242.0000 4.359974883869e+00 +242.2500 4.407881499180e+00 +242.5000 4.455120669763e+00 +242.7500 4.501650468703e+00 +243.0000 4.547429476295e+00 +243.2500 4.592416837788e+00 +243.5000 4.636572321080e+00 +243.7500 4.679856374286e+00 +244.0000 4.722230183084e+00 +244.2500 4.763655727726e+00 +244.5000 4.804095839655e+00 +244.7500 4.843514257594e+00 +245.0000 4.881875683045e+00 +245.2500 4.919145835075e+00 +245.5000 4.955291504321e+00 +245.7500 4.990280606095e+00 +246.0000 5.024082232521e+00 +246.2500 5.056666703588e+00 +246.5000 5.088005617048e+00 +246.7500 5.118071897061e+00 +247.0000 5.146839841496e+00 +247.2500 5.174285167816e+00 +247.5000 5.200385057454e+00 +247.7500 5.225118198593e+00 +248.0000 5.248464827298e+00 +248.2500 5.270406766893e+00 +248.5000 5.290927465531e+00 +248.7500 5.310012031887e+00 +249.0000 5.327647268899e+00 +249.2500 5.343821705503e+00 +249.5000 5.358525626300e+00 +249.7500 5.371751099104e+00 +250.0000 5.383492000315e+00 +250.2500 5.393744038071e+00 +250.5000 5.402504773146e+00 +250.7500 5.409773637538e+00 +251.0000 5.415551950729e+00 +251.2500 5.419842933579e+00 +251.5000 5.422651719830e+00 +251.7500 5.423985365196e+00 +252.0000 5.423852854029e+00 +252.2500 5.422265103546e+00 +252.5000 5.419234965603e+00 +252.7500 5.414777226020e+00 +253.0000 5.408908601456e+00 +253.2500 5.401647733841e+00 +253.5000 5.393015182365e+00 +253.7500 5.383033413053e+00 +254.0000 5.371726785931e+00 +254.2500 5.359121539811e+00 +254.5000 5.345245774722e+00 +254.7500 5.330129432010e+00 +255.0000 5.313804272145e+00 +255.2500 5.296303850279e+00 +255.5000 5.277663489577e+00 +255.7500 5.257920252385e+00 +256.0000 5.237112909264e+00 +256.2500 5.215281905957e+00 +256.5000 5.192469328327e+00 +256.7500 5.168718865330e+00 +257.0000 5.144075770073e+00 +257.2500 5.118586819030e+00 +257.5000 5.092300269461e+00 +257.7500 5.065265815114e+00 +258.0000 5.037534540263e+00 +258.2500 5.009158872157e+00 +258.5000 4.980192531951e+00 +258.7500 4.950690484174e+00 +259.0000 4.920708884826e+00 +259.2500 4.890305028158e+00 +259.5000 4.859537292217e+00 +259.7500 4.828465083224e+00 +260.0000 4.797148778867e+00 +260.2500 4.765649670564e+00 +260.5000 4.734029904793e+00 +260.7500 4.702352423542e+00 +261.0000 4.670680903968e+00 +261.2500 4.639079697322e+00 +261.5000 4.607613767229e+00 +261.7500 4.576348627378e+00 +262.0000 4.545350278709e+00 +262.2500 4.514685146153e+00 +262.5000 4.484420015006e+00 +262.7500 4.454621966995e+00 +263.0000 4.425358316112e+00 +263.2500 4.396696544279e+00 +263.5000 4.368704236907e+00 +263.7500 4.341449018419e+00 +264.0000 4.314998487793e+00 +264.2500 4.289420154197e+00 +264.5000 4.264781372761e+00 +264.7500 4.241149280567e+00 +265.0000 4.218590732899e+00 +265.2500 4.197172239815e+00 +265.5000 4.176959903104e+00 +265.7500 4.158019353679e+00 +266.0000 4.140415689456e+00 +266.2500 4.124213413783e+00 +266.5000 4.109476374475e+00 +266.7500 4.096267703484e+00 +267.0000 4.084649757291e+00 +267.2500 4.074684058045e+00 +267.5000 4.066431235515e+00 +267.7500 4.059950969892e+00 +268.0000 4.055301935514e+00 +268.2500 4.052541745538e+00 +268.5000 4.051726897637e+00 +268.7500 4.052912720748e+00 +269.0000 4.056153322939e+00 +269.2500 4.061501540440e+00 +269.5000 4.069008887891e+00 +269.7500 4.078725509853e+00 +270.0000 4.090700133649e+00 +270.2500 4.104980023570e+00 +270.5000 4.121610936512e+00 +270.7500 4.140637079100e+00 +271.0000 4.162101066335e+00 +271.2500 4.186043881852e+00 +271.5000 4.212504839810e+00 +271.7500 4.241521548501e+00 +272.0000 4.273129875718e+00 +272.2500 4.307363915946e+00 +272.5000 4.344255959441e+00 +272.7500 4.383836463244e+00 +273.0000 4.426134024211e+00 +273.2500 4.471175354098e+00 +273.5000 4.518985256779e+00 +273.7500 4.569586607657e+00 +274.0000 4.623000335319e+00 +274.2500 4.679245405519e+00 +274.5000 4.738338807526e+00 +274.7500 4.800295542927e+00 +275.0000 4.865128616921e+00 +275.2500 4.932849032186e+00 +275.5000 5.003465785370e+00 +275.7500 5.076985866271e+00 +276.0000 5.153414259754e+00 +276.2500 5.232753950483e+00 +276.5000 5.315005930502e+00 +276.7500 5.400169209733e+00 +277.0000 5.488240829441e+00 +277.2500 5.579215878704e+00 +277.5000 5.673087513951e+00 +277.7500 5.769846981604e+00 +278.0000 5.869483643854e+00 +278.2500 5.971985007629e+00 +278.5000 6.077336756764e+00 +278.7500 6.185522787412e+00 +279.0000 6.296525246725e+00 +279.2500 6.410324574805e+00 +279.5000 6.526899549957e+00 +279.7500 6.646227337237e+00 +280.0000 6.768283540303e+00 +280.2500 6.893042256566e+00 +280.5000 7.020476135621e+00 +280.7500 7.150556440949e+00 +281.0000 7.283253114852e+00 +281.2500 7.418534846609e+00 +281.5000 7.556369143780e+00 +281.7500 7.696722406647e+00 +282.0000 7.839560005704e+00 +282.2500 7.984846362145e+00 +282.5000 8.132545031280e+00 +282.7500 8.282618788780e+00 +283.0000 8.435029719686e+00 +283.2500 8.589739310050e+00 +283.5000 8.746708541129e+00 +283.7500 8.905897985993e+00 +284.0000 9.067267908427e+00 +284.2500 9.230778363994e+00 +284.5000 9.396389303106e+00 +284.7500 9.564060675956e+00 +285.0000 9.733752539139e+00 +285.2500 9.905425163796e+00 +285.5000 1.007903914510e+01 +285.7500 1.025455551289e+01 +286.0000 1.043193584326e+01 +286.2500 1.061114237087e+01 +286.5000 1.079213810187e+01 +286.7500 1.097488692700e+01 +287.0000 1.115935373491e+01 +287.2500 1.134550452525e+01 +287.5000 1.153330652138e+01 +287.7500 1.172272828246e+01 +288.0000 1.191373981464e+01 +288.2500 1.210631268109e+01 +288.5000 1.230042011064e+01 +288.7500 1.249603710473e+01 +289.0000 1.269314054244e+01 +289.2500 1.289170928330e+01 +289.5000 1.309172426761e+01 +289.7500 1.329316861398e+01 +290.0000 1.349602771395e+01 +290.2500 1.370028932318e+01 +290.5000 1.390594364911e+01 +290.7500 1.411298343488e+01 +291.0000 1.432140403898e+01 +291.2500 1.453120351066e+01 +291.5000 1.474238266066e+01 +291.7500 1.495494512710e+01 +292.0000 1.516889743618e+01 +292.2500 1.538424905760e+01 +292.5000 1.560101245432e+01 +292.7500 1.581920312657e+01 +293.0000 1.603883964974e+01 +293.2500 1.625994370610e+01 +293.5000 1.648254011013e+01 +293.7500 1.670665682712e+01 +294.0000 1.693232498515e+01 +294.2500 1.715957888001e+01 +294.5000 1.738845597317e+01 +294.7500 1.761899688244e+01 +295.0000 1.785124536549e+01 +295.2500 1.808524829578e+01 +295.5000 1.832105563123e+01 +295.7500 1.855872037522e+01 +296.0000 1.879829853007e+01 +296.2500 1.903984904297e+01 +296.5000 1.928343374428e+01 +296.7500 1.952911727832e+01 +297.0000 1.977696702650e+01 +297.2500 2.002705302316e+01 +297.5000 2.027944786390e+01 +297.7500 2.053422660660e+01 +298.0000 2.079146666537e+01 +298.2500 2.105124769735e+01 +298.5000 2.131365148275e+01 +298.7500 2.157876179809e+01 +299.0000 2.184666428311e+01 +299.2500 2.211744630123e+01 +299.5000 2.239119679418e+01 +299.7500 2.266800613083e+01 +300.0000 2.294796595047e+01 +300.2500 2.323116900111e+01 +300.5000 2.351770897282e+01 +300.7500 2.380768032670e+01 +301.0000 2.410117811960e+01 +301.2500 2.439829782528e+01 +301.5000 2.469913515205e+01 +301.7500 2.500378585767e+01 +302.0000 2.531234556159e+01 +302.2500 2.562490955523e+01 +302.5000 2.594157261065e+01 +302.7500 2.626242878807e+01 +303.0000 2.658757124272e+01 +303.2500 2.691709203161e+01 +303.5000 2.725108192050e+01 +303.7500 2.758963019182e+01 +304.0000 2.793282445392e+01 +304.2500 2.828075045211e+01 +304.5000 2.863349188214e+01 +304.7500 2.899113020662e+01 +305.0000 2.935374447477e+01 +305.2500 2.972141114617e+01 +305.5000 3.009420391898e+01 +305.7500 3.047219356311e+01 +306.0000 3.085544775885e+01 +306.2500 3.124403094157e+01 +306.5000 3.163800415279e+01 +306.7500 3.203742489827e+01 +307.0000 3.244234701354e+01 +307.2500 3.285282053723e+01 +307.5000 3.326889159284e+01 +307.7500 3.369060227918e+01 +308.0000 3.411799056996e+01 +308.2500 3.455109022297e+01 +308.5000 3.498993069915e+01 +308.7500 3.543453709190e+01 +309.0000 3.588493006691e+01 +309.2500 3.634112581300e+01 +309.5000 3.680313600389e+01 +309.7500 3.727096777149e+01 +310.0000 3.774462369068e+01 +310.2500 3.822410177590e+01 +310.5000 3.870939548954e+01 +310.7500 3.920049376251e+01 +311.0000 3.969738102668e+01 +311.2500 4.020003725969e+01 +311.5000 4.070843804173e+01 +311.7500 4.122255462455e+01 +312.0000 4.174235401248e+01 +312.2500 4.226779905543e+01 +312.5000 4.279884855377e+01 +312.7500 4.333545737475e+01 +313.0000 4.387757658052e+01 +313.2500 4.442515356717e+01 +313.5000 4.497813221488e+01 +313.7500 4.553645304844e+01 +314.0000 4.610005340819e+01 +314.2500 4.666886763067e+01 +314.5000 4.724282723866e+01 +314.7500 4.782186114019e+01 +315.0000 4.840589583593e+01 +315.2500 4.899485563443e+01 +315.5000 4.958866287470e+01 +315.7500 5.018723815542e+01 +316.0000 5.079050057025e+01 +316.2500 5.139836794845e+01 +316.5000 5.201075710027e+01 +316.7500 5.262758406619e+01 +317.0000 5.324876436947e+01 +317.2500 5.387421327105e+01 +317.5000 5.450384602613e+01 +317.7500 5.513757814156e+01 +318.0000 5.577532563321e+01 +318.2500 5.641700528248e+01 +318.5000 5.706253489112e+01 +318.7500 5.771183353339e+01 +319.0000 5.836482180479e+01 +319.2500 5.902142206644e+01 +319.5000 5.968155868410e+01 +319.7500 6.034515826115e+01 +320.0000 6.101214986442e+01 +320.2500 6.168246524220e+01 +320.5000 6.235603903329e+01 +320.7500 6.303280896644e+01 +321.0000 6.371271604923e+01 +321.2500 6.439570474551e+01 +321.5000 6.508172314061e+01 +321.7500 6.577072309357e+01 +322.0000 6.646266037540e+01 +322.2500 6.715749479294e+01 +322.5000 6.785519029718e+01 +322.7500 6.855571507576e+01 +323.0000 6.925904162863e+01 +323.2500 6.996514682643e+01 +323.5000 7.067401195098e+01 +323.7500 7.138562271729e+01 +324.0000 7.209996927652e+01 +324.2500 7.281704619963e+01 +324.5000 7.353685244105e+01 +324.7500 7.425939128222e+01 +325.0000 7.498467025453e+01 +325.2500 7.571270104156e+01 +325.5000 7.644349936019e+01 +325.7500 7.717708482076e+01 +326.0000 7.791348076581e+01 +326.2500 7.865271408773e+01 +326.5000 7.939481502510e+01 +326.7500 8.013981693796e+01 +327.0000 8.088775606211e+01 +327.2500 8.163867124264e+01 +327.5000 8.239260364714e+01 +327.7500 8.314959645864e+01 +328.0000 8.390969454903e+01 +328.2500 8.467294413323e+01 +328.5000 8.543939240473e+01 +328.7500 8.620908715310e+01 +329.0000 8.698207636412e+01 +329.2500 8.775840780339e+01 +329.5000 8.853812858400e+01 +329.7500 8.932128471938e+01 +330.0000 9.010792066202e+01 +330.2500 9.089807882917e+01 +330.5000 9.169179911659e+01 +330.7500 9.248911840128e+01 +331.0000 9.329007003446e+01 +331.2500 9.409468332602e+01 +331.5000 9.490298302153e+01 +331.7500 9.571498877325e+01 +332.0000 9.653071460634e+01 +332.2500 9.735016838175e+01 +332.5000 9.817335125713e+01 +332.7500 9.900025714714e+01 +333.0000 9.983087218477e+01 +333.2500 1.006651741850e+02 +333.5000 1.015031321124e+02 +333.7500 1.023447055543e+02 +334.0000 1.031898442006e+02 +334.2500 1.040384873328e+02 +334.5000 1.048905633223e+02 +334.7500 1.057459891410e+02 +335.0000 1.066046698850e+02 +335.2500 1.074664983128e+02 +335.5000 1.083313544004e+02 +335.7500 1.091991049136e+02 +336.0000 1.100696030002e+02 +336.2500 1.109426878026e+02 +336.5000 1.118181840935e+02 +336.7500 1.126959019343e+02 +337.0000 1.135756363592e+02 +337.2500 1.144571670863e+02 +337.5000 1.153402582551e+02 +337.7500 1.162246581944e+02 +338.0000 1.171100992198e+02 +338.2500 1.179962974626e+02 +338.5000 1.188829527312e+02 +338.7500 1.197697484062e+02 +339.0000 1.206563513695e+02 +339.2500 1.215424119690e+02 +339.5000 1.224275640195e+02 +339.7500 1.233114248402e+02 +340.0000 1.241935953294e+02 +340.2500 1.250736600781e+02 +340.5000 1.259511875210e+02 +340.7500 1.268257301272e+02 +341.0000 1.276968246297e+02 +341.2500 1.285639922942e+02 +341.5000 1.294267392275e+02 +341.7500 1.302845567253e+02 +342.0000 1.311369216594e+02 +342.2500 1.319832969037e+02 +342.5000 1.328231318001e+02 +342.7500 1.336558626614e+02 +343.0000 1.344809133133e+02 +343.2500 1.352976956735e+02 +343.5000 1.361056103676e+02 +343.7500 1.369040473804e+02 +344.0000 1.376923867430e+02 +344.2500 1.384699992534e+02 +344.5000 1.392362472304e+02 +344.7500 1.399904852992e+02 +345.0000 1.407320612072e+02 +345.2500 1.414603166698e+02 +345.5000 1.421745882432e+02 +345.7500 1.428742082240e+02 +346.0000 1.435585055728e+02 +346.2500 1.442268068615e+02 +346.5000 1.448784372416e+02 +346.7500 1.455127214316e+02 +347.0000 1.461289847223e+02 +347.2500 1.467265539975e+02 +347.5000 1.473047587687e+02 +347.7500 1.478629322204e+02 +348.0000 1.484004122665e+02 +348.2500 1.489165426121e+02 +348.5000 1.494106738220e+02 +348.7500 1.498821643914e+02 +349.0000 1.503303818174e+02 +349.2500 1.507547036694e+02 +349.5000 1.511545186552e+02 +349.7500 1.515292276811e+02 +350.0000 1.518782449044e+02 +350.2500 1.522009987742e+02 +350.5000 1.524969330602e+02 +350.7500 1.527655078662e+02 +351.0000 1.530062006259e+02 +351.2500 1.532185070798e+02 +351.5000 1.534019422299e+02 +351.7500 1.535560412708e+02 +352.0000 1.536803604947e+02 +352.2500 1.537744781691e+02 +352.5000 1.538379953835e+02 +352.7500 1.538705368651e+02 +353.0000 1.538717517603e+02 +353.2500 1.538413143813e+02 +353.5000 1.537789249146e+02 +353.7500 1.536843100913e+02 +354.0000 1.535572238168e+02 +354.2500 1.533974477585e+02 +354.5000 1.532047918904e+02 +354.7500 1.529790949929e+02 +355.0000 1.527202251072e+02 +355.2500 1.524280799428e+02 +355.5000 1.521025872369e+02 +355.7500 1.517437050655e+02 +356.0000 1.513514221049e+02 +356.2500 1.509257578435e+02 +356.5000 1.504667627421e+02 +356.7500 1.499745183443e+02 +357.0000 1.494491373347e+02 +357.2500 1.488907635460e+02 +357.5000 1.482995719144e+02 +357.7500 1.476757683834e+02 +358.0000 1.470195897561e+02 +358.2500 1.463313034970e+02 +358.5000 1.456112074818e+02 +358.7500 1.448596296987e+02 +359.0000 1.440769278983e+02 +359.2500 1.432634891960e+02 +359.5000 1.424197296258e+02 +359.7500 1.415460936468e+02 +360.0000 1.406430536039e+02 +360.2500 1.397111091439e+02 +360.5000 1.387507865874e+02 +360.7500 1.377626382586e+02 +361.0000 1.367472417743e+02 +361.2500 1.357051992932e+02 +361.5000 1.346371367281e+02 +361.7500 1.335437029213e+02 +362.0000 1.324255687857e+02 +362.2500 1.312834264143e+02 +362.5000 1.301179881573e+02 +362.7500 1.289299856725e+02 +363.0000 1.277201689474e+02 +363.2500 1.264893052975e+02 +363.5000 1.252381783413e+02 +363.7500 1.239675869560e+02 +364.0000 1.226783442134e+02 +364.2500 1.213712763007e+02 +364.5000 1.200472214270e+02 +364.7500 1.187070287182e+02 +365.0000 1.173515571021e+02 +365.2500 1.159816741865e+02 +365.5000 1.145982551322e+02 +365.7500 1.132021815231e+02 +366.0000 1.117943402355e+02 +366.2500 1.103756223094e+02 +366.5000 1.089469218230e+02 +366.7500 1.075091347736e+02 +367.0000 1.060631579654e+02 +367.2500 1.046098879090e+02 +367.5000 1.031502197310e+02 +367.7500 1.016850460991e+02 +368.0000 1.002152561625e+02 +368.2500 9.874173450947e+01 +368.5000 9.726536014593e+01 +368.7500 9.578700549393e+01 +369.0000 9.430753541380e+01 +369.2500 9.282780625076e+01 +369.5000 9.134866490747e+01 +369.7500 8.987094794428e+01 +370.0000 8.839548070821e+01 +370.2500 8.692307649225e+01 +370.5000 8.545453572588e+01 +370.7500 8.399064519823e+01 +371.0000 8.253217731459e+01 +371.2500 8.107988938752e+01 +371.5000 7.963452296307e+01 +371.7500 7.819680318324e+01 +372.0000 7.676743818496e+01 +372.2500 7.534711853646e+01 +372.5000 7.393651671133e+01 +372.7500 7.253628660079e+01 +373.0000 7.114706306427e+01 +373.2500 6.976946151879e+01 +373.5000 6.840407756695e+01 +373.7500 6.705148666379e+01 +374.0000 6.571224382229e+01 +374.2500 6.438688335754e+01 +374.5000 6.307591866916e+01 +374.7500 6.177984206179e+01 +375.0000 6.049912460319e+01 +375.2500 5.923421601953e+01 +375.5000 5.798554462724e+01 +375.7500 5.675351730093e+01 +376.0000 5.553851947653e+01 +376.2500 5.434091518904e+01 +376.5000 5.316104714398e+01 +376.7500 5.199923682171e+01 +377.0000 5.085578461360e+01 +377.2500 4.973096998919e+01 +377.5000 4.862505169315e+01 +377.7500 4.753826797108e+01 +378.0000 4.647083682287e+01 +378.2500 4.542295628264e+01 +378.5000 4.439480472381e+01 +378.7500 4.338654118827e+01 +379.0000 4.239830573821e+01 +379.2500 4.143021982946e+01 +379.5000 4.048238670483e+01 +379.7500 3.955489180636e+01 +380.0000 3.864780320483e+01 +380.2500 3.776117204539e+01 +380.5000 3.689503300787e+01 +380.7500 3.604940478034e+01 +381.0000 3.522429054455e+01 +381.2500 3.441967847200e+01 +381.5000 3.363554222906e+01 +381.7500 3.287184148993e+01 +382.0000 3.212852245604e+01 +382.2500 3.140551838058e+01 +382.5000 3.070275009676e+01 +382.7500 3.002012654865e+01 +383.0000 2.935754532318e+01 +383.2500 2.871489318214e+01 +383.5000 2.809204659294e+01 +383.7500 2.748887225699e+01 +384.0000 2.690522763442e+01 +384.2500 2.634096146422e+01 +384.5000 2.579591427850e+01 +384.7500 2.526991891005e+01 +385.0000 2.476280099204e+01 +385.2500 2.427437944900e+01 +385.5000 2.380446697810e+01 +385.7500 2.335287051994e+01 +386.0000 2.291939171801e+01 +386.2500 2.250382736600e+01 +386.5000 2.210596984233e+01 +386.7500 2.172560753117e+01 +387.0000 2.136252522931e+01 +387.2500 2.101650453848e+01 +387.5000 2.068732424229e+01 +387.7500 2.037476066772e+01 +388.0000 2.007858803039e+01 +388.2500 1.979857876349e+01 +388.5000 1.953450383000e+01 +388.7500 1.928613301783e+01 +389.0000 1.905323521794e+01 +389.2500 1.883557868497e+01 +389.5000 1.863293128052e+01 +389.7500 1.844506069901e+01 +390.0000 1.827173467589e+01 +390.2500 1.811272117862e+01 +390.5000 1.796778858016e+01 +390.7500 1.783670581535e+01 +391.0000 1.771924252028e+01 +391.2500 1.761516915488e+01 +391.5000 1.752425710901e+01 +391.7500 1.744627879242e+01 +392.0000 1.738100770882e+01 +392.2500 1.732821851463e+01 +392.5000 1.728768706267e+01 +392.7500 1.725919043139e+01 +393.0000 1.724250694004e+01 +393.2500 1.723741615044e+01 +393.5000 1.724369885580e+01 +393.7500 1.726113705726e+01 +394.0000 1.728951392871e+01 +394.2500 1.732861377063e+01 +394.5000 1.737822195355e+01 +394.7500 1.743812485178e+01 +395.0000 1.750810976828e+01 +395.2500 1.758796485120e+01 +395.5000 1.767747900302e+01 +395.7500 1.777644178286e+01 +396.0000 1.788464330288e+01 +396.2500 1.800187411949e+01 +396.5000 1.812792512008e+01 +396.7500 1.826258740620e+01 +397.0000 1.840565217384e+01 +397.2500 1.855691059167e+01 +397.5000 1.871615367800e+01 +397.7500 1.888317217730e+01 +398.0000 1.905775643694e+01 +398.2500 1.923969628500e+01 +398.5000 1.942878090997e+01 +398.7500 1.962479874287e+01 +399.0000 1.982753734280e+01 +399.2500 2.003678328641e+01 +399.5000 2.025232206212e+01 +399.7500 2.047393796971e+01 +400.0000 2.070141402595e+01 +400.2500 2.093453187694e+01 +400.5000 2.117307171773e+01 +400.7500 2.141681221983e+01 +401.0000 2.166553046712e+01 +401.2500 2.191900190083e+01 +401.5000 2.217700027385e+01 +401.7500 2.243929761514e+01 +402.0000 2.270566420438e+01 +402.2500 2.297586855746e+01 +402.5000 2.324967742318e+01 +402.7500 2.352685579129e+01 +403.0000 2.380716691243e+01 +403.2500 2.409037233006e+01 +403.5000 2.437623192462e+01 +403.7500 2.466450397022e+01 +404.0000 2.495494520377e+01 +404.2500 2.524731090695e+01 +404.5000 2.554135500083e+01 +404.7500 2.583683015329e+01 +405.0000 2.613348789922e+01 +405.2500 2.643107877339e+01 +405.5000 2.672935245597e+01 +405.7500 2.702805793049e+01 +406.0000 2.732694365410e+01 +406.2500 2.762575773991e+01 +406.5000 2.792424815122e+01 +406.7500 2.822216290721e+01 +407.0000 2.851925029987e+01 +407.2500 2.881525912181e+01 +407.5000 2.910993890452e+01 +407.7500 2.940304016658e+01 +408.0000 2.969431467151e+01 +408.2500 2.998351569457e+01 +408.5000 3.027039829823e+01 +408.7500 3.055471961538e+01 +409.0000 3.083623914015e+01 +409.2500 3.111471902525e+01 +409.5000 3.138992438563e+01 +409.7500 3.166162360743e+01 +410.0000 3.192958866173e+01 +410.2500 3.219359542243e+01 +410.5000 3.245342398733e+01 +410.7500 3.270885900186e+01 +411.0000 3.295968998463e+01 +411.2500 3.320571165400e+01 +411.5000 3.344672425496e+01 +411.7500 3.368253388544e+01 +412.0000 3.391295282136e+01 +412.2500 3.413779983946e+01 +412.5000 3.435690053734e+01 +412.7500 3.457008764960e+01 +413.0000 3.477720135960e+01 +413.2500 3.497808960575e+01 +413.5000 3.517260838172e+01 +413.7500 3.536062202970e+01 +414.0000 3.554200352598e+01 +414.2500 3.571663475799e+01 +414.5000 3.588440679217e+01 +414.7500 3.604522013180e+01 +415.0000 3.619898496419e+01 +415.2500 3.634562139645e+01 +415.5000 3.648505967912e+01 +415.7500 3.661724041713e+01 +416.0000 3.674211476734e+01 +416.2500 3.685964462204e+01 +416.5000 3.696980277799e+01 +416.7500 3.707257309019e+01 +417.0000 3.716795061006e+01 +417.2500 3.725594170748e+01 +417.5000 3.733656417619e+01 +417.7500 3.740984732215e+01 +418.0000 3.747583203452e+01 +418.2500 3.753457083874e+01 +418.5000 3.758612793168e+01 +418.7500 3.763057919823e+01 +419.0000 3.766801220941e+01 +419.2500 3.769852620154e+01 +419.5000 3.772223203650e+01 +419.7500 3.773925214285e+01 +420.0000 3.774972043769e+01 +420.2500 3.775378222940e+01 +420.5000 3.775159410103e+01 +420.7500 3.774332377454e+01 +421.0000 3.772914995587e+01 +421.2500 3.770926216106e+01 +421.5000 3.768386052345e+01 +421.7500 3.765315558232e+01 +422.0000 3.761736805298e+01 +422.2500 3.757672857891e+01 +422.5000 3.753147746586e+01 +422.7500 3.748186439867e+01 +423.0000 3.742814814089e+01 +423.2500 3.737059621779e+01 +423.5000 3.730948458312e+01 +423.7500 3.724509727023e+01 +424.0000 3.717772602795e+01 +424.2500 3.710766994182e+01 +424.5000 3.703523504134e+01 +424.7500 3.696073389374e+01 +425.0000 3.688448518497e+01 +425.2500 3.680681328854e+01 +425.5000 3.672804782296e+01 +425.7500 3.664852319849e+01 +426.0000 3.656857815380e+01 +426.2500 3.648855528353e+01 +426.5000 3.640880055732e+01 +426.7500 3.632966283118e+01 +427.0000 3.625149335207e+01 +427.2500 3.617464525636e+01 +427.5000 3.609947306318e+01 +427.7500 3.602633216329e+01 +428.0000 3.595557830459e+01 +428.2500 3.588756707480e+01 +428.5000 3.582265338253e+01 +428.7500 3.576119093727e+01 +429.0000 3.570353172939e+01 +429.2500 3.565002551096e+01 +429.5000 3.560101927817e+01 +429.7500 3.555685675636e+01 +430.0000 3.551787788839e+01 +430.2500 3.548441832723e+01 +430.5000 3.545680893370e+01 +430.7500 3.543537528006e+01 +431.0000 3.542043716033e+01 +431.2500 3.541230810818e+01 +431.5000 3.541129492317e+01 +431.7500 3.541769720607e+01 +432.0000 3.543180690405e+01 +432.2500 3.545390786651e+01 +432.5000 3.548427541231e+01 +432.7500 3.552317590894e+01 +433.0000 3.557086636451e+01 +433.2500 3.562759403313e+01 +433.5000 3.569359603428e+01 +433.7500 3.576909898684e+01 +434.0000 3.585431865840e+01 +434.2500 3.594945963030e+01 +434.5000 3.605471497897e+01 +434.7500 3.617026597419e+01 +435.0000 3.629628179458e+01 +435.2500 3.643291926081e+01 +435.5000 3.658032258702e+01 +435.7500 3.673862315076e+01 +436.0000 3.690793928183e+01 +436.2500 3.708837607026e+01 +436.5000 3.728002519392e+01 +436.7500 3.748296476570e+01 +437.0000 3.769725920083e+01 +437.2500 3.792295910423e+01 +437.5000 3.816010117824e+01 +437.7500 3.840870815070e+01 +438.0000 3.866878872362e+01 +438.2500 3.894033754238e+01 +438.5000 3.922333518544e+01 +438.7500 3.951774817475e+01 +439.0000 3.982352900650e+01 +439.2500 4.014061620242e+01 +439.5000 4.046893438135e+01 +439.7500 4.080839435088e+01 +440.0000 4.115889321908e+01 +440.2500 4.152031452591e+01 +440.5000 4.189252839411e+01 +440.7500 4.227539169933e+01 +441.0000 4.266874825918e+01 +441.2500 4.307242904080e+01 +441.5000 4.348625238666e+01 +441.7500 4.391002425809e+01 +442.0000 4.434353849617e+01 +442.2500 4.478657709958e+01 +442.5000 4.523891051874e+01 +442.7500 4.570029796592e+01 +443.0000 4.617048774070e+01 +443.2500 4.664921757017e+01 +443.5000 4.713621496337e+01 +443.7500 4.763119757934e+01 +444.0000 4.813387360809e+01 +444.2500 4.864394216390e+01 +444.5000 4.916109369032e+01 +444.7500 4.968501037604e+01 +445.0000 5.021536658109e+01 +445.2500 5.075182927254e+01 +445.5000 5.129405846901e+01 +445.7500 5.184170769330e+01 +446.0000 5.239442443220e+01 +446.2500 5.295185060295e+01 +446.5000 5.351362302546e+01 +446.7500 5.407937389941e+01 +447.0000 5.464873128568e+01 +447.2500 5.522131959107e+01 +447.5000 5.579676005572e+01 +447.7500 5.637467124229e+01 +448.0000 5.695466952618e+01 +448.2500 5.753636958596e+01 +448.5000 5.811938489331e+01 +448.7500 5.870332820152e+01 +449.0000 5.928781203193e+01 +449.2500 5.987244915750e+01 +449.5000 6.045685308268e+01 +449.7500 6.104063851893e+01 +450.0000 6.162342185513e+01 +450.2500 6.220482162205e+01 +450.5000 6.278445895041e+01 +450.7500 6.336195802158e+01 +451.0000 6.393694651045e+01 +451.2500 6.450905601972e+01 +451.5000 6.507792250504e+01 +451.7500 6.564318669028e+01 +452.0000 6.620449447257e+01 +452.2500 6.676149731632e+01 +452.5000 6.731385263584e+01 +452.7500 6.786122416599e+01 +453.0000 6.840328232043e+01 +453.2500 6.893970453699e+01 +453.5000 6.947017560982e+01 +453.7500 6.999438800776e+01 +454.0000 7.051204217887e+01 +454.2500 7.102284684046e+01 +454.5000 7.152651925469e+01 +454.7500 7.202278548914e+01 +455.0000 7.251138066244e+01 +455.2500 7.299204917457e+01 +455.5000 7.346454492177e+01 +455.7500 7.392863149596e+01 +456.0000 7.438408236853e+01 +456.2500 7.483068105851e+01 +456.5000 7.526822128511e+01 +456.7500 7.569650710462e+01 +457.0000 7.611535303174e+01 +457.2500 7.652458414553e+01 +457.5000 7.692403617993e+01 +457.7500 7.731355559914e+01 +458.0000 7.769299965805e+01 +458.2500 7.806223644790e+01 +458.5000 7.842114492744e+01 +458.7500 7.876961493983e+01 +459.0000 7.910754721573e+01 +459.2500 7.943485336276e+01 +459.5000 7.975145584177e+01 +459.7500 8.005728793032e+01 +460.0000 8.035229367377e+01 +460.2500 8.063642782441e+01 +460.5000 8.090965576905e+01 +460.7500 8.117195344568e+01 +461.0000 8.142330724951e+01 +461.2500 8.166371392900e+01 +461.5000 8.189318047248e+01 +461.7500 8.211172398563e+01 +462.0000 8.231937156076e+01 +462.2500 8.251616013799e+01 +462.5000 8.270213635934e+01 +462.7500 8.287735641590e+01 +463.0000 8.304188588895e+01 +463.2500 8.319579958542e+01 +463.5000 8.333918136831e+01 +463.7500 8.347212398266e+01 +464.0000 8.359472887762e+01 +464.2500 8.370710602517e+01 +464.5000 8.380937373599e+01 +464.7500 8.390165847317e+01 +465.0000 8.398409466404e+01 +465.2500 8.405682451094e+01 +465.5000 8.411999780111e+01 +465.7500 8.417377171652e+01 +466.0000 8.421831064374e+01 +466.2500 8.425378598466e+01 +466.5000 8.428037596819e+01 +466.7500 8.429826546355e+01 +467.0000 8.430764579545e+01 +467.2500 8.430871456151e+01 +467.5000 8.430167545226e+01 +467.7500 8.428673807412e+01 +468.0000 8.426411777552e+01 +468.2500 8.423403547647e+01 +468.5000 8.419671750189e+01 +468.7500 8.415239541875e+01 +469.0000 8.410130587735e+01 +469.2500 8.404369045682e+01 +469.5000 8.397979551492e+01 +469.7500 8.390987204235e+01 +470.0000 8.383417552156e+01 +470.2500 8.375296579010e+01 +470.5000 8.366650690856e+01 +470.7500 8.357506703311e+01 +471.0000 8.347891829246e+01 +471.2500 8.337833666947e+01 +471.5000 8.327360188693e+01 +471.7500 8.316499729786e+01 +472.0000 8.305280977972e+01 +472.2500 8.293732963285e+01 +472.5000 8.281885048259e+01 +472.7500 8.269766918511e+01 +473.0000 8.257408573675e+01 +473.2500 8.244840318649e+01 +473.5000 8.232092755153e+01 +473.7500 8.219196773553e+01 +474.0000 8.206183544952e+01 +474.2500 8.193084513488e+01 +474.5000 8.179931388846e+01 +474.7500 8.166756138932e+01 +475.0000 8.153590982698e+01 +475.2500 8.140468383075e+01 +475.5000 8.127421040001e+01 +475.7500 8.114481883507e+01 +476.0000 8.101684066834e+01 +476.2500 8.089060959558e+01 +476.5000 8.076646140697e+01 +476.7500 8.064473391765e+01 +477.0000 8.052576689761e+01 +477.2500 8.040990200067e+01 +477.5000 8.029748269216e+01 +477.7500 8.018885417538e+01 +478.0000 8.008436331639e+01 +478.2500 7.998435856704e+01 +478.5000 7.988918988613e+01 +478.7500 7.979920865846e+01 +479.0000 7.971476761166e+01 +479.2500 7.963622073072e+01 +479.5000 7.956392317015e+01 +479.7500 7.949823116356e+01 +480.0000 7.943950193077e+01 +480.2500 7.938809358229e+01 +480.5000 7.934436502124e+01 +480.7500 7.930867584264e+01 +481.0000 7.928138623010e+01 +481.2500 7.926285685001e+01 +481.5000 7.925344874324e+01 +481.7500 7.925352321437e+01 +482.0000 7.926344171863e+01 +482.2500 7.928356574660e+01 +482.5000 7.931425670683e+01 +482.7500 7.935587580639e+01 +483.0000 7.940878392970e+01 +483.2500 7.947334151553e+01 +483.5000 7.954990843258e+01 +483.7500 7.963884385361e+01 +484.0000 7.974050612840e+01 +484.2500 7.985525265565e+01 +484.5000 7.998343975406e+01 +484.7500 8.012542253269e+01 +485.0000 8.028155476077e+01 +485.2500 8.045218873725e+01 +485.5000 8.063767516001e+01 +485.7500 8.083836299517e+01 +486.0000 8.105459934638e+01 +486.2500 8.128672932434e+01 +486.5000 8.153509591666e+01 +486.7500 8.180003985817e+01 +487.0000 8.208189950160e+01 +487.2500 8.238101068891e+01 +487.5000 8.269770662319e+01 +487.7500 8.303231774104e+01 +488.0000 8.338517158562e+01 +488.2500 8.375659268019e+01 +488.5000 8.414690240204e+01 +488.7500 8.455641885685e+01 +489.0000 8.498545675320e+01 +489.2500 8.543432727714e+01 +489.5000 8.590333796668e+01 +489.7500 8.639279258579e+01 +490.0000 8.690299099789e+01 +490.2500 8.743422903833e+01 +490.5000 8.798679838573e+01 +490.7500 8.856098643158e+01 +491.0000 8.915707614803e+01 +491.2500 8.977534595311e+01 +491.5000 9.041606957322e+01 +491.7500 9.107951590229e+01 +492.0000 9.176594885705e+01 +492.2500 9.247562722804e+01 +492.5000 9.320880452564e+01 +492.7500 9.396572882072e+01 +493.0000 9.474664257921e+01 +493.2500 9.555178248995e+01 +493.5000 9.638137928535e+01 +493.7500 9.723565755412e+01 +494.0000 9.811483554548e+01 +494.2500 9.901912496414e+01 +494.5000 9.994873075554e+01 +494.7500 1.009038508806e+02 +495.0000 1.018846760795e+02 +495.2500 1.028913896237e+02 +495.5000 1.039241670553e+02 +495.7500 1.049831759147e+02 +496.0000 1.060685754534e+02 +496.2500 1.071805163339e+02 +496.5000 1.083191403145e+02 +496.7500 1.094845799201e+02 +497.0000 1.106769580966e+02 +497.2500 1.118963878506e+02 +497.5000 1.131429718724e+02 +497.7500 1.144168021436e+02 +498.0000 1.157179595275e+02 +498.2500 1.170465133433e+02 +498.5000 1.184025209240e+02 +498.7500 1.197860271568e+02 +499.0000 1.211970640081e+02 +499.2500 1.226356500314e+02 +499.5000 1.241017898593e+02 +499.7500 1.255954736799e+02 +500.0000 1.271166766974e+02 +500.2500 1.286653585784e+02 +500.5000 1.302414628837e+02 +500.7500 1.318449164867e+02 +501.0000 1.334756289787e+02 +501.2500 1.351334920633e+02 +501.5000 1.368183789385e+02 +501.7500 1.385301436707e+02 +502.0000 1.402686205592e+02 +502.2500 1.420336234934e+02 +502.5000 1.438249453051e+02 +502.7500 1.456423571154e+02 +503.0000 1.474856076795e+02 +503.2500 1.493544227304e+02 +503.5000 1.512485043234e+02 +503.7500 1.531675301827e+02 +504.0000 1.551111530535e+02 +504.2500 1.570790000599e+02 +504.5000 1.590706720721e+02 +504.7500 1.610857430840e+02 +505.0000 1.631237596047e+02 +505.2500 1.651842400649e+02 +505.5000 1.672666742414e+02 +505.7500 1.693705227022e+02 +506.0000 1.714952162740e+02 +506.2500 1.736401555355e+02 +506.5000 1.758047103380e+02 +506.7500 1.779882193568e+02 +507.0000 1.801899896757e+02 +507.2500 1.824092964069e+02 +507.5000 1.846453823490e+02 +507.7500 1.868974576859e+02 +508.0000 1.891646997291e+02 +508.2500 1.914462527055e+02 +508.5000 1.937412275938e+02 +508.7500 1.960487020111e+02 +509.0000 1.983677201536e+02 +509.2500 2.006972927912e+02 +509.5000 2.030363973212e+02 +509.7500 2.053839778808e+02 +510.0000 2.077389455217e+02 +510.2500 2.101001784483e+02 +510.5000 2.124665223217e+02 +510.7500 2.148367906306e+02 +511.0000 2.172097651315e+02 +511.2500 2.195841963584e+02 +511.5000 2.219588042047e+02 +511.7500 2.243322785776e+02 +512.0000 2.267032801256e+02 +512.2500 2.290704410410e+02 +512.5000 2.314323659373e+02 +512.7500 2.337876328014e+02 +513.0000 2.361347940220e+02 +513.2500 2.384723774939e+02 +513.5000 2.407988877972e+02 +513.7500 2.431128074520e+02 +514.0000 2.454125982475e+02 +514.2500 2.476967026456e+02 +514.5000 2.499635452563e+02 +514.7500 2.522115343853e+02 +515.0000 2.544390636520e+02 +515.2500 2.566445136759e+02 +515.5000 2.588262538292e+02 +515.7500 2.609826440553e+02 +516.0000 2.631120367485e+02 +516.2500 2.652127786946e+02 +516.5000 2.672832130680e+02 +516.7500 2.693216814841e+02 +517.0000 2.713265261022e+02 +517.2500 2.732960917774e+02 +517.5000 2.752287282559e+02 +517.7500 2.771227924130e+02 +518.0000 2.789766505268e+02 +518.2500 2.807886805862e+02 +518.5000 2.825572746281e+02 +518.7500 2.842808410987e+02 +519.0000 2.859578072367e+02 +519.2500 2.875866214716e+02 +519.5000 2.891657558340e+02 +519.7500 2.906937083729e+02 +520.0000 2.921690055745e+02 +520.2500 2.935902047783e+02 +520.5000 2.949558965859e+02 +520.7500 2.962647072567e+02 +521.0000 2.975153010854e+02 +521.2500 2.987063827576e+02 +521.5000 2.998366996766e+02 +521.7500 3.009050442581e+02 +522.0000 3.019102561861e+02 +522.2500 3.028512246263e+02 +522.5000 3.037268903916e+02 +522.7500 3.045362480544e+02 +523.0000 3.052783480012e+02 +523.2500 3.059522984253e+02 +523.5000 3.065572672512e+02 +523.7500 3.070924839889e+02 +524.0000 3.075572415104e+02 +524.2500 3.079508977470e+02 +524.5000 3.082728773016e+02 +524.7500 3.085226729719e+02 +525.0000 3.086998471826e+02 +525.2500 3.088040333199e+02 +525.5000 3.088349369678e+02 +525.7500 3.087923370408e+02 +526.0000 3.086760868115e+02 +526.2500 3.084861148289e+02 +526.5000 3.082224257258e+02 +526.7500 3.078851009131e+02 +527.0000 3.074742991570e+02 +527.2500 3.069902570401e+02 +527.5000 3.064332893021e+02 +527.7500 3.058037890601e+02 +528.0000 3.051022279078e+02 +528.2500 3.043291558907e+02 +528.5000 3.034852013588e+02 +528.7500 3.025710706960e+02 +529.0000 3.015875479245e+02 +529.2500 3.005354941867e+02 +529.5000 2.994158471035e+02 +529.7500 2.982296200102e+02 +530.0000 2.969779010706e+02 +530.2500 2.956618522714e+02 +530.5000 2.942827082968e+02 +530.7500 2.928417752867e+02 +531.0000 2.913404294795e+02 +531.2500 2.897801157414e+02 +531.5000 2.881623459854e+02 +531.7500 2.864886974822e+02 +532.0000 2.847608110658e+02 +532.2500 2.829803892370e+02 +532.5000 2.811491941674e+02 +532.7500 2.792690456091e+02 +533.0000 2.773418187111e+02 +533.2500 2.753694417484e+02 +533.5000 2.733538937664e+02 +533.7500 2.712972021457e+02 +534.0000 2.692014400903e+02 +534.2500 2.670687240446e+02 +534.5000 2.649012110433e+02 +534.7500 2.627010959983e+02 +535.0000 2.604706089281e+02 +535.2500 2.582120121341e+02 +535.5000 2.559275973277e+02 +535.7500 2.536196827147e+02 +536.0000 2.512906100410e+02 +536.2500 2.489427416039e+02 +536.5000 2.465784572356e+02 +536.7500 2.442001512625e+02 +537.0000 2.418102294457e+02 +537.2500 2.394111059078e+02 +537.5000 2.370052000512e+02 +537.7500 2.345949334722e+02 +538.0000 2.321827268760e+02 +538.2500 2.297709969981e+02 +538.5000 2.273621535359e+02 +538.7500 2.249585960958e+02 +539.0000 2.225627111603e+02 +539.2500 2.201768690800e+02 +539.5000 2.178034210944e+02 +539.7500 2.154446963859e+02 +540.0000 2.131029991726e+02 +540.2500 2.107806058417e+02 +540.5000 2.084797621295e+02 +540.7500 2.062026803520e+02 +541.0000 2.039515366879e+02 +541.2500 2.017284685200e+02 +541.5000 1.995355718374e+02 +541.7500 1.973748987017e+02 +542.0000 1.952484547814e+02 +542.2500 1.931581969569e+02 +542.5000 1.911060309988e+02 +542.7500 1.890938093241e+02 +543.0000 1.871233288301e+02 +543.2500 1.851963288116e+02 +543.5000 1.833144889615e+02 +543.7500 1.814794274585e+02 +544.0000 1.796926991428e+02 +544.2500 1.779557937831e+02 +544.5000 1.762701344357e+02 +544.7500 1.746370758974e+02 +545.0000 1.730579032542e+02 +545.2500 1.715338305273e+02 +545.5000 1.700659994166e+02 +545.7500 1.686554781438e+02 +546.0000 1.673032603962e+02 +546.2500 1.660102643704e+02 +546.5000 1.647773319189e+02 +546.7500 1.636052277981e+02 +547.0000 1.624946390198e+02 +547.2500 1.614461743047e+02 +547.5000 1.604603636404e+02 +547.7500 1.595376579411e+02 +548.0000 1.586784288122e+02 +548.2500 1.578829684162e+02 +548.5000 1.571514894425e+02 +548.7500 1.564841251795e+02 +549.0000 1.558809296878e+02 +549.2500 1.553418780755e+02 +549.5000 1.548668668735e+02 +549.7500 1.544557145108e+02 +550.0000 1.541081618889e+02 +550.2500 1.538238730535e+02 +550.5000 1.536024359639e+02 +550.7500 1.534433633570e+02 +551.0000 1.533460937068e+02 +551.2500 1.533099922764e+02 +551.5000 1.533343522617e+02 +551.7500 1.534183960256e+02 +552.0000 1.535612764206e+02 +552.2500 1.537620781986e+02 +552.5000 1.540198195057e+02 +552.7500 1.543334534607e+02 +553.0000 1.547018698152e+02 +553.2500 1.551238966934e+02 +553.5000 1.555983024094e+02 +553.7500 1.561237973604e+02 +554.0000 1.566990359930e+02 +554.2500 1.573226188413e+02 +554.5000 1.579930946333e+02 +554.7500 1.587089624645e+02 +555.0000 1.594686740353e+02 +555.2500 1.602706359509e+02 +555.5000 1.611132120794e+02 +555.7500 1.619947259673e+02 +556.0000 1.629134633092e+02 +556.2500 1.638676744680e+02 +556.5000 1.648555770444e+02 +556.7500 1.658753584918e+02 +557.0000 1.669251787743e+02 +557.2500 1.680031730643e+02 +557.5000 1.691074544775e+02 +557.7500 1.702361168413e+02 +558.0000 1.713872374953e+02 +558.2500 1.725588801176e+02 +558.5000 1.737490975778e+02 +558.7500 1.749559348101e+02 +559.0000 1.761774317050e+02 +559.2500 1.774116260158e+02 +559.5000 1.786565562769e+02 +559.7500 1.799102647305e+02 +560.0000 1.811708002575e+02 +560.2500 1.824362213106e+02 +560.5000 1.837045988453e+02 +560.7500 1.849740192454e+02 +561.0000 1.862425872400e+02 +561.2500 1.875084288080e+02 +561.5000 1.887696940671e+02 +561.7500 1.900245601435e+02 +562.0000 1.912712340189e+02 +562.2500 1.925079553517e+02 +562.5000 1.937329992684e+02 +562.7500 1.949446791219e+02 +563.0000 1.961413492140e+02 +563.2500 1.973214074770e+02 +563.5000 1.984832981135e+02 +563.7500 1.996255141885e+02 +564.0000 2.007466001719e+02 +564.2500 2.018451544288e+02 +564.5000 2.029198316521e+02 +564.7500 2.039693452365e+02 +565.0000 2.049924695897e+02 +565.2500 2.059880423778e+02 +565.5000 2.069549667019e+02 +565.7500 2.078922132035e+02 +566.0000 2.087988220947e+02 +566.2500 2.096739051119e+02 +566.5000 2.105166473888e+02 +566.7500 2.113263092470e+02 +567.0000 2.121022279016e+02 +567.2500 2.128438190788e+02 +567.5000 2.135505785435e+02 +567.7500 2.142220835348e+02 +568.0000 2.148579941069e+02 +568.2500 2.154580543730e+02 +568.5000 2.160220936511e+02 +568.7500 2.165500275095e+02 +569.0000 2.170418587091e+02 +569.2500 2.174976780432e+02 +569.5000 2.179176650705e+02 +569.7500 2.183020887421e+02 +570.0000 2.186513079198e+02 +570.2500 2.189657717852e+02 +570.5000 2.192460201381e+02 +570.7500 2.194926835833e+02 +571.0000 2.197064836049e+02 +571.2500 2.198882325278e+02 +571.5000 2.200388333646e+02 +571.7500 2.201592795485e+02 +572.0000 2.202506545517e+02 +572.2500 2.203141313876e+02 +572.5000 2.203509719986e+02 +572.7500 2.203625265283e+02 +573.0000 2.203502324772e+02 +573.2500 2.203156137446e+02 +573.5000 2.202602795540e+02 +573.7500 2.201859232646e+02 +574.0000 2.200943210678e+02 +574.2500 2.199873305705e+02 +574.5000 2.198668892646e+02 +574.7500 2.197350128843e+02 +575.0000 2.195937936519e+02 +575.2500 2.194453984127e+02 +575.5000 2.192920666603e+02 +575.7500 2.191361084534e+02 +576.0000 2.189799022252e+02 +576.2500 2.188258924869e+02 +576.5000 2.186765874265e+02 +576.7500 2.185345564047e+02 +577.0000 2.184024273486e+02 +577.2500 2.182828840464e+02 +577.5000 2.181786633434e+02 +577.7500 2.180925522420e+02 +578.0000 2.180273849073e+02 +578.2500 2.179860395803e+02 +578.5000 2.179714354011e+02 +578.7500 2.179865291440e+02 +579.0000 2.180343118668e+02 +579.2500 2.181178054772e+02 +579.5000 2.182400592179e+02 +579.7500 2.184041460736e+02 +580.0000 2.186131591028e+02 +580.2500 2.188702076958e+02 +580.5000 2.191784137637e+02 +580.7500 2.195409078602e+02 +581.0000 2.199608252387e+02 +581.2500 2.204413018495e+02 +581.5000 2.209854702788e+02 +581.7500 2.215964556339e+02 +582.0000 2.222773713776e+02 +582.2500 2.230313151155e+02 +582.5000 2.238613643396e+02 +582.7500 2.247705721326e+02 +583.0000 2.257619628366e+02 +583.2500 2.268385276902e+02 +583.5000 2.280032204375e+02 +583.7500 2.292589529151e+02 +584.0000 2.306085906192e+02 +584.2500 2.320549482596e+02 +584.5000 2.336007853031e+02 +584.7500 2.352488015134e+02 +585.0000 2.370016324897e+02 +585.2500 2.388618452123e+02 +585.5000 2.408319335970e+02 +585.7500 2.429143140663e+02 +586.0000 2.451113211413e+02 +586.2500 2.474252030605e+02 +586.5000 2.498581174306e+02 +586.7500 2.524121269159e+02 +587.0000 2.550891949714e+02 +587.2500 2.578911816261e+02 +587.5000 2.608198393227e+02 +587.7500 2.638768088190e+02 +588.0000 2.670636151589e+02 +588.2500 2.703816637175e+02 +588.5000 2.738322363287e+02 +588.7500 2.774164875005e+02 +589.0000 2.811354407246e+02 +589.2500 2.849899848885e+02 +589.5000 2.889808707946e+02 +589.7500 2.931087077950e+02 +590.0000 2.973739605476e+02 +590.2500 3.017769459010e+02 +590.5000 3.063178299140e+02 +590.7500 3.109966250182e+02 +591.0000 3.158131873284e+02 +591.2500 3.207672141094e+02 +591.5000 3.258582414043e+02 +591.7500 3.310856418319e+02 +592.0000 3.364486225598e+02 +592.2500 3.419462234583e+02 +592.5000 3.475773154432e+02 +592.7500 3.533405990121e+02 +593.0000 3.592346029812e+02 +593.2500 3.652576834278e+02 +593.5000 3.714080228443e+02 +593.7500 3.776836295096e+02 +594.0000 3.840823370818e+02 +594.2500 3.906018044193e+02 +594.5000 3.972395156321e+02 +594.7500 4.039927803705e+02 +595.0000 4.108587343532e+02 +595.2500 4.178343401402e+02 +595.5000 4.249163881520e+02 +595.7500 4.321014979403e+02 +596.0000 4.393861197115e+02 +596.2500 4.467665361055e+02 +596.5000 4.542388642318e+02 +596.7500 4.617990579653e+02 +597.0000 4.694429105003e+02 +597.2500 4.771660571670e+02 +597.5000 4.849639785067e+02 +597.7500 4.928320036086e+02 +598.0000 5.007653137051e+02 +598.2500 5.087589460255e+02 +598.5000 5.168077979058e+02 +598.7500 5.249066311522e+02 +599.0000 5.330500766556e+02 +599.2500 5.412326392537e+02 +599.5000 5.494487028359e+02 +599.7500 5.576925356884e+02 +600.0000 5.659582960723e+02 +600.2500 5.742400380303e+02 +600.5000 5.825317174162e+02 +600.7500 5.908271981393e+02 +601.0000 5.991202586178e+02 +601.2500 6.074045984330e+02 +601.5000 6.156738451758e+02 +601.7500 6.239215614771e+02 +602.0000 6.321412522132e+02 +602.2500 6.403263718752e+02 +602.5000 6.484703320947e+02 +602.7500 6.565665093120e+02 +603.0000 6.646082525785e+02 +603.2500 6.725888914801e+02 +603.5000 6.805017441705e+02 +603.7500 6.883401255021e+02 +604.0000 6.960973552412e+02 +604.2500 7.037667663558e+02 +604.5000 7.113417133612e+02 +604.7500 7.188155807110e+02 +605.0000 7.261817912198e+02 +605.2500 7.334338145024e+02 +605.5000 7.405651754161e+02 +605.7500 7.475694624926e+02 +606.0000 7.544403363426e+02 +606.2500 7.611715380211e+02 +606.5000 7.677568973370e+02 +606.7500 7.741903410930e+02 +607.0000 7.804659012406e+02 +607.2500 7.865777229368e+02 +607.5000 7.925200724856e+02 +607.7500 7.982873451525e+02 +608.0000 8.038740728355e+02 +608.2500 8.092749315793e+02 +608.5000 8.144847489191e+02 +608.7500 8.194985110394e+02 +609.0000 8.243113697348e+02 +609.2500 8.289186491601e+02 +609.5000 8.333158523560e+02 +609.7500 8.374986675382e+02 +610.0000 8.414629741394e+02 +610.2500 8.452048485896e+02 +610.5000 8.487205698268e+02 +610.7500 8.520066245256e+02 +611.0000 8.550597120338e+02 +611.2500 8.578767490085e+02 +611.5000 8.604548737414e+02 +611.7500 8.627914501662e+02 +612.0000 8.648840715391e+02 +612.2500 8.667305637871e+02 +612.5000 8.683289885154e+02 +612.7500 8.696776456705e+02 +613.0000 8.707750758521e+02 +613.2500 8.716200622706e+02 +613.5000 8.722116323459e+02 +613.7500 8.725490589454e+02 +614.0000 8.726318612582e+02 +614.2500 8.724598053042e+02 +614.5000 8.720329040782e+02 +614.7500 8.713514173285e+02 +615.0000 8.704158509702e+02 +615.2500 8.692269561360e+02 +615.5000 8.677857278664e+02 +615.7500 8.660934034414e+02 +616.0000 8.641514603586e+02 +616.2500 8.619616139619e+02 +616.5000 8.595258147253e+02 +616.7500 8.568462451988e+02 +617.0000 8.539253166213e+02 +617.2500 8.507656652097e+02 +617.5000 8.473701481300e+02 +617.7500 8.437418391601e+02 +618.0000 8.398840240532e+02 +618.2500 8.358001956098e+02 +618.5000 8.314940484717e+02 +618.7500 8.269694736444e+02 +619.0000 8.222305527626e+02 +619.2500 8.172815521083e+02 +619.5000 8.121269163942e+02 +619.7500 8.067712623242e+02 +620.0000 8.012193719451e+02 +620.2500 7.954761858003e+02 +620.5000 7.895467959013e+02 +620.7500 7.834364385285e+02 +621.0000 7.771504868766e+02 +621.2500 7.706944435580e+02 +621.5000 7.640739329782e+02 +621.7500 7.572946935980e+02 +622.0000 7.503625700966e+02 +622.2500 7.432835054502e+02 +622.5000 7.360635329398e+02 +622.7500 7.287087681043e+02 +623.0000 7.212254006514e+02 +623.2500 7.136196863420e+02 +623.5000 7.058979388615e+02 +623.7500 6.980665216926e+02 +624.0000 6.901318400027e+02 +624.2500 6.821003325606e+02 +624.5000 6.739784636949e+02 +624.7500 6.657727153081e+02 +625.0000 6.574895789585e+02 +625.2500 6.491355480232e+02 +625.5000 6.407171099535e+02 +625.7500 6.322407386355e+02 +626.0000 6.237128868666e+02 +626.2500 6.151399789595e+02 +626.5000 6.065284034835e+02 +626.7500 5.978845061542e+02 +627.0000 5.892145828804e+02 +627.2500 5.805248729788e+02 +627.5000 5.718215525628e+02 +627.7500 5.631107281166e+02 +628.0000 5.543984302600e+02 +628.2500 5.456906077120e+02 +628.5000 5.369931214599e+02 +628.7500 5.283117391400e+02 +629.0000 5.196521296357e+02 +629.2500 5.110198578970e+02 +629.5000 5.024203799875e+02 +629.7500 4.938590383620e+02 +630.0000 4.853410573779e+02 +630.2500 4.768715390445e+02 +630.5000 4.684554590110e+02 +630.7500 4.600976627966e+02 +631.0000 4.518028622631e+02 +631.2500 4.435756323315e+02 +631.5000 4.354204079424e+02 +631.7500 4.273414812605e+02 +632.0000 4.193429991228e+02 +632.2500 4.114289607291e+02 +632.5000 4.036032155735e+02 +632.7500 3.958694616152e+02 +633.0000 3.882312436859e+02 +633.2500 3.806919521318e+02 +633.5000 3.732548216865e+02 +633.7500 3.659229305715e+02 +634.0000 3.586991998214e+02 +634.2500 3.515863928281e+02 +634.5000 3.445871151015e+02 +634.7500 3.377038142403e+02 +635.0000 3.309387801097e+02 +635.2500 3.242941452193e+02 +635.5000 3.177718852967e+02 +635.7500 3.113738200513e+02 +636.0000 3.051016141218e+02 +636.2500 2.989567782022e+02 +636.5000 2.929406703400e+02 +636.7500 2.870544974000e+02 +637.0000 2.812993166881e+02 +637.2500 2.756760377280e+02 +637.5000 2.701854241848e+02 +637.7500 2.648280959285e+02 +638.0000 2.596045312318e+02 +638.2500 2.545150690939e+02 +638.5000 2.495599116855e+02 +638.7500 2.447391269071e+02 +639.0000 2.400526510550e+02 +639.2500 2.355002915876e+02 +639.5000 2.310817299857e+02 +639.7500 2.267965247014e+02 +640.0000 2.226441141873e+02 +640.2500 2.186238200017e+02 +640.5000 2.147348499825e+02 +640.7500 2.109763014837e+02 +641.0000 2.073471646693e+02 +641.2500 2.038463258577e+02 +641.5000 2.004725709125e+02 +641.7500 1.972245886717e+02 +642.0000 1.941009744128e+02 +642.2500 1.911002333456e+02 +642.5000 1.882207841300e+02 +642.7500 1.854609624124e+02 +643.0000 1.828190243760e+02 +643.2500 1.802931503010e+02 +643.5000 1.778814481296e+02 +643.7500 1.755819570317e+02 +644.0000 1.733926509669e+02 +644.2500 1.713114422388e+02 +644.5000 1.693361850386e+02 +644.7500 1.674646789725e+02 +645.0000 1.656946725713e+02 +645.2500 1.640238667775e+02 +645.5000 1.624499184070e+02 +645.7500 1.609704435828e+02 +646.0000 1.595830211373e+02 +646.2500 1.582851959800e+02 +646.5000 1.570744824289e+02 +646.7500 1.559483675028e+02 +647.0000 1.549043141716e+02 +647.2500 1.539397645623e+02 +647.5000 1.530521431201e+02 +647.7500 1.522388597204e+02 +648.0000 1.514973127313e+02 +648.2500 1.508248920244e+02 +648.5000 1.502189819320e+02 +648.7500 1.496769641495e+02 +649.0000 1.491962205815e+02 +649.2500 1.487741361293e+02 +649.5000 1.484081014202e+02 +649.7500 1.480955154756e+02 +650.0000 1.478337883182e+02 +650.2500 1.476203435164e+02 +650.5000 1.474526206647e+02 +650.7500 1.473280778001e+02 +651.0000 1.472441937527e+02 +651.2500 1.471984704308e+02 +651.5000 1.471884350379e+02 +651.7500 1.472116422230e+02 +652.0000 1.472656761621e+02 +652.2500 1.473481525710e+02 +652.5000 1.474567206485e+02 +652.7500 1.475890649498e+02 +653.0000 1.477429071892e+02 +653.2500 1.479160079720e+02 +653.5000 1.481061684554e+02 +653.7500 1.483112319374e+02 +654.0000 1.485290853742e+02 +654.2500 1.487576608250e+02 +654.5000 1.489949368248e+02 +654.7500 1.492389396841e+02 +655.0000 1.494877447165e+02 +655.2500 1.497394773927e+02 +655.5000 1.499923144221e+02 +655.7500 1.502444847609e+02 +656.0000 1.504942705477e+02 +656.2500 1.507400079658e+02 +656.5000 1.509800880326e+02 +656.7500 1.512129573164e+02 +657.0000 1.514371185802e+02 +657.2500 1.516511313539e+02 +657.5000 1.518536124334e+02 +657.7500 1.520432363084e+02 +658.0000 1.522187355190e+02 +658.2500 1.523789009401e+02 +658.5000 1.525225819967e+02 +658.7500 1.526486868081e+02 +659.0000 1.527561822626e+02 +659.2500 1.528440940236e+02 +659.5000 1.529115064675e+02 +659.7500 1.529575625539e+02 +660.0000 1.529814636288e+02 +660.2500 1.529824691632e+02 +660.5000 1.529598964248e+02 +660.7500 1.529131200880e+02 +661.0000 1.528415717790e+02 +661.2500 1.527447395609e+02 +661.5000 1.526221673566e+02 +661.7500 1.524734543137e+02 +662.0000 1.522982541106e+02 +662.2500 1.520962742060e+02 +662.5000 1.518672750334e+02 +662.7500 1.516110691419e+02 +663.0000 1.513275202841e+02 +663.2500 1.510165424545e+02 +663.5000 1.506780988782e+02 +663.7500 1.503122009531e+02 +664.0000 1.499189071457e+02 +664.2500 1.494983218446e+02 +664.5000 1.490505941719e+02 +664.7500 1.485759167544e+02 +665.0000 1.480745244585e+02 +665.2500 1.475466930881e+02 +665.5000 1.469927380498e+02 +665.7500 1.464130129868e+02 +666.0000 1.458079083834e+02 +666.2500 1.451778501428e+02 +666.5000 1.445232981397e+02 +666.7500 1.438447447513e+02 +667.0000 1.431427133677e+02 +667.2500 1.424177568844e+02 +667.5000 1.416704561802e+02 +667.7500 1.409014185809e+02 +668.0000 1.401112763134e+02 +668.2500 1.393006849510e+02 +668.5000 1.384703218530e+02 +668.7500 1.376208846003e+02 +669.0000 1.367530894309e+02 +669.2500 1.358676696760e+02 +669.5000 1.349653741995e+02 +669.7500 1.340469658444e+02 +670.0000 1.331132198863e+02 +670.2500 1.321649224992e+02 +670.5000 1.312028692322e+02 +670.7500 1.302278635031e+02 +671.0000 1.292407151086e+02 +671.2500 1.282422387539e+02 +671.5000 1.272332526043e+02 +671.7500 1.262145768604e+02 +672.0000 1.251870323595e+02 +672.2500 1.241514392038e+02 +672.5000 1.231086154193e+02 +672.7500 1.220593756455e+02 +673.0000 1.210045298592e+02 +673.2500 1.199448821320e+02 +673.5000 1.188812294264e+02 +673.7500 1.178143604283e+02 +674.0000 1.167450544203e+02 +674.2500 1.156740801963e+02 +674.5000 1.146021950183e+02 +674.7500 1.135301436167e+02 +675.0000 1.124586572364e+02 +675.2500 1.113884527284e+02 +675.5000 1.103202316889e+02 +675.7500 1.092546796458e+02 +676.0000 1.081924652946e+02 +676.2500 1.071342397840e+02 +676.5000 1.060806360509e+02 +676.7500 1.050322682068e+02 +677.0000 1.039897309757e+02 +677.2500 1.029535991826e+02 +677.5000 1.019244272944e+02 +677.7500 1.009027490134e+02 +678.0000 9.988907692147e+01 +678.2500 9.888390217765e+01 +678.5000 9.788769426685e+01 +678.7500 9.690090080074e+01 +679.0000 9.592394736983e+01 +679.2500 9.495723744682e+01 +679.5000 9.400115234042e+01 +679.7500 9.305605119922e+01 +680.0000 9.212227106497e+01 +680.2500 9.120012697451e+01 +680.5000 9.028991210945e+01 +680.7500 8.939189799287e+01 +681.0000 8.850633473186e+01 +681.2500 8.763345130508e+01 +681.5000 8.677345589391e+01 +681.7500 8.592653625631e+01 +682.0000 8.509286014180e+01 +682.2500 8.427257574652e+01 +682.5000 8.346581220670e+01 +682.7500 8.267268012926e+01 +683.0000 8.189327215791e+01 +683.2500 8.112766357318e+01 +683.5000 8.037591292480e+01 +683.7500 7.963806269469e+01 +684.0000 7.891413998883e+01 +684.2500 7.820415725628e+01 +684.5000 7.750811303346e+01 +684.7500 7.682599271191e+01 +685.0000 7.615776932760e+01 +685.2500 7.550340436991e+01 +685.5000 7.486284860829e+01 +685.7500 7.423604293470e+01 +686.0000 7.362291921975e+01 +686.2500 7.302340118068e+01 +686.5000 7.243740525901e+01 +686.7500 7.186484150596e+01 +687.0000 7.130561447354e+01 +687.2500 7.075962410936e+01 +687.5000 7.022676665299e+01 +687.7500 6.970693553205e+01 +688.0000 6.920002225579e+01 +688.2500 6.870591730436e+01 +688.5000 6.822451101162e+01 +688.7500 6.775569443964e+01 +689.0000 6.729936024289e+01 +689.2500 6.685540352016e+01 +689.5000 6.642372265235e+01 +689.7500 6.600422012435e+01 +690.0000 6.559680332898e+01 +690.2500 6.520138535137e+01 +690.5000 6.481788573199e+01 +690.7500 6.444623120653e+01 +691.0000 6.408635642106e+01 +691.2500 6.373820462085e+01 +691.5000 6.340172831120e+01 +691.7500 6.307688988884e+01 +692.0000 6.276366224244e+01 +692.2500 6.246202932077e+01 +692.5000 6.217198666727e+01 +692.7500 6.189354191963e+01 +693.0000 6.162671527329e+01 +693.2500 6.137153990764e+01 +693.5000 6.112806237385e+01 +693.7500 6.089634294338e+01 +694.0000 6.067645591615e+01 +694.2500 6.046848988760e+01 +694.5000 6.027254797378e+01 +694.7500 6.008874799386e+01 +695.0000 5.991722260932e+01 +695.2500 5.975811941933e+01 +695.5000 5.961160101191e+01 +695.7500 5.947784497033e+01 +696.0000 5.935704383468e+01 +696.2500 5.924940501812e+01 +696.5000 5.915515067790e+01 +696.7500 5.907451754099e+01 +697.0000 5.900775668440e+01 +697.2500 5.895513327026e+01 +697.5000 5.891692623594e+01 +697.7500 5.889342793947e+01 +698.0000 5.888494376060e+01 +698.2500 5.889179165807e+01 +698.5000 5.891430168353e+01 +698.7500 5.895281545284e+01 +699.0000 5.900768557540e+01 +699.2500 5.907927504242e+01 +699.5000 5.916795657486e+01 +699.7500 5.927411193222e+01 +700.0000 5.939813118309e+01 +700.2500 5.954041193859e+01 +700.5000 5.970135855009e+01 +700.7500 5.988138127230e+01 +701.0000 6.008089539322e+01 +701.2500 6.030032033244e+01 +701.5000 6.054007870914e+01 +701.7500 6.080059538161e+01 +702.0000 6.108229645979e+01 +702.2500 6.138560829266e+01 +702.5000 6.171095643221e+01 +702.7500 6.205876457592e+01 +703.0000 6.242945348964e+01 +703.2500 6.282343991284e+01 +703.5000 6.324113544829e+01 +703.7500 6.368294543829e+01 +704.0000 6.414926782954e+01 +704.2500 6.464049202880e+01 +704.5000 6.515699775169e+01 +704.7500 6.569915386683e+01 +705.0000 6.626731723756e+01 +705.2500 6.686183156368e+01 +705.5000 6.748302622554e+01 +705.7500 6.813121513284e+01 +706.0000 6.880669558054e+01 +706.2500 6.950974711439e+01 +706.5000 7.024063040838e+01 +706.7500 7.099958615670e+01 +707.0000 7.178683398248e+01 +707.2500 7.260257136594e+01 +707.5000 7.344697259424e+01 +707.7500 7.432018773550e+01 +708.0000 7.522234163945e+01 +708.2500 7.615353296695e+01 +708.5000 7.711383325092e+01 +708.7500 7.810328599087e+01 +709.0000 7.912190578339e+01 +709.2500 8.016967749076e+01 +709.5000 8.124655545005e+01 +709.7500 8.235246272461e+01 +710.0000 8.348729040028e+01 +710.2500 8.465089692823e+01 +710.5000 8.584310751632e+01 +710.7500 8.706371357109e+01 +711.0000 8.831247219190e+01 +711.2500 8.958910571922e+01 +711.5000 9.089330133844e+01 +711.7500 9.222471074107e+01 +712.0000 9.358294984440e+01 +712.2500 9.496759857129e+01 +712.5000 9.637820069115e+01 +712.7500 9.781426372328e+01 +713.0000 9.927525890362e+01 +713.2500 1.007606212157e+02 +713.5000 1.022697494868e+02 +713.7500 1.038020065497e+02 +714.0000 1.053567194704e+02 +714.2500 1.069331798429e+02 +714.5000 1.085306441508e+02 +714.7500 1.101483341951e+02 +715.0000 1.117854375901e+02 +715.2500 1.134411083249e+02 +715.5000 1.151144673925e+02 +715.7500 1.168046034838e+02 +716.0000 1.185105737475e+02 +716.2500 1.202314046150e+02 +716.5000 1.219660926883e+02 +716.7500 1.237136056909e+02 +717.0000 1.254728834804e+02 +717.2500 1.272428391210e+02 +717.5000 1.290223600149e+02 +717.7500 1.308103090900e+02 +718.0000 1.326055260444e+02 +718.2500 1.344068286427e+02 +718.5000 1.362130140646e+02 +718.7500 1.380228603020e+02 +719.0000 1.398351276038e+02 +719.2500 1.416485599645e+02 +719.5000 1.434618866546e+02 +719.7500 1.452738237908e+02 +720.0000 1.470830759419e+02 +720.2500 1.488883377691e+02 +720.5000 1.506882956962e+02 +720.7500 1.524816296072e+02 +721.0000 1.542670145691e+02 +721.2500 1.560431225751e+02 +721.5000 1.578086243053e+02 +721.7500 1.595621909026e+02 +722.0000 1.613024957589e+02 +722.2500 1.630282163092e+02 +722.5000 1.647380358291e+02 +722.7500 1.664306452328e+02 +723.0000 1.681047448684e+02 +723.2500 1.697590463056e+02 +723.5000 1.713922741131e+02 +723.7500 1.730031676219e+02 +724.0000 1.745904826715e+02 +724.2500 1.761529933336e+02 +724.5000 1.776894936117e+02 +724.7500 1.791987991125e+02 +725.0000 1.806797486848e+02 +725.2500 1.821312060237e+02 +725.5000 1.835520612353e+02 +725.7500 1.849412323608e+02 +726.0000 1.862976668542e+02 +726.2500 1.876203430127e+02 +726.5000 1.889082713549e+02 +726.7500 1.901604959461e+02 +727.0000 1.913760956659e+02 +727.2500 1.925541854158e+02 +727.5000 1.936939172663e+02 +727.7500 1.947944815376e+02 +728.0000 1.958551078152e+02 +728.2500 1.968750658956e+02 +728.5000 1.978536666621e+02 +728.7500 1.987902628874e+02 +729.0000 1.996842499626e+02 +729.2500 2.005350665503e+02 +729.5000 2.013421951618e+02 +729.7500 2.021051626551e+02 +730.0000 2.028235406555e+02 +730.2500 2.034969458960e+02 +730.5000 2.041250404782e+02 +730.7500 2.047075320532e+02 +731.0000 2.052441739211e+02 +731.2500 2.057347650518e+02 +731.5000 2.061791500246e+02 +731.7500 2.065772188889e+02 +732.0000 2.069289069455e+02 +732.2500 2.072341944507e+02 +732.5000 2.074931062422e+02 +732.7500 2.077057112904e+02 +733.0000 2.078721221740e+02 +733.2500 2.079924944842e+02 +733.5000 2.080670261561e+02 +733.7500 2.080959567322e+02 +734.0000 2.080795665579e+02 +734.2500 2.080181759124e+02 +734.5000 2.079121440768e+02 +734.7500 2.077618683420e+02 +735.0000 2.075677829596e+02 +735.2500 2.073303580370e+02 +735.5000 2.070500983820e+02 +735.7500 2.067275422975e+02 +736.0000 2.063632603310e+02 +736.2500 2.059578539810e+02 +736.5000 2.055119543646e+02 +736.7500 2.050262208489e+02 +737.0000 2.045013396497e+02 +737.2500 2.039380224011e+02 +737.5000 2.033370046995e+02 +737.7500 2.026990446258e+02 +738.0000 2.020249212484e+02 +738.2500 2.013154331117e+02 +738.5000 2.005713967133e+02 +738.7500 1.997936449729e+02 +739.0000 1.989830256971e+02 +739.2500 1.981404000438e+02 +739.5000 1.972666409888e+02 +739.7500 1.963626317988e+02 +740.0000 1.954292645138e+02 +740.2500 1.944674384429e+02 +740.5000 1.934780586754e+02 +740.7500 1.924620346119e+02 +741.0000 1.914202785171e+02 +741.2500 1.903537040986e+02 +741.5000 1.892632251138e+02 +741.7500 1.881497540070e+02 +742.0000 1.870142005813e+02 +742.2500 1.858574707057e+02 +742.5000 1.846804650610e+02 +742.7500 1.834840779270e+02 +743.0000 1.822691960115e+02 +743.2500 1.810366973252e+02 +743.5000 1.797874501025e+02 +743.7500 1.785223117709e+02 +744.0000 1.772421279702e+02 +744.2500 1.759477316231e+02 +744.5000 1.746399420572e+02 +744.7500 1.733195641817e+02 +745.0000 1.719873877171e+02 +745.2500 1.706441864806e+02 +745.5000 1.692907177265e+02 +745.7500 1.679277215424e+02 +746.0000 1.665559203020e+02 +746.2500 1.651760181733e+02 +746.5000 1.637887006832e+02 +746.7500 1.623946343372e+02 +747.0000 1.609944662957e+02 +747.2500 1.595888241036e+02 +747.5000 1.581783154750e+02 +747.7500 1.567635281310e+02 +748.0000 1.553450296890e+02 +748.2500 1.539233676045e+02 +748.5000 1.524990691619e+02 +748.7500 1.510726415145e+02 +749.0000 1.496445717713e+02 +749.2500 1.482153271298e+02 +749.5000 1.467853550530e+02 +749.7500 1.453550834886e+02 +750.0000 1.439249211280e+02 +750.2500 1.424952577055e+02 +750.5000 1.410664643326e+02 +750.7500 1.396388938679e+02 +751.0000 1.382128813195e+02 +751.2500 1.367887442772e+02 +751.5000 1.353667833742e+02 +751.7500 1.339472827738e+02 +752.0000 1.325305106808e+02 +752.2500 1.311167198740e+02 +752.5000 1.297061482590e+02 +752.7500 1.282990194373e+02 +753.0000 1.268955432908e+02 +753.2500 1.254959165795e+02 +753.5000 1.241003235490e+02 +753.7500 1.227089365471e+02 +754.0000 1.213219166461e+02 +754.2500 1.199394142695e+02 +754.5000 1.185615698210e+02 +754.7500 1.171885143132e+02 +755.0000 1.158203699948e+02 +755.2500 1.144572509734e+02 +755.5000 1.130992638335e+02 +755.7500 1.117465082464e+02 +756.0000 1.103990775714e+02 +756.2500 1.090570594462e+02 +756.5000 1.077205363652e+02 +756.7500 1.063895862434e+02 +757.0000 1.050642829666e+02 +757.2500 1.037446969237e+02 +757.5000 1.024308955223e+02 +757.7500 1.011229436857e+02 +758.0000 9.982090432974e+01 +758.2500 9.852483881926e+01 +758.5000 9.723480740330e+01 +758.7500 9.595086962784e+01 +759.0000 9.467308472589e+01 +759.2500 9.340151198415e+01 +759.5000 9.213621108597e+01 +759.7500 9.087724242996e+01 +760.0000 8.962466742433e+01 +760.2500 8.837854875645e+01 +760.5000 8.713895063775e+01 +760.7500 8.590593902388e+01 +761.0000 8.467958181014e+01 +761.2500 8.345994900245e+01 +761.5000 8.224711286394e+01 +761.7500 8.104114803760e+01 +762.0000 7.984213164524e+01 +762.2500 7.865014336335e+01 +762.5000 7.746526547615e+01 +762.7500 7.628758290660e+01 +763.0000 7.511718322588e+01 +763.2500 7.395415664202e+01 +763.5000 7.279859596848e+01 +763.7500 7.165059657329e+01 +764.0000 7.051025630979e+01 +764.2500 6.937767542961e+01 +764.5000 6.825295647886e+01 +764.7500 6.713620417852e+01 +765.0000 6.602752528974e+01 +765.2500 6.492702846536e+01 +765.5000 6.383482408822e+01 +765.7500 6.275102409765e+01 +766.0000 6.167574180482e+01 +766.2500 6.060909169816e+01 +766.5000 5.955118923981e+01 +766.7500 5.850215065408e+01 +767.0000 5.746209270895e+01 +767.2500 5.643113249168e+01 +767.5000 5.540938717935e+01 +767.7500 5.439697380557e+01 +768.0000 5.339400902401e+01 +768.2500 5.240060887004e+01 +768.5000 5.141688852108e+01 +768.7500 5.044296205680e+01 +769.0000 4.947894221992e+01 +769.2500 4.852494017846e+01 +769.5000 4.758106529041e+01 +769.7500 4.664742487132e+01 +770.0000 4.572412396589e+01 +770.2500 4.481126512397e+01 +770.5000 4.390894818197e+01 +770.7500 4.301727005000e+01 +771.0000 4.213632450560e+01 +771.2500 4.126620199455e+01 +771.5000 4.040698943921e+01 +771.7500 3.955877005502e+01 +772.0000 3.872162317554e+01 +772.2500 3.789562408641e+01 +772.5000 3.708084386866e+01 +772.7500 3.627734925176e+01 +773.0000 3.548520247649e+01 +773.2500 3.470446116817e+01 +773.5000 3.393517822022e+01 +773.7500 3.317740168842e+01 +774.0000 3.243117469586e+01 +774.2500 3.169653534876e+01 +774.5000 3.097351666330e+01 +774.7500 3.026214650330e+01 +775.0000 2.956244752899e+01 +775.2500 2.887443715663e+01 +775.5000 2.819812752911e+01 +775.7500 2.753352549728e+01 +776.0000 2.688063261199e+01 +776.2500 2.623944512665e+01 +776.5000 2.560995401021e+01 +776.7500 2.499214497026e+01 +777.0000 2.438599848616e+01 +777.2500 2.379148985178e+01 +777.5000 2.320858922790e+01 +777.7500 2.263726170361e+01 +778.0000 2.207746736674e+01 +778.2500 2.152916138289e+01 +778.5000 2.099229408269e+01 +778.7500 2.046681105706e+01 +779.0000 1.995265326007e+01 +779.2500 1.944975711902e+01 +779.5000 1.895805465155e+01 +779.7500 1.847747358910e+01 +780.0000 1.800793750673e+01 +780.2500 1.754936595856e+01 +780.5000 1.710167461874e+01 +780.7500 1.666477542740e+01 +781.0000 1.623857674125e+01 +781.2500 1.582298348849e+01 +781.5000 1.541789732753e+01 +781.7500 1.502321680927e+01 +782.0000 1.463883754257e+01 +782.2500 1.426465236235e+01 +782.5000 1.390055150022e+01 +782.7500 1.354642275705e+01 +783.0000 1.320215167731e+01 +783.2500 1.286762172464e+01 +783.5000 1.254271445852e+01 +783.7500 1.222730971149e+01 +784.0000 1.192128576683e+01 +784.2500 1.162451953608e+01 +784.5000 1.133688673645e+01 +784.7500 1.105826206749e+01 +785.0000 1.078851938695e+01 +785.2500 1.052753188545e+01 +785.5000 1.027517225972e+01 +785.7500 1.003131288408e+01 +786.0000 9.795825980086e+00 +786.2500 9.568583783832e+00 +786.5000 9.349458710942e+00 +786.7500 9.138323518840e+00 +787.0000 8.935051466176e+00 +787.2500 8.739516469176e+00 +787.5000 8.551593254732e+00 +787.7500 8.371157510034e+00 +788.0000 8.198086028582e+00 +788.2500 8.032256852403e+00 +788.5000 7.873549410319e+00 +788.7500 7.721844652115e+00 +789.0000 7.577025178470e+00 +789.2500 7.438975366509e+00 +789.5000 7.307581490874e+00 +789.7500 7.182731840166e+00 +790.0000 7.064316828686e+00 +790.2500 6.952229103335e+00 +790.5000 6.846363645621e+00 +790.7500 6.746617868651e+00 +791.0000 6.652891709051e+00 +791.2500 6.565087713731e+00 +791.5000 6.483111121431e+00 +791.7500 6.406869938994e+00 +792.0000 6.336275012301e+00 +792.2500 6.271240091833e+00 +792.5000 6.211681892811e+00 +792.7500 6.157520149880e+00 +793.0000 6.108677666307e+00 +793.2500 6.065080357678e+00 +793.5000 6.026657290057e+00 +793.7500 5.993340712612e+00 +794.0000 5.965066084690e+00 +794.2500 5.941772097351e+00 +794.5000 5.923400689346e+00 +794.7500 5.909897057569e+00 +795.0000 5.901209661983e+00 +795.2500 5.897290225048e+00 +795.5000 5.898093725676e+00 +795.7500 5.903578387737e+00 +796.0000 5.913705663172e+00 +796.2500 5.928440209729e+00 +796.5000 5.947749863400e+00 +796.7500 5.971605605590e+00 +797.0000 5.999981525096e+00 +797.2500 6.032854774947e+00 +797.5000 6.070205524202e+00 +797.7500 6.112016904754e+00 +798.0000 6.158274953257e+00 +798.2500 6.208968548249e+00 +798.5000 6.264089342575e+00 +798.7500 6.323631691219e+00 +799.0000 6.387592574659e+00 +799.2500 6.455971517856e+00 +799.5000 6.528770505009e+00 +799.7500 6.605993890216e+00 +800.0000 6.687648304167e+00 +800.2500 6.773742557028e+00 +800.5000 6.864287537671e+00 +800.7500 6.959296109396e+00 +801.0000 7.058783002335e+00 +801.2500 7.162764702704e+00 +801.5000 7.271259339074e+00 +801.7500 7.384286565874e+00 +802.0000 7.501867444297e+00 +802.2500 7.624024320832e+00 +802.5000 7.750780703614e+00 +802.7500 7.882161136817e+00 +803.0000 8.018191073309e+00 +803.2500 8.158896745790e+00 +803.5000 8.304305036649e+00 +803.7500 8.454443346777e+00 +804.0000 8.609339463574e+00 +804.2500 8.769021428399e+00 +804.5000 8.933517403706e+00 +804.7500 9.102855540133e+00 +805.0000 9.277063843780e+00 +805.2500 9.456170043951e+00 +805.5000 9.640201461613e+00 +805.7500 9.829184878836e+00 +806.0000 1.002314640947e+01 +806.2500 1.022211137135e+01 +806.5000 1.042610416023e+01 +806.7500 1.063514812578e+01 +807.0000 1.084926544987e+01 +807.2500 1.106847702740e+01 +807.5000 1.129280234991e+01 +807.7500 1.152225939227e+01 +808.0000 1.175686450270e+01 +808.2500 1.199663229622e+01 +808.5000 1.224157555202e+01 +808.7500 1.249170511476e+01 +809.0000 1.274702980006e+01 +809.2500 1.300755630452e+01 +809.5000 1.327328912029e+01 +809.7500 1.354423045457e+01 +810.0000 1.382038015405e+01 +810.2500 1.410173563459e+01 +810.5000 1.438829181622e+01 +810.7500 1.468004106368e+01 +811.0000 1.497697313253e+01 +811.2500 1.527907512110e+01 +811.5000 1.558633142821e+01 +811.7500 1.589872371692e+01 +812.0000 1.621623088424e+01 +812.2500 1.653882903695e+01 +812.5000 1.686649147355e+01 +812.7500 1.719918867233e+01 +813.0000 1.753688828562e+01 +813.2500 1.787955514017e+01 +813.5000 1.822715124362e+01 +813.7500 1.857963579708e+01 +814.0000 1.893696521364e+01 +814.2500 1.929909314283e+01 +814.5000 1.966597050087e+01 +814.7500 2.003754550659e+01 +815.0000 2.041376372289e+01 +815.2500 2.079456810357e+01 +815.5000 2.117989904530e+01 +815.7500 2.156969444469e+01 +816.0000 2.196388975998e+01 +816.2500 2.236241807742e+01 +816.5000 2.276521018178e+01 +816.7500 2.317219463101e+01 +817.0000 2.358329783453e+01 +817.2500 2.399844413499e+01 +817.5000 2.441755589314e+01 +817.7500 2.484055357544e+01 +818.0000 2.526735584419e+01 +818.2500 2.569787964969e+01 +818.5000 2.613204032410e+01 +818.7500 2.656975167671e+01 +819.0000 2.701092609017e+01 +819.2500 2.745547461719e+01 +819.5000 2.790330707759e+01 +819.7500 2.835433215497e+01 +820.0000 2.880845749284e+01 +820.2500 2.926558978970e+01 +820.5000 2.972563489264e+01 +820.7500 3.018849788914e+01 +821.0000 3.065408319659e+01 +821.2500 3.112229464915e+01 +821.5000 3.159303558160e+01 +821.7500 3.206620890967e+01 +822.0000 3.254171720666e+01 +822.2500 3.301946277579e+01 +822.5000 3.349934771803e+01 +822.7500 3.398127399507e+01 +823.0000 3.446514348703e+01 +823.2500 3.495085804464e+01 +823.5000 3.543831953562e+01 +823.7500 3.592742988495e+01 +824.0000 3.641809110873e+01 +824.2500 3.691020534152e+01 +824.5000 3.740367485680e+01 +824.7500 3.789840208050e+01 +825.0000 3.839428959730e+01 +825.2500 3.889124014973e+01 +825.5000 3.938915662980e+01 +825.7500 3.988794206323e+01 +826.0000 4.038749958604e+01 +826.2500 4.088773241375e+01 +826.5000 4.138854380295e+01 +826.7500 4.188983700543e+01 +827.0000 4.239151521489e+01 +827.2500 4.289348150637e+01 +827.5000 4.339563876851e+01 +827.7500 4.389788962887e+01 +828.0000 4.440013637241e+01 +828.2500 4.490228085353e+01 +828.5000 4.540422440176e+01 +828.7500 4.590586772152e+01 +829.0000 4.640711078633e+01 +829.2500 4.690785272767e+01 +829.5000 4.740799171901e+01 +829.7500 4.790742485543e+01 +830.0000 4.840604802922e+01 +830.2500 4.890375580204e+01 +830.5000 4.940044127397e+01 +830.7500 4.989599595025e+01 +831.0000 5.039030960593e+01 +831.2500 5.088327014934e+01 +831.5000 5.137476348466e+01 +831.7500 5.186467337449e+01 +832.0000 5.235288130283e+01 +832.2500 5.283926633917e+01 +832.5000 5.332370500442e+01 +832.7500 5.380607113924e+01 +833.0000 5.428623577548e+01 +833.2500 5.476406701142e+01 +833.5000 5.523942989143e+01 +833.7500 5.571218629080e+01 +834.0000 5.618219480636e+01 +834.2500 5.664931065358e+01 +834.5000 5.711338557078e+01 +834.7500 5.757426773113e+01 +835.0000 5.803180166313e+01 +835.2500 5.848582818010e+01 +835.5000 5.893618431928e+01 +835.7500 5.938270329126e+01 +836.0000 5.982521444020e+01 +836.2500 6.026354321534e+01 +836.5000 6.069751115448e+01 +836.7500 6.112693587971e+01 +837.0000 6.155163110598e+01 +837.2500 6.197140666295e+01 +837.5000 6.238606853037e+01 +837.7500 6.279541888746e+01 +838.0000 6.319925617653e+01 +838.2500 6.359737518116e+01 +838.5000 6.398956711912e+01 +838.7500 6.437561975025e+01 +839.0000 6.475531749939e+01 +839.2500 6.512844159445e+01 +839.5000 6.549477021982e+01 +839.7500 6.585407868476e+01 +840.0000 6.620613960719e+01 +840.2500 6.655072311230e+01 +840.5000 6.688759704621e+01 +840.7500 6.721652720425e+01 +841.0000 6.753727757366e+01 +841.2500 6.784961059048e+01 +841.5000 6.815328741017e+01 +841.7500 6.844806819164e+01 +842.0000 6.873371239418e+01 +842.2500 6.900997908687e+01 +842.5000 6.927662726984e+01 +842.7500 6.953341620684e+01 +843.0000 6.978010576850e+01 +843.2500 7.001645678560e+01 +843.5000 7.024223141157e+01 +843.7500 7.045719349359e+01 +844.0000 7.066110895138e+01 +844.2500 7.085374616297e+01 +844.5000 7.103487635644e+01 +844.7500 7.120427400694e+01 +845.0000 7.136171723794e+01 +845.2500 7.150698822578e+01 +845.5000 7.163987360660e+01 +845.7500 7.176016488473e+01 +846.0000 7.186765884135e+01 +846.2500 7.196215794268e+01 +846.5000 7.204347074641e+01 +846.7500 7.211141230560e+01 +847.0000 7.216580456878e+01 +847.2500 7.220647677543e+01 +847.5000 7.223326584567e+01 +847.7500 7.224601676321e+01 +848.0000 7.224458295050e+01 +848.2500 7.222882663515e+01 +848.5000 7.219861920655e+01 +848.7500 7.215384156175e+01 +849.0000 7.209438443972e+01 +849.2500 7.202014874293e+01 +849.5000 7.193104584551e+01 +849.7500 7.182699788701e+01 +850.0000 7.170793805094e+01 +850.2500 7.157381082740e+01 +850.5000 7.142457225885e+01 +850.7500 7.126019016850e+01 +851.0000 7.108064437046e+01 +851.2500 7.088592686120e+01 +851.5000 7.067604199157e+01 +851.7500 7.045100661891e+01 +852.0000 7.021085023880e+01 +852.2500 6.995561509597e+01 +852.5000 6.968535627393e+01 +852.7500 6.940014176314e+01 +853.0000 6.910005250729e+01 +853.2500 6.878518242756e+01 +853.5000 6.845563842468e+01 +853.7500 6.811154035870e+01 +854.0000 6.775302100634e+01 +854.2500 6.738022599606e+01 +854.5000 6.699331372082e+01 +854.7500 6.659245522868e+01 +855.0000 6.617783409144e+01 +855.2500 6.574964625155e+01 +855.5000 6.530809984752e+01 +855.7500 6.485341501832e+01 +856.0000 6.438582368699e+01 +856.2500 6.390556932404e+01 +856.5000 6.341290669112e+01 +856.7500 6.290810156546e+01 +857.0000 6.239143044572e+01 +857.2500 6.186318023986e+01 +857.5000 6.132364793575e+01 +857.7500 6.077314025525e+01 +858.0000 6.021197329245e+01 +858.2500 5.964047213695e+01 +858.5000 5.905897048298e+01 +858.7500 5.846781022523e+01 +859.0000 5.786734104229e+01 +859.2500 5.725791996856e+01 +859.5000 5.663991095570e+01 +859.7500 5.601368442441e+01 +860.0000 5.537961680770e+01 +860.2500 5.473809008645e+01 +860.5000 5.408949131848e+01 +860.7500 5.343421216190e+01 +861.0000 5.277264839401e+01 +861.2500 5.210519942656e+01 +861.5000 5.143226781851e+01 +861.7500 5.075425878726e+01 +862.0000 5.007157971940e+01 +862.2500 4.938463968191e+01 +862.5000 4.869384893492e+01 +862.7500 4.799961844685e+01 +863.0000 4.730235941305e+01 +863.2500 4.660248277877e+01 +863.5000 4.590039876743e+01 +863.7500 4.519651641506e+01 +864.0000 4.449124311181e+01 +864.2500 4.378498415134e+01 +864.5000 4.307814228894e+01 +864.7500 4.237111730909e+01 +865.0000 4.166430560333e+01 +865.2500 4.095809975898e+01 +865.5000 4.025288815953e+01 +865.7500 3.954905459730e+01 +866.0000 3.884697789887e+01 +866.2500 3.814703156398e+01 +866.5000 3.744958341834e+01 +866.7500 3.675499528078e+01 +867.0000 3.606362264525e+01 +867.2500 3.537581437799e+01 +867.5000 3.469191243030e+01 +867.7500 3.401225156706e+01 +868.0000 3.333715911140e+01 +868.2500 3.266695470563e+01 +868.5000 3.200195008863e+01 +868.7500 3.134244888986e+01 +869.0000 3.068874643995e+01 +869.2500 3.004112959805e+01 +869.5000 2.939987659578e+01 +869.7500 2.876525689791e+01 +870.0000 2.813753107946e+01 +870.2500 2.751695071927e+01 +870.5000 2.690375830983e+01 +870.7500 2.629818718307e+01 +871.0000 2.570046145199e+01 +871.2500 2.511079596774e+01 +871.5000 2.452939629200e+01 +871.7500 2.395645868410e+01 +872.0000 2.339217010269e+01 +872.2500 2.283670822150e+01 +872.5000 2.229024145866e+01 +872.7500 2.175292901938e+01 +873.0000 2.122492095120e+01 +873.2500 2.070635821152e+01 +873.5000 2.019737274691e+01 +873.7500 1.969808758345e+01 +874.0000 1.920861692784e+01 +874.2500 1.872906627845e+01 +874.5000 1.825953254588e+01 +874.7500 1.780010418250e+01 +875.0000 1.735086132013e+01 +875.2500 1.691187591553e+01 +875.5000 1.648321190293e+01 +875.7500 1.606492535309e+01 +876.0000 1.565706463811e+01 +876.2500 1.525967060162e+01 +876.5000 1.487277673359e+01 +876.7500 1.449640934911e+01 +877.0000 1.413058777075e+01 +877.2500 1.377532451368e+01 +877.5000 1.343062547313e+01 +877.7500 1.309649011353e+01 +878.0000 1.277291165887e+01 +878.2500 1.245987728357e+01 +878.5000 1.215736830357e+01 +878.7500 1.186536036687e+01 +879.0000 1.158382364326e+01 +879.2500 1.131272301255e+01 +879.5000 1.105201825103e+01 +879.7500 1.080166421560e+01 +880.0000 1.056161102519e+01 +880.2500 1.033180423908e+01 +880.5000 1.011218503178e+01 +880.7500 9.902690364038e+00 +881.0000 9.703253149722e+00 +881.2500 9.513802418275e+00 +881.5000 9.334263472424e+00 +881.7500 9.164558040922e+00 +882.0000 9.004604426101e+00 +882.2500 8.854317646014e+00 +882.5000 8.713609571023e+00 +882.7500 8.582389054648e+00 +883.0000 8.460562058587e+00 +883.2500 8.348031771787e+00 +883.5000 8.244698723502e+00 +883.7500 8.150460890290e+00 +884.0000 8.065213796924e+00 +884.2500 7.988850611215e+00 +884.5000 7.921262232780e+00 +884.7500 7.862337375796e+00 +885.0000 7.811962645802e+00 +885.2500 7.770022610666e+00 +885.5000 7.736399865800e+00 +885.7500 7.710975093777e+00 +886.0000 7.693627118502e+00 +886.2500 7.684232954096e+00 +886.5000 7.682667848699e+00 +886.7500 7.688805323387e+00 +887.0000 7.702517206440e+00 +887.2500 7.723673663183e+00 +887.5000 7.752143221666e+00 +887.7500 7.787792794444e+00 +888.0000 7.830487696737e+00 +888.2500 7.880091661250e+00 +888.5000 7.936466849966e+00 +888.7500 7.999473863208e+00 +889.0000 8.068971746289e+00 +889.2500 8.144817994069e+00 +889.5000 8.226868553748e+00 +889.7500 8.314977826228e+00 +890.0000 8.408998666366e+00 +890.2500 8.508782382464e+00 +890.5000 8.614178735335e+00 +890.7500 8.725035937262e+00 +891.0000 8.841200651204e+00 +891.2500 8.962517990566e+00 +891.5000 9.088831519867e+00 +891.7500 9.219983256627e+00 +892.0000 9.355813674781e+00 +892.2500 9.496161709941e+00 +892.5000 9.640864766799e+00 +892.7500 9.789758728962e+00 +893.0000 9.942677971505e+00 +893.2500 1.009945537651e+01 +893.5000 1.025992235183e+01 +893.7500 1.042390885342e+01 +894.0000 1.059124341124e+01 +894.2500 1.076175315928e+01 +894.5000 1.093526386960e+01 +894.7500 1.111159999077e+01 +895.0000 1.129058469075e+01 +895.2500 1.147203990453e+01 +895.5000 1.165578638644e+01 +895.7500 1.184164376752e+01 +896.0000 1.202943061777e+01 +896.2500 1.221896451360e+01 +896.5000 1.241006211038e+01 +896.7500 1.260253922026e+01 +897.0000 1.279621089519e+01 +897.2500 1.299089151517e+01 +897.5000 1.318639488177e+01 +897.7500 1.338253431681e+01 +898.0000 1.357912276620e+01 +898.2500 1.377597290887e+01 +898.5000 1.397289727066e+01 +898.7500 1.416970834304e+01 +899.0000 1.436621870671e+01 +899.2500 1.456224115962e+01 +899.5000 1.475758884958e+01 +899.7500 1.495207541100e+01 +900.0000 1.514551510576e+01 +900.2500 1.533772296786e+01 +900.5000 1.552851495170e+01 +900.7500 1.571770808375e+01 +901.0000 1.590512061718e+01 +901.2500 1.609057218947e+01 +901.5000 1.627388398246e+01 +901.7500 1.645487888459e+01 +902.0000 1.663338165513e+01 +902.2500 1.680921908995e+01 +902.5000 1.698222018854e+01 +902.7500 1.715221632199e+01 +903.0000 1.731904140144e+01 +903.2500 1.748253204683e+01 +903.5000 1.764252775542e+01 +903.7500 1.779887106983e+01 +904.0000 1.795140774515e+01 +904.2500 1.809998691476e+01 +904.5000 1.824446125460e+01 +904.7500 1.838468714530e+01 +905.0000 1.852052483194e+01 +905.2500 1.865183858114e+01 +905.5000 1.877849683483e+01 +905.7500 1.890037236070e+01 +906.0000 1.901734239861e+01 +906.2500 1.912928880292e+01 +906.5000 1.923609818013e+01 +906.7500 1.933766202171e+01 +907.0000 1.943387683156e+01 +907.2500 1.952464424805e+01 +907.5000 1.960987116004e+01 +907.7500 1.968946981684e+01 +908.0000 1.976335793163e+01 +908.2500 1.983145877821e+01 +908.5000 1.989370128069e+01 +908.7500 1.995002009598e+01 +909.0000 2.000035568888e+01 +909.2500 2.004465439938e+01 +909.5000 2.008286850219e+01 +909.7500 2.011495625820e+01 +910.0000 2.014088195774e+01 +910.2500 2.016061595553e+01 +910.5000 2.017413469714e+01 +910.7500 2.018142073692e+01 +911.0000 2.018246274730e+01 +911.2500 2.017725551939e+01 +911.5000 2.016579995485e+01 +911.7500 2.014810304899e+01 +912.0000 2.012417786511e+01 +912.2500 2.009404350018e+01 +912.5000 2.005772504171e+01 +912.7500 2.001525351606e+01 +913.0000 1.996666582822e+01 +913.2500 1.991200469307e+01 +913.5000 1.985131855832e+01 +913.7500 1.978466151932e+01 +914.0000 1.971209322576e+01 +914.2500 1.963367878053e+01 +914.5000 1.954948863093e+01 +914.7500 1.945959845237e+01 +915.0000 1.936408902490e+01 +915.2500 1.926304610269e+01 +915.5000 1.915656027684e+01 +915.7500 1.904472683160e+01 +916.0000 1.892764559459e+01 +916.2500 1.880542078098e+01 +916.5000 1.867816083219e+01 +916.7500 1.854597824927e+01 +917.0000 1.840898942147e+01 +917.2500 1.826731445009e+01 +917.5000 1.812107696821e+01 +917.7500 1.797040395650e+01 +918.0000 1.781542555553e+01 +918.2500 1.765627487492e+01 +918.5000 1.749308779974e+01 +918.7500 1.732600279454e+01 +919.0000 1.715516070529e+01 +919.2500 1.698070455980e+01 +919.5000 1.680277936676e+01 +919.7500 1.662153191405e+01 +920.0000 1.643711056646e+01 +920.2500 1.624966506329e+01 +920.5000 1.605934631636e+01 +920.7500 1.586630620845e+01 +921.0000 1.567069739289e+01 +921.2500 1.547267309450e+01 +921.5000 1.527238691214e+01 +921.7500 1.506999262345e+01 +922.0000 1.486564399195e+01 +922.2500 1.465949457681e+01 +922.5000 1.445169754577e+01 +922.7500 1.424240549136e+01 +923.0000 1.403177025077e+01 +923.2500 1.381994272977e+01 +923.5000 1.360707273067e+01 +923.7500 1.339330878501e+01 +924.0000 1.317879799074e+01 +924.2500 1.296368585459e+01 +924.5000 1.274811613949e+01 +924.7500 1.253223071751e+01 +925.0000 1.231616942832e+01 +925.2500 1.210006994351e+01 +925.5000 1.188406763682e+01 +925.7500 1.166829546052e+01 +926.0000 1.145288382797e+01 +926.2500 1.123796050266e+01 +926.5000 1.102365049360e+01 +926.7500 1.081007595736e+01 +927.0000 1.059735610679e+01 +927.2500 1.038560712632e+01 +927.5000 1.017494209419e+01 +927.7500 9.965470911360e+00 +928.0000 9.757300237285e+00 +928.2500 9.550533432518e+00 +928.5000 9.345270508132e+00 +928.7500 9.141608081947e+00 +929.0000 8.939639341535e+00 +929.2500 8.739454013950e+00 +929.5000 8.541138342145e+00 +929.7500 8.344775067991e+00 +930.0000 8.150443421835e+00 +930.2500 7.958219118503e+00 +930.5000 7.768174359660e+00 +930.7500 7.580377842404e+00 +931.0000 7.394894774001e+00 +931.2500 7.211786892623e+00 +931.5000 7.031112493962e+00 +931.7500 6.852926463587e+00 +932.0000 6.677280314899e+00 +932.2500 6.504222232528e+00 +932.5000 6.333797121034e+00 +932.7500 6.166046658728e+00 +933.0000 6.001009356479e+00 +933.2500 5.838720621315e+00 +933.5000 5.679212824670e+00 +933.7500 5.522515375085e+00 +934.0000 5.368654795207e+00 +934.2500 5.217654802908e+00 +934.5000 5.069536396336e+00 +934.7500 4.924317942742e+00 +935.0000 4.782015270897e+00 +935.2500 4.642641766923e+00 +935.5000 4.506208473374e+00 +935.7500 4.372724191392e+00 +936.0000 4.242195585765e+00 +936.2500 4.114627292725e+00 +936.5000 3.990022030324e+00 +936.7500 3.868380711220e+00 +937.0000 3.749702557731e+00 +937.2500 3.633985218979e+00 +937.5000 3.521224890003e+00 +937.7500 3.411416432678e+00 +938.0000 3.304553498298e+00 +938.2500 3.200628651703e+00 +938.5000 3.099633496798e+00 +938.7500 3.001558803357e+00 +939.0000 2.906394634968e+00 +939.2500 2.814130478029e+00 +939.5000 2.724755371655e+00 +939.7500 2.638258038408e+00 +940.0000 2.554627015736e+00 +940.2500 2.473850788034e+00 +940.5000 2.395917919221e+00 +940.7500 2.320817185750e+00 +941.0000 2.248537709967e+00 +941.2500 2.179069093738e+00 +941.5000 2.112401552262e+00 +941.7500 2.048526048000e+00 +942.0000 1.987434424651e+00 +942.2500 1.929119541105e+00 +942.5000 1.873575405309e+00 +942.7500 1.820797307978e+00 +943.0000 1.770781956107e+00 +943.2500 1.723527606197e+00 +943.5000 1.679034197166e+00 +943.7500 1.637303482870e+00 +944.0000 1.598339164179e+00 +944.2500 1.562147020556e+00 +944.5000 1.528735041075e+00 +944.7500 1.498113554827e+00 +945.0000 1.470295360640e+00 +945.2500 1.445295856066e+00 +945.5000 1.423133165560e+00 +945.7500 1.403828267778e+00 +946.0000 1.387405121942e+00 +946.2500 1.373890793170e+00 +946.5000 1.363315576711e+00 +946.7500 1.355713120993e+00 +947.0000 1.351120549387e+00 +947.2500 1.349578580602e+00 +947.5000 1.351131647603e+00 +947.7500 1.355828014931e+00 +948.0000 1.363719894337e+00 +948.2500 1.374863558568e+00 +948.5000 1.389319453207e+00 +948.7500 1.407152306405e+00 +949.0000 1.428431236360e+00 +949.2500 1.453229856393e+00 +949.5000 1.481626377438e+00 +949.7500 1.513703707793e+00 +950.0000 1.549549549909e+00 +950.2500 1.589256494065e+00 +950.5000 1.632922108682e+00 +950.7500 1.680649027082e+00 +951.0000 1.732545030465e+00 +951.2500 1.788723126847e+00 +951.5000 1.849301625745e+00 +951.7500 1.914404208313e+00 +952.0000 1.984159992691e+00 +952.2500 2.058703594281e+00 +952.5000 2.138175180650e+00 +952.7500 2.222720520786e+00 +953.0000 2.312491028380e+00 +953.2500 2.407643798833e+00 +953.5000 2.508341639664e+00 +953.7500 2.614753093979e+00 +954.0000 2.727052456675e+00 +954.2500 2.845419783025e+00 +954.5000 2.970040889301e+00 +954.7500 3.101107345072e+00 +955.0000 3.238816456824e+00 +955.2500 3.383371242529e+00 +955.5000 3.534980396802e+00 +955.7500 3.693858246275e+00 +956.0000 3.860224694817e+00 +956.2500 4.034305158232e+00 +956.5000 4.216330488062e+00 +956.7500 4.406536884135e+00 +957.0000 4.605165795488e+00 +957.2500 4.812463809308e+00 +957.5000 5.028682527549e+00 +957.7500 5.254078430863e+00 +958.0000 5.488912729523e+00 +958.2500 5.733451201007e+00 +958.5000 5.987964013932e+00 +958.7500 6.252725538030e+00 +959.0000 6.528014139896e+00 +959.2500 6.814111964217e+00 +959.5000 7.111304700251e+00 +959.7500 7.419881333316e+00 +960.0000 7.740133881066e+00 +960.2500 8.072357114396e+00 +960.5000 8.416848262782e+00 +960.7500 8.773906703931e+00 +961.0000 9.143833637641e+00 +961.2500 9.526931743772e+00 +961.5000 9.923504824290e+00 +961.7500 1.033385742937e+01 +962.0000 1.075829446755e+01 +962.2500 1.119712080004e+01 +962.5000 1.165064081922e+01 +962.7500 1.211915801147e+01 +963.0000 1.260297450455e+01 +963.2500 1.310239059961e+01 +963.5000 1.361770428829e+01 +963.7500 1.414921075497e+01 +964.0000 1.469720186466e+01 +964.2500 1.526196563691e+01 +964.5000 1.584378570607e+01 +964.7500 1.644294076847e+01 +965.0000 1.705970401707e+01 +965.2500 1.769434256398e+01 +965.5000 1.834711685172e+01 +965.7500 1.901828005371e+01 +966.0000 1.970807746476e+01 +966.2500 2.041674588236e+01 +966.5000 2.114451297958e+01 +966.7500 2.189159667041e+01 +967.0000 2.265820446851e+01 +967.2500 2.344453284032e+01 +967.5000 2.425076655353e+01 +967.7500 2.507707802198e+01 +968.0000 2.592362664811e+01 +968.2500 2.679055816408e+01 +968.5000 2.767800397279e+01 +968.7500 2.858608048999e+01 +969.0000 2.951488848887e+01 +969.2500 3.046451244821e+01 +969.5000 3.143501990574e+01 +969.7500 3.242646081784e+01 +970.0000 3.343886692712e+01 +970.2500 3.447225113934e+01 +970.5000 3.552660691102e+01 +970.7500 3.660190764939e+01 +971.0000 3.769810612604e+01 +971.2500 3.881513390595e+01 +971.5000 3.995290079325e+01 +971.7500 4.111129429552e+01 +972.0000 4.229017910791e+01 +972.2500 4.348939661887e+01 +972.5000 4.470876443892e+01 +972.7500 4.594807595404e+01 +973.0000 4.720709990530e+01 +973.2500 4.848557999610e+01 +973.5000 4.978323452875e+01 +973.7500 5.109975607171e+01 +974.0000 5.243481115898e+01 +974.2500 5.378804002321e+01 +974.5000 5.515905636377e+01 +974.7500 5.654744715120e+01 +975.0000 5.795277246939e+01 +975.2500 5.937456539673e+01 +975.5000 6.081233192744e+01 +975.7500 6.226555093420e+01 +976.0000 6.373367417332e+01 +976.2500 6.521612633329e+01 +976.5000 6.671230512783e+01 +976.7500 6.822158143418e+01 +977.0000 6.974329947759e+01 +977.2500 7.127677706265e+01 +977.5000 7.282130585204e+01 +977.7500 7.437615169345e+01 +978.0000 7.594055499488e+01 +978.2500 7.751373114887e+01 +978.5000 7.909487100586e+01 +978.7500 8.068314139677e+01 +979.0000 8.227768570504e+01 +979.2500 8.387762448789e+01 +979.5000 8.548205614670e+01 +979.7500 8.709005764638e+01 +980.0000 8.870068528311e+01 +980.2500 9.031297550017e+01 +980.5000 9.192594575114e+01 +980.7500 9.353859540980e+01 +981.0000 9.514990672585e+01 +981.2500 9.675884582559e+01 +981.5000 9.836436375634e+01 +981.7500 9.996539757367e+01 +982.0000 1.015608714699e+02 +982.2500 1.031496979424e+02 +982.5000 1.047307790010e+02 +982.7500 1.063030074115e+02 +983.0000 1.078652679745e+02 +983.2500 1.094164388379e+02 +983.5000 1.109553928406e+02 +983.7500 1.124809988853e+02 +984.0000 1.139921233387e+02 +984.2500 1.154876314572e+02 +984.5000 1.169663888346e+02 +984.7500 1.184272628707e+02 +985.0000 1.198691242579e+02 +985.2500 1.212908484828e+02 +985.5000 1.226913173414e+02 +985.7500 1.240694204639e+02 +986.0000 1.254240568472e+02 +986.2500 1.267541363928e+02 +986.5000 1.280585814458e+02 +986.7500 1.293363283341e+02 +987.0000 1.305863289035e+02 +987.2500 1.318075520461e+02 +987.5000 1.329989852205e+02 +987.7500 1.341596359586e+02 +988.0000 1.352885333578e+02 +988.2500 1.363847295557e+02 +988.5000 1.374473011834e+02 +988.7500 1.384753507954e+02 +989.0000 1.394680082732e+02 +989.2500 1.404244321998e+02 +989.5000 1.413438112017e+02 +989.7500 1.422253652571e+02 +990.0000 1.430683469661e+02 +990.2500 1.438720427817e+02 +990.5000 1.446357741984e+02 +990.7500 1.453588988956e+02 +991.0000 1.460408118347e+02 +991.2500 1.466809463065e+02 +991.5000 1.472787749271e+02 +991.7500 1.478338105806e+02 +992.0000 1.483456073061e+02 +992.2500 1.488137611275e+02 +992.5000 1.492379108244e+02 +992.7500 1.496177386419e+02 +993.0000 1.499529709395e+02 +993.2500 1.502433787747e+02 +993.5000 1.504887784235e+02 +993.7500 1.506890318345e+02 +994.0000 1.508440470158e+02 +994.2500 1.509537783555e+02 +994.5000 1.510182268723e+02 +994.7500 1.510374403988e+02 +995.0000 1.510115136948e+02 +995.2500 1.509405884912e+02 +995.5000 1.508248534642e+02 +995.7500 1.506645441402e+02 +996.0000 1.504599427314e+02 +996.2500 1.502113779016e+02 +996.5000 1.499192244640e+02 +996.7500 1.495839030106e+02 +997.0000 1.492058794743e+02 +997.2500 1.487856646246e+02 +997.5000 1.483238134976e+02 +997.7500 1.478209247613e+02 +998.0000 1.472776400185e+02 +998.2500 1.466946430472e+02 +998.5000 1.460726589807e+02 +998.7500 1.454124534289e+02 +999.0000 1.447148315427e+02 +999.2500 1.439806370230e+02 +999.5000 1.432107510760e+02 +999.7500 1.424060913171e+02 +1000.0000 1.415676106258e+02 +1000.2500 1.406962959523e+02 +1000.5000 1.397931670805e+02 +1000.7500 1.388592753466e+02 +1001.0000 1.378957023182e+02 +1001.2500 1.369035584354e+02 +1001.5000 1.358839816152e+02 +1001.7500 1.348381358242e+02 +1002.0000 1.337672096194e+02 +1002.2500 1.326724146614e+02 +1002.5000 1.315549842021e+02 +1002.7500 1.304161715494e+02 +1003.0000 1.292572485111e+02 +1003.2500 1.280795038218e+02 +1003.5000 1.268842415537e+02 +1003.7500 1.256727795157e+02 +1004.0000 1.244464476413e+02 +1004.2500 1.232065863704e+02 +1004.5000 1.219545450247e+02 +1004.7500 1.206916801817e+02 +1005.0000 1.194193540478e+02 +1005.2500 1.181389328347e+02 +1005.5000 1.168517851392e+02 +1005.7500 1.155592803316e+02 +1006.0000 1.142627869521e+02 +1006.2500 1.129636711190e+02 +1006.5000 1.116632949515e+02 +1006.7500 1.103630150065e+02 +1007.0000 1.090641807345e+02 +1007.2500 1.077681329549e+02 +1007.5000 1.064762023518e+02 +1007.7500 1.051897079946e+02 +1008.0000 1.039099558824e+02 +1008.2500 1.026382375159e+02 +1008.5000 1.013758284964e+02 +1008.7500 1.001239871557e+02 +1009.0000 9.888395321610e+01 +1009.2500 9.765694648326e+01 +1009.5000 9.644416557227e+01 +1009.7500 9.524678666865e+01 +1010.0000 9.406596232507e+01 +1010.2500 9.290282029480e+01 +1010.5000 9.175846240284e+01 +1010.7500 9.063396345550e+01 +1011.0000 8.953037018927e+01 +1011.2500 8.844870025954e+01 +1011.5000 8.738994126988e+01 +1011.7500 8.635504984234e+01 +1012.0000 8.534495072925e+01 +1012.2500 8.436053596697e+01 +1012.5000 8.340266407185e+01 +1012.7500 8.247215927869e+01 +1013.0000 8.156981082195e+01 +1013.2500 8.069637225988e+01 +1013.5000 7.985256084160e+01 +1013.7500 7.903905691723e+01 +1014.0000 7.825650339116e+01 +1014.2500 7.750550521822e+01 +1014.5000 7.678662894293e+01 +1014.7500 7.610040228156e+01 +1015.0000 7.544731374679e+01 +1015.2500 7.482781231504e+01 +1015.5000 7.424230713593e+01 +1015.7500 7.369116728395e+01 +1016.0000 7.317472155185e+01 +1016.2500 7.269325828550e+01 +1016.5000 7.224702526007e+01 +1016.7500 7.183622959700e+01 +1017.0000 7.146103772153e+01 +1017.2500 7.112157536043e+01 +1017.5000 7.081792757955e+01 +1017.7500 7.055013886080e+01 +1018.0000 7.031821321822e+01 +1018.2500 7.012211435266e+01 +1018.5000 6.996176584479e+01 +1018.7500 6.983705138592e+01 +1019.0000 6.974781504628e+01 +1019.2500 6.969386158034e+01 +1019.5000 6.967495676873e+01 +1019.7500 6.969082779633e+01 +1020.0000 6.974116366613e+01 +1020.2500 6.982561564842e+01 +1020.5000 6.994379776478e+01 +1020.7500 7.009528730664e+01 +1021.0000 7.027962538769e+01 +1021.2500 7.049631752989e+01 +1021.5000 7.074483428251e+01 +1021.7500 7.102461187375e+01 +1022.0000 7.133505289448e+01 +1022.2500 7.167552701355e+01 +1022.5000 7.204537172424e+01 +1022.7500 7.244389312118e+01 +1023.0000 7.287036670740e+01 +1023.2500 7.332403823079e+01 +1023.5000 7.380412454946e+01 +1023.7500 7.430981452535e+01 +1024.0000 7.484026994559e+01 +1024.2500 7.539462647081e+01 +1024.5000 7.597199460977e+01 +1024.7500 7.657146071973e+01 +1025.0000 7.719208803165e+01 +1025.2500 7.783291769953e+01 +1025.5000 7.849296987318e+01 +1025.7500 7.917124479342e+01 +1026.0000 7.986672390897e+01 +1026.2500 8.057837101412e+01 +1026.5000 8.130513340611e+01 +1026.7500 8.204594306145e+01 +1027.0000 8.279971782994e+01 +1027.2500 8.356536264550e+01 +1027.5000 8.434177075258e+01 +1027.7500 8.512782494706e+01 +1028.0000 8.592239883047e+01 +1028.2500 8.672435807628e+01 +1028.5000 8.753256170692e+01 +1028.7500 8.834586338033e+01 +1029.0000 8.916311268459e+01 +1029.2500 8.998315643933e+01 +1029.5000 9.080484000233e+01 +1029.7500 9.162700858001e+01 +1030.0000 9.244850854019e+01 +1030.2500 9.326818872558e+01 +1030.5000 9.408490176651e+01 +1030.7500 9.489750539112e+01 +1031.0000 9.570486373158e+01 +1031.2500 9.650584862451e+01 +1031.5000 9.729934090398e+01 +1031.7500 9.808423168537e+01 +1032.0000 9.885942363838e+01 +1032.2500 9.962383224741e+01 +1032.5000 1.003763870576e+02 +1032.7500 1.011160329047e+02 +1033.0000 1.018417311271e+02 +1033.2500 1.025524607584e+02 +1033.5000 1.032472196979e+02 +1033.7500 1.039250258588e+02 +1034.0000 1.045849182911e+02 +1034.2500 1.052259582776e+02 +1034.5000 1.058472304020e+02 +1034.7500 1.064478435868e+02 +1035.0000 1.070269320995e+02 +1035.2500 1.075836565259e+02 +1035.5000 1.081172047077e+02 +1035.7500 1.086267926446e+02 +1036.0000 1.091116653583e+02 +1036.2500 1.095710977166e+02 +1036.5000 1.100043952177e+02 +1036.7500 1.104108947319e+02 +1037.0000 1.107899651998e+02 +1037.2500 1.111410082869e+02 +1037.5000 1.114634589918e+02 +1037.7500 1.117567862080e+02 +1038.0000 1.120204932381e+02 +1038.2500 1.122541182595e+02 +1038.5000 1.124572347407e+02 +1038.7500 1.126294518075e+02 +1039.0000 1.127704145589e+02 +1039.2500 1.128798043312e+02 +1039.5000 1.129573389109e+02 +1039.7500 1.130027726953e+02 +1040.0000 1.130158968012e+02 +1040.2500 1.129965391206e+02 +1040.5000 1.129445643245e+02 +1040.7500 1.128598738140e+02 +1041.0000 1.127424056190e+02 +1041.2500 1.125921342453e+02 +1041.5000 1.124090704695e+02 +1041.7500 1.121932610830e+02 +1042.0000 1.119447885853e+02 +1042.2500 1.116637708272e+02 +1042.5000 1.113503606047e+02 +1042.7500 1.110047452046e+02 +1043.0000 1.106271459023e+02 +1043.2500 1.102178174141e+02 +1043.5000 1.097770473026e+02 +1043.7500 1.093051553396e+02 +1044.0000 1.088024928251e+02 +1044.2500 1.082694418657e+02 +1044.5000 1.077064146121e+02 +1044.7500 1.071138524594e+02 +1045.0000 1.064922252095e+02 +1045.2500 1.058420301989e+02 +1045.5000 1.051637913936e+02 +1045.7500 1.044580584510e+02 +1046.0000 1.037254057540e+02 +1046.2500 1.029664314158e+02 +1046.5000 1.021817562595e+02 +1046.7500 1.013720227737e+02 +1047.0000 1.005378940469e+02 +1047.2500 9.968005268080e+01 +1047.5000 9.879919968762e+01 +1047.7500 9.789605337063e+01 +1048.0000 9.697134819192e+01 +1048.2500 9.602583362870e+01 +1048.5000 9.506027302058e+01 +1048.7500 9.407544240981e+01 +1049.0000 9.307212937676e+01 +1049.2500 9.205113187271e+01 +1049.5000 9.101325705203e+01 +1049.7500 8.995932010593e+01 +1050.0000 8.889014309980e+01 +1050.2500 8.780655381618e+01 +1050.5000 8.670938460541e+01 +1050.7500 8.559947124589e+01 +1051.0000 8.447765181587e+01 +1051.2500 8.334476557876e+01 +1051.5000 8.220165188359e+01 +1051.7500 8.104914908264e+01 +1052.0000 7.988809346769e+01 +1052.2500 7.871931822681e+01 +1052.5000 7.754365242312e+01 +1052.7500 7.636191999699e+01 +1053.0000 7.517493879339e+01 +1053.2500 7.398351961542e+01 +1053.5000 7.278846530566e+01 +1053.7500 7.159056985629e+01 +1054.0000 7.039061754928e+01 +1054.2500 6.918938212771e+01 +1054.5000 6.798762599913e+01 +1054.7500 6.678609947190e+01 +1055.0000 6.558554002535e+01 +1055.2500 6.438667161440e+01 +1055.5000 6.319020400941e+01 +1055.7500 6.199683217173e+01 +1056.0000 6.080723566539e+01 +1056.2500 5.962207810545e+01 +1056.5000 5.844200664320e+01 +1056.7500 5.726765148844e+01 +1057.0000 5.609962546905e+01 +1057.2500 5.493852362778e+01 +1057.5000 5.378492285640e+01 +1057.7500 5.263938156697e+01 +1058.0000 5.150243940004e+01 +1058.2500 5.037461696971e+01 +1058.5000 4.925641564499e+01 +1058.7500 4.814831736720e+01 +1059.0000 4.705078450288e+01 +1059.2500 4.596425973181e+01 +1059.5000 4.488916596927e+01 +1059.7500 4.382590632225e+01 +1060.0000 4.277486407858e+01 +1060.2500 4.173640272839e+01 +1060.5000 4.071086601701e+01 +1060.7500 3.969857802856e+01 +1061.0000 3.869984329910e+01 +1061.2500 3.771494695865e+01 +1061.5000 3.674415490091e+01 +1061.7500 3.578771397966e+01 +1062.0000 3.484585223099e+01 +1062.2500 3.391877911991e+01 +1062.5000 3.300668581068e+01 +1062.7500 3.210974545925e+01 +1063.0000 3.122811352712e+01 +1063.2500 3.036192811506e+01 +1063.5000 2.951131031584e+01 +1063.7500 2.867636458449e+01 +1064.0000 2.785717912514e+01 +1064.2500 2.705382629308e+01 +1064.5000 2.626636301096e+01 +1064.7500 2.549483119783e+01 +1065.0000 2.473925820987e+01 +1065.2500 2.399965729170e+01 +1065.5000 2.327602803697e+01 +1065.7500 2.256835685716e+01 +1066.0000 2.187661745745e+01 +1066.2500 2.120077131843e+01 +1066.5000 2.054076818272e+01 +1066.7500 1.989654654522e+01 +1067.0000 1.926803414604e+01 +1067.2500 1.865514846512e+01 +1067.5000 1.805779721733e+01 +1067.7500 1.747587884730e+01 +1068.0000 1.690928302289e+01 +1068.2500 1.635789112638e+01 +1068.5000 1.582157674251e+01 +1068.7500 1.530020614257e+01 +1069.0000 1.479363876360e+01 +1069.2500 1.430172768197e+01 +1069.5000 1.382432008059e+01 +1069.7500 1.336125770907e+01 +1070.0000 1.291237733597e+01 +1070.2500 1.247751119270e+01 +1070.5000 1.205648740840e+01 +1070.7500 1.164913043510e+01 +1071.0000 1.125526146278e+01 +1071.2500 1.087469882377e+01 +1071.5000 1.050725838599e+01 +1071.7500 1.015275393462e+01 +1072.0000 9.810997541912e+00 +1072.2500 9.481799924525e+00 +1072.5000 9.164970788393e+00 +1072.7500 8.860319160580e+00 +1073.0000 8.567653707982e+00 +1073.2500 8.286783042644e+00 +1073.5000 8.017516013491e+00 +1073.7500 7.759661984319e+00 +1074.0000 7.513031097935e+00 +1074.2500 7.277434526334e+00 +1074.5000 7.052684706873e+00 +1074.7500 6.838595564378e+00 +1075.0000 6.634982719205e+00 +1075.2500 6.441663681255e+00 +1075.5000 6.258458030004e+00 +1075.7500 6.085187580605e+00 +1076.0000 5.921676536170e+00 +1076.2500 5.767751626339e+00 +1076.5000 5.623242232297e+00 +1076.7500 5.487980498368e+00 +1077.0000 5.361801430409e+00 +1077.2500 5.244542981167e+00 +1077.5000 5.136046122852e+00 +1077.7500 5.036154907142e+00 +1078.0000 4.944716512886e+00 +1078.2500 4.861581281772e+00 +1078.5000 4.786602742243e+00 +1078.7500 4.719637621963e+00 +1079.0000 4.660545849148e+00 +1079.2500 4.609190543078e+00 +1079.5000 4.565437994133e+00 +1079.7500 4.529157633696e+00 +1080.0000 4.500221994286e+00 +1080.2500 4.478506660267e+00 +1080.5000 4.463890209539e+00 +1080.7500 4.456254146560e+00 +1081.0000 4.455482827102e+00 +1081.2500 4.461463375147e+00 +1081.5000 4.474085592293e+00 +1081.7500 4.493241860106e+00 +1082.0000 4.518827035811e+00 +1082.2500 4.550738341736e+00 +1082.5000 4.588875248928e+00 +1082.7500 4.633139355368e+00 +1083.0000 4.683434259186e+00 +1083.2500 4.739665427319e+00 +1083.5000 4.801740060028e+00 +1083.7500 4.869566951691e+00 +1084.0000 4.943056348311e+00 +1084.2500 5.022119802146e+00 +1084.5000 5.106670023901e+00 +1084.7500 5.196620732884e+00 +1085.0000 5.291886505569e+00 +1085.2500 5.392382622953e+00 +1085.5000 5.498024917151e+00 +1085.7500 5.608729617624e+00 +1086.0000 5.724413197442e+00 +1086.2500 5.844992219998e+00 +1086.5000 5.970383186569e+00 +1086.7500 6.100502385103e+00 +1087.0000 6.235265740641e+00 +1087.2500 6.374588667736e+00 +1087.5000 6.518385925258e+00 +1087.7500 6.666571473944e+00 +1088.0000 6.819058337062e+00 +1088.2500 6.975758464531e+00 +1088.5000 7.136582600853e+00 +1088.7500 7.301440157187e+00 +1089.0000 7.470239087894e+00 +1089.2500 7.642885771862e+00 +1089.5000 7.819284898935e+00 +1089.7500 7.999339361723e+00 +1090.0000 8.182950153095e+00 +1090.2500 8.370016269611e+00 +1090.5000 8.560434621180e+00 +1090.7500 8.754099947162e+00 +1091.0000 8.950904739179e+00 +1091.2500 9.150739170840e+00 +1091.5000 9.353491034598e+00 +1091.7500 9.559045685935e+00 +1092.0000 9.767285995045e+00 +1092.2500 9.978092306201e+00 +1092.5000 1.019134240493e+01 +1092.7500 1.040691149317e+01 +1093.0000 1.062467217247e+01 +1093.2500 1.084449443540e+01 +1093.5000 1.106624566521e+01 +1093.7500 1.128979064381e+01 +1094.0000 1.151499156821e+01 +1094.2500 1.174170807524e+01 +1094.5000 1.196979727487e+01 +1094.7500 1.219911379182e+01 +1095.0000 1.242950981572e+01 +1095.2500 1.266083515953e+01 +1095.5000 1.289293732634e+01 +1095.7500 1.312566158445e+01 +1096.0000 1.335885105055e+01 +1096.2500 1.359234678099e+01 +1096.5000 1.382598787093e+01 +1096.7500 1.405961156131e+01 +1097.0000 1.429305335340e+01 +1097.2500 1.452614713079e+01 +1097.5000 1.475872528860e+01 +1097.7500 1.499061886970e+01 +1098.0000 1.522165770776e+01 +1098.2500 1.545167057671e+01 +1098.5000 1.568048534663e+01 +1098.7500 1.590792914546e+01 +1099.0000 1.613382852651e+01 +1099.2500 1.635800964130e+01 +1099.5000 1.658029841744e+01 +1099.7500 1.680052074127e+01 +1100.0000 1.701850264477e+01 +1100.2500 1.723407049660e+01 +1100.5000 1.744705119663e+01 +1100.7500 1.765727237377e+01 +1101.0000 1.786456258669e+01 +1101.2500 1.806875152685e+01 +1101.5000 1.826967022371e+01 +1101.7500 1.846715125145e+01 +1102.0000 1.866102893688e+01 +1102.2500 1.885113956816e+01 +1102.5000 1.903732160381e+01 +1102.7500 1.921941588160e+01 +1103.0000 1.939726582688e+01 +1103.2500 1.957071765994e+01 +1103.5000 1.973962060193e+01 +1103.7500 1.990382707887e+01 +1104.0000 2.006319292343e+01 +1104.2500 2.021757757385e+01 +1104.5000 2.036684426980e+01 +1104.7500 2.051086024455e+01 +1105.0000 2.064949691319e+01 +1105.2500 2.078263005637e+01 +1105.5000 2.091013999921e+01 +1105.7500 2.103191178508e+01 +1106.0000 2.114783534360e+01 +1106.2500 2.125780565283e+01 +1106.5000 2.136172289501e+01 +1106.7500 2.145949260568e+01 +1107.0000 2.155102581576e+01 +1107.2500 2.163623918629e+01 +1107.5000 2.171505513556e+01 +1107.7500 2.178740195829e+01 +1108.0000 2.185321393670e+01 +1108.2500 2.191243144304e+01 +1108.5000 2.196500103354e+01 +1108.7500 2.201087553346e+01 +1109.0000 2.205001411310e+01 +1109.2500 2.208238235448e+01 +1109.5000 2.210795230879e+01 +1109.7500 2.212670254420e+01 +1110.0000 2.213861818405e+01 +1110.2500 2.214369093544e+01 +1110.5000 2.214191910793e+01 +1110.7500 2.213330762244e+01 +1111.0000 2.211786801039e+01 +1111.2500 2.209561840294e+01 +1111.5000 2.206658351040e+01 +1111.7500 2.203079459191e+01 +1112.0000 2.198828941546e+01 +1112.2500 2.193911220816e+01 +1112.5000 2.188331359720e+01 +1112.7500 2.182095054124e+01 +1113.0000 2.175208625275e+01 +1113.2500 2.167679011117e+01 +1113.5000 2.159513756729e+01 +1113.7500 2.150721003894e+01 +1114.0000 2.141309479826e+01 +1114.2500 2.131288485082e+01 +1114.5000 2.120667880677e+01 +1114.7500 2.109458074440e+01 +1115.0000 2.097670006631e+01 +1115.2500 2.085315134856e+01 +1115.5000 2.072405418312e+01 +1115.7500 2.058953301388e+01 +1116.0000 2.044971696668e+01 +1116.2500 2.030473967361e+01 +1116.5000 2.015473909199e+01 +1116.7500 1.999985731847e+01 +1117.0000 1.984024039847e+01 +1117.2500 1.967603813149e+01 +1117.5000 1.950740387269e+01 +1117.7500 1.933449433101e+01 +1118.0000 1.915746936433e+01 +1118.2500 1.897649177212e+01 +1118.5000 1.879172708579e+01 +1118.7500 1.860334335747e+01 +1119.0000 1.841151094724e+01 +1119.2500 1.821640230954e+01 +1119.5000 1.801819177898e+01 +1119.7500 1.781705535601e+01 +1120.0000 1.761317049285e+01 +1120.2500 1.740671587999e+01 +1120.5000 1.719787123382e+01 +1120.7500 1.698681708550e+01 +1121.0000 1.677373457168e+01 +1121.2500 1.655880522733e+01 +1121.5000 1.634221078095e+01 +1121.7500 1.612413295267e+01 +1122.0000 1.590475325536e+01 +1122.2500 1.568425279927e+01 +1122.5000 1.546281210034e+01 +1122.7500 1.524061089254e+01 +1123.0000 1.501782794451e+01 +1123.2500 1.479464088074e+01 +1123.5000 1.457122600758e+01 +1123.7500 1.434775814423e+01 +1124.0000 1.412441045901e+01 +1124.2500 1.390135431108e+01 +1124.5000 1.367875909775e+01 +1124.7500 1.345679210764e+01 +1125.0000 1.323561837979e+01 +1125.2500 1.301540056879e+01 +1125.5000 1.279629881622e+01 +1125.7500 1.257847062836e+01 +1126.0000 1.236207076030e+01 +1126.2500 1.214725110658e+01 +1126.5000 1.193416059830e+01 +1126.7500 1.172294510692e+01 +1127.0000 1.151374735454e+01 +1127.2500 1.130670683097e+01 +1127.5000 1.110195971730e+01 +1127.7500 1.089963881611e+01 +1128.0000 1.069987348836e+01 +1128.2500 1.050278959670e+01 +1128.5000 1.030850945537e+01 +1128.7500 1.011715178645e+01 +1129.0000 9.928831682531e+00 +1129.2500 9.743660575615e+00 +1129.5000 9.561746212160e+00 +1129.7500 9.383192634208e+00 +1130.0000 9.208100166434e+00 +1130.2500 9.036565408996e+00 +1130.5000 8.868681236066e+00 +1130.7500 8.704536799881e+00 +1131.0000 8.544217540167e+00 +1131.2500 8.387805198792e+00 +1131.5000 8.235377839462e+00 +1131.7500 8.087009872314e+00 +1132.0000 7.942772083223e+00 +1132.2500 7.802731667640e+00 +1132.5000 7.666952268800e+00 +1132.7500 7.535494020096e+00 +1133.0000 7.408413591446e+00 +1133.2500 7.285764239469e+00 +1133.5000 7.167595861267e+00 +1133.7500 7.053955051640e+00 +1134.0000 6.944885163542e+00 +1134.2500 6.840426371578e+00 +1134.5000 6.740615738372e+00 +1134.7500 6.645487283600e+00 +1135.0000 6.555072055526e+00 +1135.2500 6.469398204832e+00 +1135.5000 6.388491060582e+00 +1135.7500 6.312373208132e+00 +1136.0000 6.241064568808e+00 +1136.2500 6.174582481192e+00 +1136.5000 6.112941783827e+00 +1136.7500 6.056154899197e+00 +1137.0000 6.004231918802e+00 +1137.2500 5.957180689187e+00 +1137.5000 5.915006898747e+00 +1137.7500 5.877714165188e+00 +1138.0000 5.845304123468e+00 +1138.2500 5.817776514101e+00 +1138.5000 5.795129271665e+00 +1138.7500 5.777358613395e+00 +1139.0000 5.764459127723e+00 +1139.2500 5.756423862642e+00 +1139.5000 5.753244413771e+00 +1139.7500 5.754911012001e+00 +1140.0000 5.761412610606e+00 +1140.2500 5.772736971717e+00 +1140.5000 5.788870752030e+00 +1140.7500 5.809799587669e+00 +1141.0000 5.835508178080e+00 +1141.2500 5.865980368868e+00 +1141.5000 5.901199233473e+00 +1141.7500 5.941147153598e+00 +1142.0000 5.985805898290e+00 +1142.2500 6.035156701586e+00 +1142.5000 6.089180338632e+00 +1142.7500 6.147857200190e+00 +1143.0000 6.211167365452e+00 +1143.2500 6.279090673060e+00 +1143.5000 6.351606790266e+00 +1143.7500 6.428695280137e+00 +1144.0000 6.510335666722e+00 +1144.2500 6.596507498110e+00 +1144.5000 6.687190407279e+00 +1144.7500 6.782364170670e+00 +1145.0000 6.882008764390e+00 +1145.2500 6.986104417980e+00 +1145.5000 7.094631665643e+00 +1145.7500 7.207571394872e+00 +1146.0000 7.324904892379e+00 +1146.2500 7.446613887254e+00 +1146.5000 7.572680591264e+00 +1146.7500 7.703087736220e+00 +1147.0000 7.837818608313e+00 +1147.2500 7.976857079355e+00 +1147.5000 8.120187634837e+00 +1147.7500 8.267795398718e+00 +1148.0000 8.419666154876e+00 +1148.2500 8.575786365129e+00 +1148.5000 8.736143183763e+00 +1148.7500 8.900724468483e+00 +1149.0000 9.069518787710e+00 +1149.2500 9.242515424168e+00 +1149.5000 9.419704374672e+00 +1149.7500 9.601076346064e+00 +1150.0000 9.786622747238e+00 +1150.2500 9.976335677182e+00 +1150.5000 1.017020790900e+01 +1150.7500 1.036823286984e+01 +1151.0000 1.057040461675e+01 +1151.2500 1.077671780829e+01 +1151.5000 1.098716767205e+01 +1151.7500 1.120174996785e+01 +1152.0000 1.142046094686e+01 +1152.2500 1.164329730629e+01 +1152.5000 1.187025614001e+01 +1152.7500 1.210133488481e+01 +1153.0000 1.233653126255e+01 +1153.2500 1.257584321804e+01 +1153.5000 1.281926885282e+01 +1153.7500 1.306680635482e+01 +1154.0000 1.331845392400e+01 +1154.2500 1.357420969400e+01 +1154.5000 1.383407164995e+01 +1154.7500 1.409803754244e+01 +1155.0000 1.436610479785e+01 +1155.2500 1.463827042516e+01 +1155.5000 1.491453091930e+01 +1155.7500 1.519488216126e+01 +1156.0000 1.547931931513e+01 +1156.2500 1.576783672219e+01 +1156.5000 1.606042779233e+01 +1156.7500 1.635708489289e+01 +1157.0000 1.665779923533e+01 +1157.2500 1.696256075972e+01 +1157.5000 1.727135801758e+01 +1157.7500 1.758417805304e+01 +1158.0000 1.790100628294e+01 +1158.2500 1.822182637581e+01 +1158.5000 1.854662013030e+01 +1158.7500 1.887536735334e+01 +1159.0000 1.920804573818e+01 +1159.2500 1.954463074297e+01 +1159.5000 1.988509546988e+01 +1159.7500 2.022941054549e+01 +1160.0000 2.057754400254e+01 +1160.2500 2.092946116359e+01 +1160.5000 2.128512452692e+01 +1160.7500 2.164449365515e+01 +1161.0000 2.200752506687e+01 +1161.2500 2.237417213180e+01 +1161.5000 2.274438496992e+01 +1161.7500 2.311811035487e+01 +1162.0000 2.349529162217e+01 +1162.2500 2.387586858266e+01 +1162.5000 2.425977744155e+01 +1162.7500 2.464695072357e+01 +1163.0000 2.503731720456e+01 +1163.2500 2.543080185002e+01 +1163.5000 2.582732576098e+01 +1163.7500 2.622680612762e+01 +1164.0000 2.662915619095e+01 +1164.2500 2.703428521311e+01 +1164.5000 2.744209845655e+01 +1164.7500 2.785249717242e+01 +1165.0000 2.826537859865e+01 +1165.2500 2.868063596792e+01 +1165.5000 2.909815852593e+01 +1165.7500 2.951783156020e+01 +1166.0000 2.993953643975e+01 +1166.2500 3.036315066579e+01 +1166.5000 3.078854793377e+01 +1166.7500 3.121559820695e+01 +1167.0000 3.164416780162e+01 +1167.2500 3.207411948421e+01 +1167.5000 3.250531258028e+01 +1167.7500 3.293760309560e+01 +1168.0000 3.337084384935e+01 +1168.2500 3.380488461936e+01 +1168.5000 3.423957229955e+01 +1168.7500 3.467475106935e+01 +1169.0000 3.511026257513e+01 +1169.2500 3.554594612353e+01 +1169.5000 3.598163888643e+01 +1169.7500 3.641717611748e+01 +1170.0000 3.685239137989e+01 +1170.2500 3.728711678524e+01 +1170.5000 3.772118324297e+01 +1170.7500 3.815442072030e+01 +1171.0000 3.858665851203e+01 +1171.2500 3.901772551995e+01 +1171.5000 3.944745054132e+01 +1171.7500 3.987566256591e+01 +1172.0000 4.030219108112e+01 +1172.2500 4.072686638460e+01 +1172.5000 4.114951990362e+01 +1172.7500 4.156998452079e+01 +1173.0000 4.198809490525e+01 +1173.2500 4.240368784867e+01 +1173.5000 4.281660260536e+01 +1173.7500 4.322668123567e+01 +1174.0000 4.363376895191e+01 +1174.2500 4.403771446591e+01 +1174.5000 4.443837033743e+01 +1174.7500 4.483559332247e+01 +1175.0000 4.522924472065e+01 +1175.2500 4.561919072067e+01 +1175.5000 4.600530274301e+01 +1175.7500 4.638745777877e+01 +1176.0000 4.676553872388e+01 +1176.2500 4.713943470751e+01 +1176.5000 4.750904141388e+01 +1176.7500 4.787426139630e+01 +1177.0000 4.823500438265e+01 +1177.2500 4.859118757117e+01 +1177.5000 4.894273591563e+01 +1177.7500 4.928958239889e+01 +1178.0000 4.963166829395e+01 +1178.2500 4.996894341141e+01 +1178.5000 5.030136633255e+01 +1178.7500 5.062890462702e+01 +1179.0000 5.095153505420e+01 +1179.2500 5.126924374756e+01 +1179.5000 5.158202638089e+01 +1179.7500 5.188988831584e+01 +1180.0000 5.219284472985e+01 +1180.2500 5.249092072376e+01 +1180.5000 5.278415140834e+01 +1180.7500 5.307258196926e+01 +1181.0000 5.335626770961e+01 +1181.2500 5.363527406961e+01 +1181.5000 5.390967662290e+01 +1181.7500 5.417956104892e+01 +1182.0000 5.444502308104e+01 +1182.2500 5.470616842994e+01 +1182.5000 5.496311268214e+01 +1182.7500 5.521598117319e+01 +1183.0000 5.546490883552e+01 +1183.2500 5.571004002079e+01 +1183.5000 5.595152829658e+01 +1183.7500 5.618953621761e+01 +1184.0000 5.642423507136e+01 +1184.2500 5.665580459840e+01 +1184.5000 5.688443268757e+01 +1184.7500 5.711031504625e+01 +1185.0000 5.733365484621e+01 +1185.2500 5.755466234521e+01 +1185.5000 5.777355448516e+01 +1185.7500 5.799055446707e+01 +1186.0000 5.820589130369e+01 +1186.2500 5.841979935032e+01 +1186.5000 5.863251781470e+01 +1186.7500 5.884429024671e+01 +1187.0000 5.905536400882e+01 +1187.2500 5.926598972820e+01 +1187.5000 5.947642073158e+01 +1187.7500 5.968691246384e+01 +1188.0000 5.989772189152e+01 +1188.2500 6.010910689243e+01 +1188.5000 6.032132563257e+01 +1188.7500 6.053463593171e+01 +1189.0000 6.074929461890e+01 +1189.2500 6.096555687933e+01 +1189.5000 6.118367559397e+01 +1189.7500 6.140390067343e+01 +1190.0000 6.162647838751e+01 +1190.2500 6.185165069211e+01 +1190.5000 6.207965455484e+01 +1190.7500 6.231072128106e+01 +1191.0000 6.254507584198e+01 +1191.2500 6.278293620623e+01 +1191.5000 6.302451267682e+01 +1191.7500 6.327000723488e+01 +1192.0000 6.351961289193e+01 +1192.2500 6.377351305234e+01 +1192.5000 6.403188088753e+01 +1192.7500 6.429487872365e+01 +1193.0000 6.456265744421e+01 +1193.2500 6.483535590940e+01 +1193.5000 6.511310039353e+01 +1193.7500 6.539600404231e+01 +1194.0000 6.568416635126e+01 +1194.2500 6.597767266695e+01 +1194.5000 6.627659371233e+01 +1194.7500 6.658098513770e+01 +1195.0000 6.689088709851e+01 +1195.2500 6.720632386143e+01 +1195.5000 6.752730343983e+01 +1195.7500 6.785381725994e+01 +1196.0000 6.818583985868e+01 +1196.2500 6.852332861433e+01 +1196.5000 6.886622351103e+01 +1196.7500 6.921444693791e+01 +1197.0000 6.956790352373e+01 +1197.2500 6.992648000791e+01 +1197.5000 7.029004514839e+01 +1197.7500 7.065844966715e+01 +1198.0000 7.103152623372e+01 +1198.2500 7.140908948721e+01 +1198.5000 7.179093609710e+01 +1198.7500 7.217684486313e+01 +1199.0000 7.256657685436e+01 +1199.2500 7.295987558747e+01 +1199.5000 7.335646724426e+01 +1199.7500 7.375606092830e+01 +1200.0000 7.415834896031e+01 +1200.2500 7.456300721216e+01 +1200.5000 7.496969547894e+01 +1200.7500 7.537805788865e+01 +1201.0000 7.578772334886e+01 +1201.2500 7.619830602971e+01 +1201.5000 7.660940588235e+01 +1201.7500 7.702060919216e+01 +1202.0000 7.743148916550e+01 +1202.2500 7.784160654923e+01 +1202.5000 7.825051028161e+01 +1202.7500 7.865773817362e+01 +1203.0000 7.906281761920e+01 +1203.2500 7.946526633321e+01 +1203.5000 7.986459311554e+01 +1203.7500 8.026029863999e+01 +1204.0000 8.065187626628e+01 +1204.2500 8.103881287362e+01 +1204.5000 8.142058971405e+01 +1204.7500 8.179668328399e+01 +1205.0000 8.216656621203e+01 +1205.2500 8.252970816130e+01 +1205.5000 8.288557674443e+01 +1205.7500 8.323363844926e+01 +1206.0000 8.357335957333e+01 +1206.2500 8.390420716532e+01 +1206.5000 8.422564997123e+01 +1206.7500 8.453715938359e+01 +1207.0000 8.483821039145e+01 +1207.2500 8.512828252931e+01 +1207.5000 8.540686082294e+01 +1207.7500 8.567343673006e+01 +1208.0000 8.592750907394e+01 +1208.2500 8.616858496789e+01 +1208.5000 8.639618072876e+01 +1208.7500 8.660982277745e+01 +1209.0000 8.680904852463e+01 +1209.2500 8.699340723965e+01 +1209.5000 8.716246090099e+01 +1209.7500 8.731578502640e+01 +1210.0000 8.745296948092e+01 +1210.2500 8.757361926131e+01 +1210.5000 8.767735525499e+01 +1210.7500 8.776381497225e+01 +1211.0000 8.783265324992e+01 +1211.2500 8.788354292533e+01 +1211.5000 8.791617547908e+01 +1211.7500 8.793026164535e+01 +1212.0000 8.792553198857e+01 +1212.2500 8.790173744537e+01 +1212.5000 8.785864983064e+01 +1212.7500 8.779606230699e+01 +1213.0000 8.771378981643e+01 +1213.2500 8.761166947379e+01 +1213.5000 8.748956092099e+01 +1213.7500 8.734734664173e+01 +1214.0000 8.718493223593e+01 +1214.2500 8.700224665369e+01 +1214.5000 8.679924238829e+01 +1214.7500 8.657589562817e+01 +1215.0000 8.633220636763e+01 +1215.2500 8.606819847635e+01 +1215.5000 8.578391972766e+01 +1215.7500 8.547944178583e+01 +1216.0000 8.515486015255e+01 +1216.2500 8.481029407294e+01 +1216.5000 8.444588640164e+01 +1216.7500 8.406180342927e+01 +1217.0000 8.365823467003e+01 +1217.2500 8.323539261103e+01 +1217.5000 8.279351242421e+01 +1217.7500 8.233285164149e+01 +1218.0000 8.185368979426e+01 +1218.2500 8.135632801806e+01 +1218.5000 8.084108862353e+01 +1218.7500 8.030831463475e+01 +1219.0000 7.975836929611e+01 +1219.2500 7.919163554897e+01 +1219.5000 7.860851547933e+01 +1219.7500 7.800942973789e+01 +1220.0000 7.739481693390e+01 +1220.2500 7.676513300405e+01 +1220.5000 7.612085055809e+01 +1220.7500 7.546245820243e+01 +1221.0000 7.479045984340e+01 +1221.2500 7.410537397164e+01 +1221.5000 7.340773292907e+01 +1221.7500 7.269808216027e+01 +1222.0000 7.197697944957e+01 +1222.2500 7.124499414557e+01 +1222.5000 7.050270637477e+01 +1222.7500 6.975070624566e+01 +1223.0000 6.898959304511e+01 +1223.2500 6.821997442847e+01 +1223.5000 6.744246560503e+01 +1223.7500 6.665768852032e+01 +1224.0000 6.586627103684e+01 +1224.2500 6.506884611471e+01 +1224.5000 6.426605099372e+01 +1224.7500 6.345852637818e+01 +1225.0000 6.264691562605e+01 +1225.2500 6.183186394373e+01 +1225.5000 6.101401758777e+01 +1225.7500 6.019402307499e+01 +1226.0000 5.937252640195e+01 +1226.2500 5.855017227537e+01 +1226.5000 5.772760335439e+01 +1226.7500 5.690545950583e+01 +1227.0000 5.608437707366e+01 +1227.2500 5.526498816357e+01 +1227.5000 5.444791994360e+01 +1227.7500 5.363379396181e+01 +1228.0000 5.282322548186e+01 +1228.2500 5.201682283716e+01 +1228.5000 5.121518680457e+01 +1228.7500 5.041890999810e+01 +1229.0000 4.962857628342e+01 +1229.2500 4.884476021373e+01 +1229.5000 4.806802648741e+01 +1229.7500 4.729892942813e+01 +1230.0000 4.653801248763e+01 +1230.2500 4.578580777171e+01 +1230.5000 4.504283558962e+01 +1230.7500 4.430960402725e+01 +1231.0000 4.358660854423e+01 +1231.2500 4.287433159519e+01 +1231.5000 4.217324227527e+01 +1231.7500 4.148379599003e+01 +1232.0000 4.080643414974e+01 +1232.2500 4.014158388810e+01 +1232.5000 3.948965780536e+01 +1232.7500 3.885105373575e+01 +1233.0000 3.822615453923e+01 +1233.2500 3.761532791722e+01 +1233.5000 3.701892625247e+01 +1233.7500 3.643728647256e+01 +1234.0000 3.587072993709e+01 +1234.2500 3.531956234821e+01 +1234.5000 3.478407368424e+01 +1234.7500 3.426453815622e+01 +1235.0000 3.376121418705e+01 +1235.2500 3.327434441287e+01 +1235.5000 3.280415570658e+01 +1235.7500 3.235085922303e+01 +1236.0000 3.191465046560e+01 +1236.2500 3.149570937398e+01 +1236.5000 3.109420043269e+01 +1236.7500 3.071027280011e+01 +1237.0000 3.034406045773e+01 +1237.2500 2.999568237925e+01 +1237.5000 2.966524271937e+01 +1237.7500 2.935283102172e+01 +1238.0000 2.905852244601e+01 +1238.2500 2.878237801378e+01 +1238.5000 2.852444487275e+01 +1238.7500 2.828475657933e+01 +1239.0000 2.806333339923e+01 +1239.2500 2.786018262578e+01 +1239.5000 2.767529891581e+01 +1239.7500 2.750866464304e+01 +1240.0000 2.736025026846e+01 +1240.2500 2.723001472786e+01 +1240.5000 2.711790583624e+01 +1240.7500 2.702386070881e+01 +1241.0000 2.694780619868e+01 +1241.2500 2.688965935101e+01 +1241.5000 2.684932787345e+01 +1241.7500 2.682671062289e+01 +1242.0000 2.682169810835e+01 +1242.2500 2.683417300998e+01 +1242.5000 2.686401071406e+01 +1242.7500 2.691107986391e+01 +1243.0000 2.697524292673e+01 +1243.2500 2.705635677622e+01 +1243.5000 2.715427329094e+01 +1243.7500 2.726883996838e+01 +1244.0000 2.739990055461e+01 +1244.2500 2.754729568955e+01 +1244.5000 2.771086356756e+01 +1244.7500 2.789044061355e+01 +1245.0000 2.808586217425e+01 +1245.2500 2.829696322466e+01 +1245.5000 2.852357908954e+01 +1245.7500 2.876554617971e+01 +1246.0000 2.902270274305e+01 +1246.2500 2.929488962998e+01 +1246.5000 2.958195107323e+01 +1246.7500 2.988373548158e+01 +1247.0000 3.020009624732e+01 +1247.2500 3.053089256713e+01 +1247.5000 3.087599027601e+01 +1247.7500 3.123526269386e+01 +1248.0000 3.160859148431e+01 +1248.2500 3.199586752529e+01 +1248.5000 3.239699179087e+01 +1248.7500 3.281187624375e+01 +1249.0000 3.324044473792e+01 +1249.2500 3.368263393060e+01 +1249.5000 3.413839420306e+01 +1249.7500 3.460769058931e+01 +1250.0000 3.509050371195e+01 +1250.2500 3.558683072441e+01 +1250.5000 3.609668625844e+01 +1250.7500 3.662010337610e+01 +1251.0000 3.715713452514e+01 +1251.2500 3.770785249664e+01 +1251.5000 3.827235138384e+01 +1251.7500 3.885074754097e+01 +1252.0000 3.944318054077e+01 +1252.2500 4.004981412949e+01 +1252.5000 4.067083717794e+01 +1252.7500 4.130646462717e+01 +1253.0000 4.195693842748e+01 +1253.2500 4.262252846896e+01 +1253.5000 4.330353350236e+01 +1253.7500 4.400028204834e+01 +1254.0000 4.471313329373e+01 +1254.2500 4.544247797293e+01 +1254.5000 4.618873923284e+01 +1254.7500 4.695237347945e+01 +1255.0000 4.773387120440e+01 +1255.2500 4.853375778958e+01 +1255.5000 4.935259428803e+01 +1255.7500 5.019097817915e+01 +1256.0000 5.104954409639e+01 +1256.2500 5.192896452554e+01 +1256.5000 5.282995047156e+01 +1256.7500 5.375325209230e+01 +1257.0000 5.469965929679e+01 +1257.2500 5.567000230663e+01 +1257.5000 5.666515217812e+01 +1257.7500 5.768602128365e+01 +1258.0000 5.873356375010e+01 +1258.2500 5.980877585271e+01 +1258.5000 6.091269636232e+01 +1258.7500 6.204640684446e+01 +1259.0000 6.321103190831e+01 +1259.2500 6.440773940395e+01 +1259.5000 6.563774056627e+01 +1259.7500 6.690229010391e+01 +1260.0000 6.820268623162e+01 +1260.2500 6.954027064484e+01 +1260.5000 7.091642843483e+01 +1260.7500 7.233258794322e+01 +1261.0000 7.379022055476e+01 +1261.2500 7.529084042709e+01 +1261.5000 7.683600415659e+01 +1261.7500 7.842731037930e+01 +1262.0000 8.006639930615e+01 +1262.2500 8.175495219189e+01 +1262.5000 8.349469073692e+01 +1262.7500 8.528737642176e+01 +1263.0000 8.713480977378e+01 +1263.2500 8.903882956591e+01 +1263.5000 9.100131194734e+01 +1263.7500 9.302416950620e+01 +1264.0000 9.510935026454e+01 +1264.2500 9.725883660581e+01 +1264.5000 9.947464413540e+01 +1264.7500 1.017588204749e+02 +1265.0000 1.041134439908e+02 +1265.2500 1.065406224586e+02 +1265.5000 1.090424916630e+02 +1265.7500 1.116212139369e+02 +1266.0000 1.142789766376e+02 +1266.2500 1.170179905654e+02 +1266.5000 1.198404883231e+02 +1266.7500 1.227487226203e+02 +1267.0000 1.257449645228e+02 +1267.2500 1.288315016509e+02 +1267.5000 1.320106363274e+02 +1267.7500 1.352846836779e+02 +1268.0000 1.386559696868e+02 +1268.2500 1.421268292099e+02 +1268.5000 1.456996039481e+02 +1268.7500 1.493766403836e+02 +1269.0000 1.531602876821e+02 +1269.2500 1.570528955641e+02 +1269.5000 1.610568121478e+02 +1269.7500 1.651743817672e+02 +1270.0000 1.694079427687e+02 +1270.2500 1.737598252889e+02 +1270.5000 1.782323490176e+02 +1270.7500 1.828278209486e+02 +1271.0000 1.875485331223e+02 +1271.2500 1.923967603636e+02 +1271.5000 1.973747580172e+02 +1271.7500 2.024847596858e+02 +1272.0000 2.077289749725e+02 +1272.2500 2.131095872323e+02 +1272.5000 2.186287513348e+02 +1272.7500 2.242885914423e+02 +1273.0000 2.300911988060e+02 +1273.2500 2.360386295837e+02 +1273.5000 2.421329026811e+02 +1273.7500 2.483759976214e+02 +1274.0000 2.547698524442e+02 +1274.2500 2.613163616370e+02 +1274.5000 2.680173741029e+02 +1274.7500 2.748746911649e+02 +1275.0000 2.818900646109e+02 +1275.2500 2.890651947801e+02 +1275.5000 2.964017286938e+02 +1275.7500 3.039012582315e+02 +1276.0000 3.115653183544e+02 +1276.2500 3.193953853768e+02 +1276.5000 3.273928752877e+02 +1276.7500 3.355591421223e+02 +1277.0000 3.438954763854e+02 +1277.2500 3.524031035248e+02 +1277.5000 3.610831824586e+02 +1277.7500 3.699368041522e+02 +1278.0000 3.789649902479e+02 +1278.2500 3.881686917453e+02 +1278.5000 3.975487877319e+02 +1278.7500 4.071060841625e+02 +1279.0000 4.168413126873e+02 +1279.2500 4.267551295262e+02 +1279.5000 4.368481143881e+02 +1279.7500 4.471207694334e+02 +1280.0000 4.575735182770e+02 +1280.2500 4.682067050305e+02 +1280.5000 4.790205933801e+02 +1280.7500 4.900153656979e+02 +1281.0000 5.011911221839e+02 +1281.2500 5.125478800357e+02 +1281.5000 5.240855726418e+02 +1281.7500 5.358040487966e+02 +1282.0000 5.477030719329e+02 +1282.2500 5.597823193676e+02 +1282.5000 5.720413815588e+02 +1282.7500 5.844797613691e+02 +1283.0000 5.970968733319e+02 +1283.2500 6.098920429166e+02 +1283.5000 6.228645057902e+02 +1283.7500 6.360134070690e+02 +1284.0000 6.493378005601e+02 +1284.2500 6.628366479858e+02 +1284.5000 6.765088181897e+02 +1284.7500 6.903530863195e+02 +1285.0000 7.043681329850e+02 +1285.2500 7.185525433853e+02 +1285.5000 7.329048064059e+02 +1285.7500 7.474233136801e+02 +1286.0000 7.621063586128e+02 +1286.2500 7.769521353664e+02 +1286.5000 7.919587378031e+02 +1286.7500 8.071241583868e+02 +1287.0000 8.224462870380e+02 +1287.2500 8.379229099457e+02 +1287.5000 8.535517083315e+02 +1287.7500 8.693302571694e+02 +1288.0000 8.852560238580e+02 +1288.2500 9.013263668492e+02 +1288.5000 9.175385342308e+02 +1288.7500 9.338896622687e+02 +1289.0000 9.503767739065e+02 +1289.2500 9.669967772285e+02 +1289.5000 9.837464638865e+02 +1289.7500 1.000622507496e+03 +1290.0000 1.017621462005e+03 +1290.2500 1.034739760036e+03 +1290.5000 1.051973711218e+03 +1290.7500 1.069319500497e+03 +1291.0000 1.086773186445e+03 +1291.2500 1.104330699570e+03 +1291.5000 1.121987840628e+03 +1291.7500 1.139740278956e+03 +1292.0000 1.157583550822e+03 +1292.2500 1.175513057812e+03 +1292.5000 1.193524065249e+03 +1292.7500 1.211611700671e+03 +1293.0000 1.229770952361e+03 +1293.2500 1.247996667947e+03 +1293.5000 1.266283553085e+03 +1293.7500 1.284626170231e+03 +1294.0000 1.303018937512e+03 +1294.2500 1.321456127713e+03 +1294.5000 1.339931867387e+03 +1294.7500 1.358440136103e+03 +1295.0000 1.376974765835e+03 +1295.2500 1.395529440524e+03 +1295.5000 1.414097695796e+03 +1295.7500 1.432672918878e+03 +1296.0000 1.451248348704e+03 +1296.2500 1.469817076223e+03 +1296.5000 1.488372044941e+03 +1296.7500 1.506906051681e+03 +1297.0000 1.525411747593e+03 +1297.2500 1.543881639414e+03 +1297.5000 1.562308090999e+03 +1297.7500 1.580683325118e+03 +1298.0000 1.598999425548e+03 +1298.2500 1.617248339450e+03 +1298.5000 1.635421880059e+03 +1298.7500 1.653511729677e+03 +1299.0000 1.671509442998e+03 +1299.2500 1.689406450744e+03 +1299.5000 1.707194063650e+03 +1299.7500 1.724863476780e+03 +1300.0000 1.742405774185e+03 +1300.2500 1.759811933918e+03 +1300.5000 1.777072833391e+03 +1300.7500 1.794179255090e+03 +1301.0000 1.811121892643e+03 +1301.2500 1.827891357245e+03 +1301.5000 1.844478184434e+03 +1301.7500 1.860872841220e+03 +1302.0000 1.877065733568e+03 +1302.2500 1.893047214219e+03 +1302.5000 1.908807590855e+03 +1302.7500 1.924337134603e+03 +1303.0000 1.939626088856e+03 +1303.2500 1.954664678423e+03 +1303.5000 1.969443118981e+03 +1303.7500 1.983951626830e+03 +1304.0000 1.998180428933e+03 +1304.2500 2.012119773228e+03 +1304.5000 2.025759939208e+03 +1304.7500 2.039091248736e+03 +1305.0000 2.052104077096e+03 +1305.2500 2.064788864257e+03 +1305.5000 2.077136126328e+03 +1305.7500 2.089136467186e+03 +1306.0000 2.100780590271e+03 +1306.2500 2.112059310500e+03 +1306.5000 2.122963566311e+03 +1306.7500 2.133484431781e+03 +1307.0000 2.143613128831e+03 +1307.2500 2.153341039459e+03 +1307.5000 2.162659718003e+03 +1307.7500 2.171560903398e+03 +1308.0000 2.180036531400e+03 +1308.2500 2.188078746761e+03 +1308.5000 2.195679915314e+03 +1308.7500 2.202832635963e+03 +1309.0000 2.209529752526e+03 +1309.2500 2.215764365428e+03 +1309.5000 2.221529843200e+03 +1309.7500 2.226819833772e+03 +1310.0000 2.231628275518e+03 +1310.2500 2.235949408042e+03 +1310.5000 2.239777782667e+03 +1310.7500 2.243108272614e+03 +1311.0000 2.245936082827e+03 +1311.2500 2.248256759444e+03 +1311.5000 2.250066198863e+03 +1311.7500 2.251360656410e+03 +1312.0000 2.252136754549e+03 +1312.2500 2.252391490656e+03 +1312.5000 2.252122244292e+03 +1312.7500 2.251326783989e+03 +1313.0000 2.250003273511e+03 +1313.2500 2.248150277583e+03 +1313.5000 2.245766767057e+03 +1313.7500 2.242852123518e+03 +1314.0000 2.239406143298e+03 +1314.2500 2.235429040898e+03 +1314.5000 2.230921451798e+03 +1314.7500 2.225884434648e+03 +1315.0000 2.220319472828e+03 +1315.2500 2.214228475375e+03 +1315.5000 2.207613777266e+03 +1315.7500 2.200478139052e+03 +1316.0000 2.192824745840e+03 +1316.2500 2.184657205628e+03 +1316.5000 2.175979546983e+03 +1316.7500 2.166796216069e+03 +1317.0000 2.157112073025e+03 +1317.2500 2.146932387700e+03 +1317.5000 2.136262834752e+03 +1317.7500 2.125109488113e+03 +1318.0000 2.113478814833e+03 +1318.2500 2.101377668315e+03 +1318.5000 2.088813280944e+03 +1318.7500 2.075793256137e+03 +1319.0000 2.062325559818e+03 +1319.2500 2.048418511331e+03 +1319.5000 2.034080773825e+03 +1319.7500 2.019321344111e+03 +1320.0000 2.004149542015e+03 +1320.2500 1.988574999261e+03 +1320.5000 1.972607647885e+03 +1320.7500 1.956257708216e+03 +1321.0000 1.939535676449e+03 +1321.2500 1.922452311823e+03 +1321.5000 1.905018623441e+03 +1321.7500 1.887245856753e+03 +1322.0000 1.869145479728e+03 +1322.2500 1.850729168743e+03 +1322.5000 1.832008794220e+03 +1322.7500 1.812996406035e+03 +1323.0000 1.793704218726e+03 +1323.2500 1.774144596539e+03 +1323.5000 1.754330038330e+03 +1323.7500 1.734273162352e+03 +1324.0000 1.713986690971e+03 +1324.2500 1.693483435322e+03 +1324.5000 1.672776279942e+03 +1324.7500 1.651878167413e+03 +1325.0000 1.630802083038e+03 +1325.2500 1.609561039574e+03 +1325.5000 1.588168062069e+03 +1325.7500 1.566636172802e+03 +1326.0000 1.544978376376e+03 +1326.2500 1.523207644987e+03 +1326.5000 1.501336903879e+03 +1326.7500 1.479379017028e+03 +1327.0000 1.457346773072e+03 +1327.2500 1.435252871511e+03 +1327.5000 1.413109909194e+03 +1327.7500 1.390930367126e+03 +1328.0000 1.368726597604e+03 +1328.2500 1.346510811711e+03 +1328.5000 1.324295067176e+03 +1328.7500 1.302091256634e+03 +1329.0000 1.279911096279e+03 +1329.2500 1.257766114947e+03 +1329.5000 1.235667643632e+03 +1329.7500 1.213626805447e+03 +1330.0000 1.191654506049e+03 +1330.2500 1.169761424532e+03 +1330.5000 1.147958004798e+03 +1330.7500 1.126254447414e+03 +1331.0000 1.104660701974e+03 +1331.2500 1.083186459942e+03 +1331.5000 1.061841148017e+03 +1331.7500 1.040633921996e+03 +1332.0000 1.019573661149e+03 +1332.2500 9.986689631052e+02 +1332.5000 9.779281392466e+02 +1332.7500 9.573592106155e+02 +1333.0000 9.369699043241e+02 +1333.2500 9.167676504698e+02 +1333.5000 8.967595795482e+02 +1333.7500 8.769525203594e+02 +1334.0000 8.573529984007e+02 +1334.2500 8.379672347395e+02 +1334.5000 8.188011453562e+02 +1334.7500 7.998603409498e+02 +1335.0000 7.811501271951e+02 +1335.2500 7.626755054416e+02 +1335.5000 7.444411738420e+02 +1335.7500 7.264515288992e+02 +1336.0000 7.087106674181e+02 +1336.2500 6.912223888498e+02 +1336.5000 6.739901980133e+02 +1336.7500 6.570173081825e+02 +1337.0000 6.403066445212e+02 +1337.2500 6.238608478529e+02 +1337.5000 6.076822787498e+02 +1337.7500 5.917730219241e+02 +1338.0000 5.761348909068e+02 +1338.2500 5.607694329982e+02 +1338.5000 5.456779344718e+02 +1338.7500 5.308614260179e+02 +1339.0000 5.163206884082e+02 +1339.2500 5.020562583661e+02 +1339.5000 4.880684346262e+02 +1339.7500 4.743572841659e+02 +1340.0000 4.609226485939e+02 +1340.2500 4.477641506779e+02 +1340.5000 4.348812009977e+02 +1340.7500 4.222730047061e+02 +1341.0000 4.099385683821e+02 +1341.2500 3.978767069632e+02 +1341.5000 3.860860507390e+02 +1341.7500 3.745650523942e+02 +1342.0000 3.633119940844e+02 +1342.2500 3.523249945328e+02 +1342.5000 3.416020161331e+02 +1342.7500 3.311408720462e+02 +1343.0000 3.209392332775e+02 +1343.2500 3.109946357233e+02 +1343.5000 3.013044871751e+02 +1343.7500 2.918660742684e+02 +1344.0000 2.826765693688e+02 +1344.2500 2.737330373817e+02 +1344.5000 2.650324424791e+02 +1344.7500 2.565716547315e+02 +1345.0000 2.483474566391e+02 +1345.2500 2.403565495522e+02 +1345.5000 2.325955599738e+02 +1345.7500 2.250610457385e+02 +1346.0000 2.177495020592e+02 +1346.2500 2.106573674380e+02 +1346.5000 2.037810294336e+02 +1346.7500 1.971168302826e+02 +1347.0000 1.906610723679e+02 +1347.2500 1.844100235328e+02 +1347.5000 1.783599222351e+02 +1347.7500 1.725069825398e+02 +1348.0000 1.668473989480e+02 +1348.2500 1.613773510586e+02 +1348.5000 1.560930080626e+02 +1348.7500 1.509905330689e+02 +1349.0000 1.460660872597e+02 +1349.2500 1.413158338766e+02 +1349.5000 1.367359420365e+02 +1349.7500 1.323225903781e+02 +1350.0000 1.280719705408e+02 +1350.2500 1.239802904743e+02 +1350.5000 1.200437775846e+02 +1350.7500 1.162586817139e+02 +1351.0000 1.126212779596e+02 +1351.2500 1.091278693333e+02 +1351.5000 1.057747892623e+02 +1351.7500 1.025584039375e+02 +1352.0000 9.947511450925e+01 +1352.2500 9.652135913555e+01 +1352.5000 9.369361488580e+01 +1352.7500 9.098839950325e+01 +1353.0000 8.840227303023e+01 +1353.2500 8.593183930009e+01 +1353.5000 8.357374729965e+01 +1353.7500 8.132469240642e+01 +1354.0000 7.918141750460e+01 +1354.2500 7.714071398439e+01 +1354.5000 7.519942262862e+01 +1354.7500 7.335443439135e+01 +1355.0000 7.160269107262e+01 +1355.2500 6.994118589389e+01 +1355.5000 6.836696397862e+01 +1355.7500 6.687712274227e+01 +1356.0000 6.546881219632e+01 +1356.2500 6.413923517052e+01 +1356.5000 6.288564745781e+01 +1356.7500 6.170535788620e+01 +1357.0000 6.059572832185e+01 +1357.2500 5.955417360750e+01 +1357.5000 5.857816144037e+01 +1357.7500 5.766521219365e+01 +1358.0000 5.681289868538e+01 +1358.2500 5.601884589867e+01 +1358.5000 5.528073065701e+01 +1358.7500 5.459628125831e+01 +1359.0000 5.396327707117e+01 +1359.2500 5.337954809693e+01 +1359.5000 5.284297450071e+01 +1359.7500 5.235148611468e+01 +1360.0000 5.190306191668e+01 +1360.2500 5.149572948705e+01 +1360.5000 5.112756444664e+01 +1360.7500 5.079668987852e+01 +1361.0000 5.050127573618e+01 +1361.2500 5.023953824043e+01 +1361.5000 5.000973926759e+01 +1361.7500 4.981018573084e+01 +1362.0000 4.963922895711e+01 +1362.2500 4.949526406117e+01 +1362.5000 4.937672931891e+01 +1362.7500 4.928210554139e+01 +1363.0000 4.920991545125e+01 +1363.2500 4.915872306290e+01 +1363.5000 4.912713306781e+01 +1363.7500 4.911379022607e+01 +1364.0000 4.911737876535e+01 +1364.2500 4.913662178813e+01 +1364.5000 4.917028068819e+01 +1364.7500 4.921715457698e+01 +1365.0000 4.927607972058e+01 +1365.2500 4.934592898778e+01 +1365.5000 4.942561130975e+01 +1365.7500 4.951407115165e+01 +1366.0000 4.961028799634e+01 +1366.2500 4.971327584057e+01 +1366.5000 4.982208270360e+01 +1366.7500 4.993579014828e+01 +1367.0000 5.005351281458e+01 +1367.2500 5.017439796546e+01 +1367.5000 5.029762504479e+01 +1367.7500 5.042240524723e+01 +1368.0000 5.054798109954e+01 +1368.2500 5.067362605316e+01 +1368.5000 5.079864408755e+01 +1368.7500 5.092236932380e+01 +1369.0000 5.104416564805e+01 +1369.2500 5.116342634417e+01 +1369.5000 5.127957373510e+01 +1369.7500 5.139205883228e+01 +1370.0000 5.150036099243e+01 +1370.2500 5.160398758114e+01 +1370.5000 5.170247364256e+01 +1370.7500 5.179538157436e+01 +1371.0000 5.188230080742e+01 +1371.2500 5.196284748943e+01 +1371.5000 5.203666417170e+01 +1371.7500 5.210341949836e+01 +1372.0000 5.216280789733e+01 +1372.2500 5.221454927227e+01 +1372.5000 5.225838869475e+01 +1372.7500 5.229409609593e+01 +1373.0000 5.232146595703e+01 +1373.2500 5.234031699794e+01 +1373.5000 5.235049186315e+01 +1373.7500 5.235185680448e+01 +1374.0000 5.234430135978e+01 +1374.2500 5.232773802713e+01 +1374.5000 5.230210193383e+01 +1374.7500 5.226735049958e+01 +1375.0000 5.222346309331e+01 +1375.2500 5.217044068312e+01 +1375.5000 5.210830547887e+01 +1375.7500 5.203710056677e+01 +1376.0000 5.195688953572e+01 +1376.2500 5.186775609484e+01 +1376.5000 5.176980368187e+01 +1376.7500 5.166315506207e+01 +1377.0000 5.154795191723e+01 +1377.2500 5.142435442467e+01 +1377.5000 5.129254082576e+01 +1377.7500 5.115270698394e+01 +1378.0000 5.100506593191e+01 +1378.2500 5.084984740800e+01 +1378.5000 5.068729738136e+01 +1378.7500 5.051767756627e+01 +1379.0000 5.034126492513e+01 +1379.2500 5.015835116042e+01 +1379.5000 4.996924219557e+01 +1379.7500 4.977425764475e+01 +1380.0000 4.957373027178e+01 +1380.2500 4.936800543824e+01 +1380.5000 4.915744054101e+01 +1380.7500 4.894240443938e+01 +1381.0000 4.872327687201e+01 +1381.2500 4.850044786400e+01 +1381.5000 4.827431712446e+01 +1381.7500 4.804529343470e+01 +1382.0000 4.781379402769e+01 +1382.2500 4.758024395896e+01 +1382.5000 4.734507546948e+01 +1382.7500 4.710872734093e+01 +1383.0000 4.687164424388e+01 +1383.2500 4.663427607935e+01 +1383.5000 4.639707731424e+01 +1383.7500 4.616050631133e+01 +1384.0000 4.592502465428e+01 +1384.2500 4.569109646824e+01 +1384.5000 4.545918773685e+01 +1384.7500 4.522976561606e+01 +1385.0000 4.500329774558e+01 +1385.2500 4.478025155853e+01 +1385.5000 4.456109359012e+01 +1385.7500 4.434628878592e+01 +1386.0000 4.413629981055e+01 +1386.2500 4.393158635750e+01 +1386.5000 4.373260446080e+01 +1386.7500 4.353980580934e+01 +1387.0000 4.335363706459e+01 +1387.2500 4.317453918257e+01 +1387.5000 4.300294674071e+01 +1387.7500 4.283928727053e+01 +1388.0000 4.268398059694e+01 +1388.2500 4.253743818486e+01 +1388.5000 4.240006249408e+01 +1388.7500 4.227224634312e+01 +1389.0000 4.215437228289e+01 +1389.2500 4.204681198104e+01 +1389.5000 4.194992561771e+01 +1389.7500 4.186406129359e+01 +1390.0000 4.178955445097e+01 +1390.2500 4.172672730877e+01 +1390.5000 4.167588831216e+01 +1390.7500 4.163733159764e+01 +1391.0000 4.161133647444e+01 +1391.2500 4.159816692282e+01 +1391.5000 4.159807111023e+01 +1391.7500 4.161128092601e+01 +1392.0000 4.163801153524e+01 +1392.2500 4.167846095274e+01 +1392.5000 4.173280963764e+01 +1392.7500 4.180122010941e+01 +1393.0000 4.188383658594e+01 +1393.2500 4.198078464429e+01 +1393.5000 4.209217090489e+01 +1393.7500 4.221808273963e+01 +1394.0000 4.235858800453e+01 +1394.2500 4.251373479752e+01 +1394.5000 4.268355124195e+01 +1394.7500 4.286804529616e+01 +1395.0000 4.306720458984e+01 +1395.2500 4.328099628740e+01 +1395.5000 4.350936697898e+01 +1395.7500 4.375224259936e+01 +1396.0000 4.400952837514e+01 +1396.2500 4.428110880061e+01 +1396.5000 4.456684764254e+01 +1396.7500 4.486658797412e+01 +1397.0000 4.518015223828e+01 +1397.2500 4.550734234069e+01 +1397.5000 4.584793977236e+01 +1397.7500 4.620170576214e+01 +1398.0000 4.656838145908e+01 +1398.2500 4.694768814465e+01 +1398.5000 4.733932747489e+01 +1398.7500 4.774298175231e+01 +1399.0000 4.815831422749e+01 +1399.2500 4.858496943018e+01 +1399.5000 4.902257352971e+01 +1399.7500 4.947073472452e+01 +1400.0000 4.992904366033e+01 +1400.2500 5.039707387678e+01 +1400.5000 5.087438228211e+01 +1400.7500 5.136050965533e+01 +1401.0000 5.185498117550e+01 +1401.2500 5.235730697752e+01 +1401.5000 5.286698273392e+01 +1401.7500 5.338349026184e+01 +1402.0000 5.390629815476e+01 +1402.2500 5.443486243802e+01 +1402.5000 5.496862724756e+01 +1402.7500 5.550702553084e+01 +1403.0000 5.604947976931e+01 +1403.2500 5.659540272131e+01 +1403.5000 5.714419818459e+01 +1403.7500 5.769526177742e+01 +1404.0000 5.824798173721e+01 +1404.2500 5.880173973564e+01 +1404.5000 5.935591170913e+01 +1404.7500 5.990986870359e+01 +1405.0000 6.046297773213e+01 +1405.2500 6.101460264471e+01 +1405.5000 6.156410500834e+01 +1405.7500 6.211084499660e+01 +1406.0000 6.265418228729e+01 +1406.2500 6.319347696673e+01 +1406.5000 6.372809043948e+01 +1406.7500 6.425738634218e+01 +1407.0000 6.478073145999e+01 +1407.2500 6.529749664438e+01 +1407.5000 6.580705773081e+01 +1407.7500 6.630879645496e+01 +1408.0000 6.680210136608e+01 +1408.2500 6.728636873604e+01 +1408.5000 6.776100346267e+01 +1408.7500 6.822541996612e+01 +1409.0000 6.867904307665e+01 +1409.2500 6.912130891267e+01 +1409.5000 6.955166574748e+01 +1409.7500 6.996957486358e+01 +1410.0000 7.037451139300e+01 +1410.2500 7.076596514252e+01 +1410.5000 7.114344140239e+01 +1410.7500 7.150646173739e+01 +1411.0000 7.185456475892e+01 +1411.2500 7.218730687706e+01 +1411.5000 7.250426303125e+01 +1411.7500 7.280502739876e+01 +1412.0000 7.308921407965e+01 +1412.2500 7.335645775730e+01 +1412.5000 7.360641433352e+01 +1412.7500 7.383876153736e+01 +1413.0000 7.405319950666e+01 +1413.2500 7.424945134160e+01 +1413.5000 7.442726362939e+01 +1413.7500 7.458640693956e+01 +1414.0000 7.472667628900e+01 +1414.2500 7.484789157626e+01 +1414.5000 7.494989798461e+01 +1414.7500 7.503256635328e+01 +1415.0000 7.509579351663e+01 +1415.2500 7.513950261066e+01 +1415.5000 7.516364334691e+01 +1415.7500 7.516819225317e+01 +1416.0000 7.515315288112e+01 +1416.2500 7.511855598066e+01 +1416.5000 7.506445964095e+01 +1416.7500 7.499094939815e+01 +1417.0000 7.489813830996e+01 +1417.2500 7.478616699720e+01 +1417.5000 7.465520365245e+01 +1417.7500 7.450544401619e+01 +1418.0000 7.433711132065e+01 +1418.2500 7.415045620183e+01 +1418.5000 7.394575658005e+01 +1418.7500 7.372331750950e+01 +1419.0000 7.348347099737e+01 +1419.2500 7.322657579313e+01 +1419.5000 7.295301714847e+01 +1419.7500 7.266320654867e+01 +1420.0000 7.235758141607e+01 +1420.2500 7.203660478626e+01 +1420.5000 7.170076495790e+01 +1420.7500 7.135057511686e+01 +1421.0000 7.098657293545e+01 +1421.2500 7.060932014774e+01 +1421.5000 7.021940210157e+01 +1421.7500 6.981742728839e+01 +1422.0000 6.940402685161e+01 +1422.2500 6.897985407437e+01 +1422.5000 6.854558384773e+01 +1422.7500 6.810191212007e+01 +1423.0000 6.764955532865e+01 +1423.2500 6.718924981418e+01 +1423.5000 6.672175121927e+01 +1423.7500 6.624783387174e+01 +1424.0000 6.576829015344e+01 +1424.2500 6.528392985567e+01 +1424.5000 6.479557952179e+01 +1424.7500 6.430408177797e+01 +1425.0000 6.381029465280e+01 +1425.2500 6.331509088643e+01 +1425.5000 6.281935723013e+01 +1425.7500 6.232399373679e+01 +1426.0000 6.182991304304e+01 +1426.2500 6.133803964371e+01 +1426.5000 6.084930915901e+01 +1426.7500 6.036466759521e+01 +1427.0000 5.988507059906e+01 +1427.2500 5.941148270662e+01 +1427.5000 5.894487658679e+01 +1427.7500 5.848623227997e+01 +1428.0000 5.803653643211e+01 +1428.2500 5.759678152459e+01 +1428.5000 5.716796509992e+01 +1428.7500 5.675108898384e+01 +1429.0000 5.634715850353e+01 +1429.2500 5.595718170248e+01 +1429.5000 5.558216855184e+01 +1429.7500 5.522313015839e+01 +1430.0000 5.488107796913e+01 +1430.2500 5.455702297255e+01 +1430.5000 5.425197489635e+01 +1430.7500 5.396694140176e+01 +1431.0000 5.370292727417e+01 +1431.2500 5.346093361006e+01 +1431.5000 5.324195700001e+01 +1431.7500 5.304698870769e+01 +1432.0000 5.287701384460e+01 +1432.2500 5.273301054042e+01 +1432.5000 5.261594910873e+01 +1432.7500 5.252679120790e+01 +1433.0000 5.246648899706e+01 +1433.2500 5.243598428678e+01 +1433.5000 5.243620768447e+01 +1433.7500 5.246807773413e+01 +1434.0000 5.253250005052e+01 +1434.2500 5.263036644740e+01 +1434.5000 5.276255405995e+01 +1434.7500 5.292992446107e+01 +1435.0000 5.313332277173e+01 +1435.2500 5.337357676519e+01 +1435.5000 5.365149596534e+01 +1435.7500 5.396787073896e+01 +1436.0000 5.432347138229e+01 +1436.2500 5.471904720202e+01 +1436.5000 5.515532559087e+01 +1436.7500 5.563301109816e+01 +1437.0000 5.615278449571e+01 +1437.2500 5.671530183950e+01 +1437.5000 5.732119352766e+01 +1437.7500 5.797106335519e+01 +1438.0000 5.866548756637e+01 +1438.2500 5.940501390526e+01 +1438.5000 6.019016066541e+01 +1438.7500 6.102141573934e+01 +1439.0000 6.189923566916e+01 +1439.2500 6.282404469897e+01 +1439.5000 6.379623383052e+01 +1439.7500 6.481615988318e+01 +1440.0000 6.588414455947e+01 +1440.2500 6.700047351777e+01 +1440.5000 6.816539545339e+01 +1440.7500 6.937912118976e+01 +1441.0000 7.064182278131e+01 +1441.2500 7.195363262965e+01 +1441.5000 7.331464261496e+01 +1441.7500 7.472490324435e+01 +1442.0000 7.618442281916e+01 +1442.2500 7.769316662307e+01 +1442.5000 7.925105613324e+01 +1442.7500 8.085796825642e+01 +1443.0000 8.251373459218e+01 +1443.2500 8.421814072554e+01 +1443.5000 8.597092555122e+01 +1443.7500 8.777178063164e+01 +1444.0000 8.962034959114e+01 +1444.2500 9.151622754865e+01 +1444.5000 9.345896059107e+01 +1444.7500 9.544804528986e+01 +1445.0000 9.748292826310e+01 +1445.2500 9.956300578523e+01 +1445.5000 1.016876234471e+02 +1445.7500 1.038560758681e+02 +1446.0000 1.060676064635e+02 +1446.2500 1.083214072682e+02 +1446.5000 1.106166188199e+02 +1446.7500 1.129523301029e+02 +1447.0000 1.153275785564e+02 +1447.2500 1.177413501468e+02 +1447.5000 1.201925795078e+02 +1447.7500 1.226801501496e+02 +1448.0000 1.252028947386e+02 +1448.2500 1.277595954495e+02 +1448.5000 1.303489843917e+02 +1448.7500 1.329697441102e+02 +1449.0000 1.356205081639e+02 +1449.2500 1.382998617811e+02 +1449.5000 1.410063425934e+02 +1449.7500 1.437384414500e+02 +1450.0000 1.464946033114e+02 +1450.2500 1.492732282238e+02 +1450.5000 1.520726723752e+02 +1450.7500 1.548912492320e+02 +1451.0000 1.577272307572e+02 +1451.2500 1.605788487095e+02 +1451.5000 1.634442960232e+02 +1451.7500 1.663217282679e+02 +1452.0000 1.692092651879e+02 +1452.2500 1.721049923197e+02 +1452.5000 1.750069626864e+02 +1452.7500 1.779131985690e+02 +1453.0000 1.808216933507e+02 +1453.2500 1.837304134345e+02 +1453.5000 1.866373002313e+02 +1453.7500 1.895402722159e+02 +1454.0000 1.924372270500e+02 +1454.2500 1.953260437673e+02 +1454.5000 1.982045850209e+02 +1454.7500 2.010706993870e+02 +1455.0000 2.039222237244e+02 +1455.2500 2.067569855848e+02 +1455.5000 2.095728056708e+02 +1455.7500 2.123675003387e+02 +1456.0000 2.151388841412e+02 +1456.2500 2.178847724069e+02 +1456.5000 2.206029838517e+02 +1456.7500 2.232913432187e+02 +1457.0000 2.259476839415e+02 +1457.2500 2.285698508268e+02 +1457.5000 2.311557027516e+02 +1457.7500 2.337031153700e+02 +1458.0000 2.362099838255e+02 +1458.2500 2.386742254627e+02 +1458.5000 2.410937825352e+02 +1458.7500 2.434666249032e+02 +1459.0000 2.457907527156e+02 +1459.2500 2.480641990737e+02 +1459.5000 2.502850326685e+02 +1459.7500 2.524513603886e+02 +1460.0000 2.545613298930e+02 +1460.2500 2.566131321429e+02 +1460.5000 2.586050038892e+02 +1460.7500 2.605352301092e+02 +1461.0000 2.624021463880e+02 +1461.2500 2.642041412404e+02 +1461.5000 2.659396583672e+02 +1461.7500 2.676071988433e+02 +1462.0000 2.692053232305e+02 +1462.2500 2.707326536128e+02 +1462.5000 2.721878755490e+02 +1462.7500 2.735697399376e+02 +1463.0000 2.748770647926e+02 +1463.2500 2.761087369231e+02 +1463.5000 2.772637135157e+02 +1463.7500 2.783410236153e+02 +1464.0000 2.793397695007e+02 +1464.2500 2.802591279528e+02 +1464.5000 2.810983514125e+02 +1464.7500 2.818567690245e+02 +1465.0000 2.825337875672e+02 +1465.2500 2.831288922636e+02 +1465.5000 2.836416474742e+02 +1465.7500 2.840716972684e+02 +1466.0000 2.844187658737e+02 +1466.2500 2.846826580023e+02 +1466.5000 2.848632590530e+02 +1466.7500 2.849605351892e+02 +1467.0000 2.849745332919e+02 +1467.2500 2.849053807882e+02 +1467.5000 2.847532853555e+02 +1467.7500 2.845185345018e+02 +1468.0000 2.842014950229e+02 +1468.2500 2.838026123383e+02 +1468.5000 2.833224097061e+02 +1468.7500 2.827614873195e+02 +1469.0000 2.821205212862e+02 +1469.2500 2.814002624933e+02 +1469.5000 2.806015353590e+02 +1469.7500 2.797252364761e+02 +1470.0000 2.787723331469e+02 +1470.2500 2.777438618152e+02 +1470.5000 2.766409263982e+02 +1470.7500 2.754646965200e+02 +1471.0000 2.742164056532e+02 +1471.2500 2.728973491703e+02 +1471.5000 2.715088823097e+02 +1471.7500 2.700524180610e+02 +1472.0000 2.685294249728e+02 +1472.2500 2.669414248893e+02 +1472.5000 2.652899906180e+02 +1472.7500 2.635767435351e+02 +1473.0000 2.618033511337e+02 +1473.2500 2.599715245172e+02 +1473.5000 2.580830158464e+02 +1473.7500 2.561396157425e+02 +1474.0000 2.541431506532e+02 +1474.2500 2.520954801853e+02 +1474.5000 2.499984944110e+02 +1474.7500 2.478541111512e+02 +1475.0000 2.456642732424e+02 +1475.2500 2.434309457917e+02 +1475.5000 2.411561134253e+02 +1475.7500 2.388417775361e+02 +1476.0000 2.364899535342e+02 +1476.2500 2.341026681071e+02 +1476.5000 2.316819564931e+02 +1476.7500 2.292298597736e+02 +1477.0000 2.267484221884e+02 +1477.2500 2.242396884798e+02 +1477.5000 2.217057012690e+02 +1477.7500 2.191484984688e+02 +1478.0000 2.165701107394e+02 +1478.2500 2.139725589876e+02 +1478.5000 2.113578519174e+02 +1478.7500 2.087279836326e+02 +1479.0000 2.060849312969e+02 +1479.2500 2.034306528543e+02 +1479.5000 2.007670848136e+02 +1479.7500 1.980961400993e+02 +1480.0000 1.954197059727e+02 +1480.2500 1.927396420250e+02 +1480.5000 1.900577782462e+02 +1480.7500 1.873759131710e+02 +1481.0000 1.846958121040e+02 +1481.2500 1.820192054268e+02 +1481.5000 1.793477869881e+02 +1481.7500 1.766832125782e+02 +1482.0000 1.740270984901e+02 +1482.2500 1.713810201670e+02 +1482.5000 1.687465109381e+02 +1482.7500 1.661250608432e+02 +1483.0000 1.635181155460e+02 +1483.2500 1.609270753374e+02 +1483.5000 1.583532942276e+02 +1483.7500 1.557980791285e+02 +1484.0000 1.532626891245e+02 +1484.2500 1.507483348323e+02 +1484.5000 1.482561778486e+02 +1484.7500 1.457873302856e+02 +1485.0000 1.433428543917e+02 +1485.2500 1.409237622581e+02 +1485.5000 1.385310156092e+02 +1485.7500 1.361655256747e+02 +1486.0000 1.338281531434e+02 +1486.2500 1.315197081955e+02 +1486.5000 1.292409506120e+02 +1486.7500 1.269925899603e+02 +1487.0000 1.247752858515e+02 +1487.2500 1.225896482707e+02 +1487.5000 1.204362379741e+02 +1487.7500 1.183155669540e+02 +1488.0000 1.162280989673e+02 +1488.2500 1.141742501254e+02 +1488.5000 1.121543895431e+02 +1488.7500 1.101688400443e+02 +1489.0000 1.082178789206e+02 +1489.2500 1.063017387417e+02 +1489.5000 1.044206082131e+02 +1489.7500 1.025746330804e+02 +1490.0000 1.007639170753e+02 +1490.2500 9.898852290207e+01 +1490.5000 9.724847326120e+01 +1490.7500 9.554375190685e+01 +1491.0000 9.387430473647e+01 +1491.2500 9.224004090890e+01 +1491.5000 9.064083398859e+01 +1491.7500 8.907652311326e+01 +1492.0000 8.754691418210e+01 +1492.2500 8.605178106216e+01 +1492.5000 8.459086681016e+01 +1492.7500 8.316388490712e+01 +1493.0000 8.177052050356e+01 +1493.2500 8.041043167262e+01 +1493.5000 7.908325066882e+01 +1493.7500 7.778858519016e+01 +1494.0000 7.652601964131e+01 +1494.2500 7.529511639570e+01 +1494.5000 7.409541705452e+01 +1494.7500 7.292644370048e+01 +1495.0000 7.178770014450e+01 +1495.2500 7.067867316347e+01 +1495.5000 6.959883372721e+01 +1495.7500 6.854763821307e+01 +1496.0000 6.752452960658e+01 +1496.2500 6.652893868639e+01 +1496.5000 6.556028519247e+01 +1496.7500 6.461797897584e+01 +1497.0000 6.370142112881e+01 +1497.2500 6.281000509450e+01 +1497.5000 6.194311775448e+01 +1497.7500 6.110014049369e+01 +1498.0000 6.028045024152e+01 +1498.2500 5.948342048837e+01 +1498.5000 5.870842227694e+01 +1498.7500 5.795482516746e+01 +1499.0000 5.722199817638e+01 +1499.2500 5.650931068797e+01 +1499.5000 5.581613333842e+01 +1499.7500 5.514183887201e+01 +1500.0000 5.448580296918e+01 +1500.2500 5.384740504619e+01 +1500.5000 5.322602902622e+01 +1500.7500 5.262106408189e+01 +1501.0000 5.203190534919e+01 +1501.2500 5.145795461275e+01 +1501.5000 5.089862096271e+01 +1501.7500 5.035332142323e+01 +1502.0000 4.982148155294e+01 +1502.2500 4.930253601757e+01 +1502.5000 4.879592913505e+01 +1502.7500 4.830111539352e+01 +1503.0000 4.781755994259e+01 +1503.2500 4.734473905844e+01 +1503.5000 4.688214058300e+01 +1503.7500 4.642926433810e+01 +1504.0000 4.598562251489e+01 +1504.2500 4.555074003917e+01 +1504.5000 4.512415491353e+01 +1504.7500 4.470541853655e+01 +1505.0000 4.429409600013e+01 +1505.2500 4.388976636550e+01 +1505.5000 4.349202291865e+01 +1505.7500 4.310047340603e+01 +1506.0000 4.271474025125e+01 +1506.2500 4.233446075360e+01 +1506.5000 4.195928726921e+01 +1506.7500 4.158888737573e+01 +1507.0000 4.122294402132e+01 +1507.2500 4.086115565880e+01 +1507.5000 4.050323636592e+01 +1507.7500 4.014891595257e+01 +1508.0000 3.979794005574e+01 +1508.2500 3.945007022328e+01 +1508.5000 3.910508398723e+01 +1508.7500 3.876277492758e+01 +1509.0000 3.842295272754e+01 +1509.2500 3.808544322095e+01 +1509.5000 3.775008843299e+01 +1509.7500 3.741674661481e+01 +1510.0000 3.708529227316e+01 +1510.2500 3.675561619585e+01 +1510.5000 3.642762547381e+01 +1510.7500 3.610124352071e+01 +1511.0000 3.577641009094e+01 +1511.2500 3.545308129683e+01 +1511.5000 3.513122962589e+01 +1511.7500 3.481084395884e+01 +1512.0000 3.449192958939e+01 +1512.2500 3.417450824630e+01 +1512.5000 3.385861811872e+01 +1512.7500 3.354431388543e+01 +1513.0000 3.323166674869e+01 +1513.2500 3.292076447344e+01 +1513.5000 3.261171143257e+01 +1513.7500 3.230462865880e+01 +1514.0000 3.199965390391e+01 +1514.2500 3.169694170585e+01 +1514.5000 3.139666346434e+01 +1514.7500 3.109900752551e+01 +1515.0000 3.080417927601e+01 +1515.2500 3.051240124724e+01 +1515.5000 3.022391322988e+01 +1515.7500 2.993897239947e+01 +1516.0000 2.965785345304e+01 +1516.2500 2.938084875739e+01 +1516.5000 2.910826850924e+01 +1516.7500 2.884044090740e+01 +1517.0000 2.857771233725e+01 +1517.2500 2.832044756770e+01 +1517.5000 2.806902996062e+01 +1517.7500 2.782386169290e+01 +1518.0000 2.758536399112e+01 +1518.2500 2.735397737872e+01 +1518.5000 2.713016193562e+01 +1518.7500 2.691439757004e+01 +1519.0000 2.670718430243e+01 +1519.2500 2.650904256105e+01 +1519.5000 2.632051348896e+01 +1519.7500 2.614215926195e+01 +1520.0000 2.597456341698e+01 +1520.2500 2.581833119043e+01 +1520.5000 2.567408986574e+01 +1520.7500 2.554248912956e+01 +1521.0000 2.542420143570e+01 +1521.2500 2.531992237609e+01 +1521.5000 2.523037105777e+01 +1521.7500 2.515629048485e+01 +1522.0000 2.509844794453e+01 +1522.2500 2.505763539581e+01 +1522.5000 2.503466985988e+01 +1522.7500 2.503039381067e+01 +1523.0000 2.504567556433e+01 +1523.2500 2.508140966597e+01 +1523.5000 2.513851727239e+01 +1523.7500 2.521794652882e+01 +1524.0000 2.532067293828e+01 +1524.2500 2.544769972145e+01 +1524.5000 2.560005816552e+01 +1524.7500 2.577880795970e+01 +1525.0000 2.598503751570e+01 +1525.2500 2.621986427084e+01 +1525.5000 2.648443497173e+01 +1525.7500 2.677992593630e+01 +1526.0000 2.710754329177e+01 +1526.2500 2.746852318624e+01 +1526.5000 2.786413197160e+01 +1526.7500 2.829566635497e+01 +1527.0000 2.876445351645e+01 +1527.2500 2.927185119039e+01 +1527.5000 2.981924770758e+01 +1527.7500 3.040806199578e+01 +1528.0000 3.103974353572e+01 +1528.2500 3.171577227001e+01 +1528.5000 3.243765846209e+01 +1528.7500 3.320694250240e+01 +1529.0000 3.402519465921e+01 +1529.2500 3.489401477102e+01 +1529.5000 3.581503187800e+01 +1529.7500 3.678990378958e+01 +1530.0000 3.782031658545e+01 +1530.2500 3.890798404728e+01 +1530.5000 4.005464701850e+01 +1530.7500 4.126207268945e+01 +1531.0000 4.253205380532e+01 +1531.2500 4.386640779446e+01 +1531.5000 4.526697581453e+01 +1531.7500 4.673562171415e+01 +1532.0000 4.827423090783e+01 +1532.2500 4.988470916204e+01 +1532.5000 5.156898129026e+01 +1532.7500 5.332898975532e+01 +1533.0000 5.516669317702e+01 +1533.2500 5.708406474355e+01 +1533.5000 5.908309052528e+01 +1533.7500 6.116576768940e+01 +1534.0000 6.333410261461e+01 +1534.2500 6.559010890467e+01 +1534.5000 6.793580530018e+01 +1534.7500 7.037321348815e+01 +1535.0000 7.290435580894e+01 +1535.2500 7.553125286058e+01 +1535.5000 7.825592100069e+01 +1535.7500 8.108036974633e+01 +1536.0000 8.400659907258e+01 +1536.2500 8.703659661076e+01 +1536.5000 9.017233474755e+01 +1536.7500 9.341576762652e+01 +1537.0000 9.676882805397e+01 +1537.2500 1.002334243110e+02 +1537.5000 1.038114368747e+02 +1537.7500 1.075047150503e+02 +1538.0000 1.113150735186e+02 +1538.2500 1.152442888012e+02 +1538.5000 1.192940956468e+02 +1538.7500 1.234661833442e+02 +1539.0000 1.277621919647e+02 +1539.2500 1.321837085394e+02 +1539.5000 1.367322631767e+02 +1539.7500 1.414093251242e+02 +1540.0000 1.462162987823e+02 +1540.2500 1.511545196737e+02 +1540.5000 1.562252503769e+02 +1540.7500 1.614296764292e+02 +1541.0000 1.667689022058e+02 +1541.2500 1.722439467838e+02 +1541.5000 1.778557397975e+02 +1541.7500 1.836051172924e+02 +1542.0000 1.894928175874e+02 +1542.2500 1.955194771524e+02 +1542.5000 2.016856265105e+02 +1542.7500 2.079916861732e+02 +1543.0000 2.144379626179e+02 +1543.2500 2.210246443175e+02 +1543.5000 2.277517978300e+02 +1543.7500 2.346193639596e+02 +1544.0000 2.416271539978e+02 +1544.2500 2.487748460548e+02 +1544.5000 2.560619814909e+02 +1544.7500 2.634879614586e+02 +1545.0000 2.710520435650e+02 +1545.2500 2.787533386646e+02 +1545.5000 2.865908077930e+02 +1545.7500 2.945632592515e+02 +1546.0000 3.026693458526e+02 +1546.2500 3.109075623371e+02 +1546.5000 3.192762429710e+02 +1546.7500 3.277735593346e+02 +1547.0000 3.363975183107e+02 +1547.2500 3.451459602838e+02 +1547.5000 3.540165575578e+02 +1547.7500 3.630068130016e+02 +1548.0000 3.721140589325e+02 +1548.2500 3.813354562438e+02 +1548.5000 3.906679937860e+02 +1548.7500 4.001084880100e+02 +1549.0000 4.096535828769e+02 +1549.2500 4.192997500448e+02 +1549.5000 4.290432893359e+02 +1549.7500 4.388803294923e+02 +1550.0000 4.488068292244e+02 +1550.2500 4.588185785570e+02 +1550.5000 4.689112004788e+02 +1550.7500 4.790801528969e+02 +1551.0000 4.893207309015e+02 +1551.2500 4.996280693423e+02 +1551.5000 5.099971457182e+02 +1551.7500 5.204227833826e+02 +1552.0000 5.308996550642e+02 +1552.2500 5.414222867026e+02 +1552.5000 5.519850615994e+02 +1552.7500 5.625822248810e+02 +1553.0000 5.732078882731e+02 +1553.2500 5.838560351821e+02 +1553.5000 5.945205260797e+02 +1553.7500 6.051951041873e+02 +1554.0000 6.158734014535e+02 +1554.2500 6.265489448190e+02 +1554.5000 6.372151627622e+02 +1554.7500 6.478653921176e+02 +1555.0000 6.584928851580e+02 +1555.2500 6.690908169332e+02 +1555.5000 6.796522928526e+02 +1555.7500 6.901703565030e+02 +1556.0000 7.006379976901e+02 +1556.2500 7.110481606902e+02 +1556.5000 7.213937527010e+02 +1556.7500 7.316676524778e+02 +1557.0000 7.418627191399e+02 +1557.2500 7.519718011341e+02 +1557.5000 7.619877453395e+02 +1557.7500 7.719034062972e+02 +1558.0000 7.817116555502e+02 +1558.2500 7.914053910752e+02 +1558.5000 8.009775467902e+02 +1558.7500 8.104211021196e+02 +1559.0000 8.197290915998e+02 +1559.2500 8.288946145059e+02 +1559.5000 8.379108444817e+02 +1559.7500 8.467710391545e+02 +1560.0000 8.554685497150e+02 +1560.2500 8.639968304435e+02 +1560.5000 8.723494481633e+02 +1560.7500 8.805200916023e+02 +1561.0000 8.885025806428e+02 +1561.2500 8.962908754413e+02 +1561.5000 9.038790853985e+02 +1561.7500 9.112614779602e+02 +1562.0000 9.184324872321e+02 +1562.2500 9.253867223880e+02 +1562.5000 9.321189758541e+02 +1562.7500 9.386242312518e+02 +1563.0000 9.448976710813e+02 +1563.2500 9.509346841288e+02 +1563.5000 9.567308725811e+02 +1563.7500 9.622820588318e+02 +1564.0000 9.675842919630e+02 +1564.2500 9.726338538891e+02 +1564.5000 9.774272651469e+02 +1564.7500 9.819612903203e+02 +1565.0000 9.862329430859e+02 +1565.2500 9.902394908686e+02 +1565.5000 9.939784590950e+02 +1565.7500 9.974476350361e+02 +1566.0000 1.000645071229e+03 +1566.2500 1.003569088468e+03 +1566.5000 1.006218278363e+03 +1566.7500 1.008591505451e+03 +1567.0000 1.010687908862e+03 +1567.2500 1.012506903532e+03 +1567.5000 1.014048180957e+03 +1567.7500 1.015311709497e+03 +1568.0000 1.016297734208e+03 +1568.2500 1.017006776228e+03 +1568.5000 1.017439631691e+03 +1568.7500 1.017597370197e+03 +1569.0000 1.017481332815e+03 +1569.2500 1.017093129648e+03 +1569.5000 1.016434636942e+03 +1569.7500 1.015507993766e+03 +1570.0000 1.014315598252e+03 +1570.2500 1.012860103417e+03 +1570.5000 1.011144412567e+03 +1570.7500 1.009171674297e+03 +1571.0000 1.006945277098e+03 +1571.2500 1.004468843581e+03 +1571.5000 1.001746224333e+03 +1571.7500 9.987814914150e+02 +1572.0000 9.955789315232e+02 +1572.2500 9.921430388179e+02 +1572.5000 9.884785074465e+02 +1572.7500 9.845902237710e+02 +1573.0000 9.804832583186e+02 +1573.2500 9.761628574738e+02 +1573.5000 9.716344349294e+02 +1573.7500 9.669035629153e+02 +1574.0000 9.619759632252e+02 +1574.2500 9.568574980592e+02 +1574.5000 9.515541607037e+02 +1574.7500 9.460720660685e+02 +1575.0000 9.404174411004e+02 +1575.2500 9.345966150959e+02 +1575.5000 9.286160099319e+02 +1575.7500 9.224821302364e+02 +1576.0000 9.162015535196e+02 +1576.2500 9.097809202862e+02 +1576.5000 9.032269241495e+02 +1576.7500 8.965463019683e+02 +1577.0000 8.897458240261e+02 +1577.2500 8.828322842741e+02 +1577.5000 8.758124906556e+02 +1577.7500 8.686932555334e+02 +1578.0000 8.614813862383e+02 +1578.2500 8.541836757568e+02 +1578.5000 8.468068935769e+02 +1578.7500 8.393577767089e+02 +1579.0000 8.318430208986e+02 +1579.2500 8.242692720489e+02 +1579.5000 8.166431178652e+02 +1579.7500 8.089710797410e+02 +1580.0000 8.012596048952e+02 +1580.2500 7.935150587775e+02 +1580.5000 7.857437177522e+02 +1580.7500 7.779517620743e+02 +1581.0000 7.701452691669e+02 +1581.2500 7.623302072112e+02 +1581.5000 7.545124290587e+02 +1581.7500 7.466976664722e+02 +1582.0000 7.388915247055e+02 +1582.2500 7.310994774259e+02 +1582.5000 7.233268619866e+02 +1582.7500 7.155788750535e+02 +1583.0000 7.078605685892e+02 +1583.2500 7.001768461980e+02 +1583.5000 6.925324598333e+02 +1583.7500 6.849320068676e+02 +1584.0000 6.773799275269e+02 +1584.2500 6.698805026865e+02 +1584.5000 6.624378520280e+02 +1584.7500 6.550559325530e+02 +1585.0000 6.477385374527e+02 +1585.2500 6.404892953255e+02 +1585.5000 6.333116697403e+02 +1585.7500 6.262089591382e+02 +1586.0000 6.191842970651e+02 +1586.2500 6.122406527298e+02 +1586.5000 6.053808318766e+02 +1586.7500 5.986074779657e+02 +1587.0000 5.919230736510e+02 +1587.2500 5.853299425445e+02 +1587.5000 5.788302512578e+02 +1587.7500 5.724260117081e+02 +1588.0000 5.661190836780e+02 +1588.2500 5.599111776159e+02 +1588.5000 5.538038576651e+02 +1588.7500 5.477985449081e+02 +1589.0000 5.418965208124e+02 +1589.2500 5.360989308653e+02 +1589.5000 5.304067883820e+02 +1589.7500 5.248209784746e+02 +1590.0000 5.193422621659e+02 +1590.2500 5.139712806359e+02 +1590.5000 5.087085595834e+02 +1590.7500 5.035545136907e+02 +1591.0000 4.985094511763e+02 +1591.2500 4.935735784189e+02 +1591.5000 4.887470046421e+02 +1591.7500 4.840297466414e+02 +1592.0000 4.794217335424e+02 +1592.2500 4.749228115742e+02 +1592.5000 4.705327488456e+02 +1592.7500 4.662512401092e+02 +1593.0000 4.620779115016e+02 +1593.2500 4.580123252456e+02 +1593.5000 4.540539843030e+02 +1593.7500 4.502023369644e+02 +1594.0000 4.464567813654e+02 +1594.2500 4.428166699185e+02 +1594.5000 4.392813136472e+02 +1594.7500 4.358499864157e+02 +1595.0000 4.325219290405e+02 +1595.2500 4.292963532785e+02 +1595.5000 4.261724456792e+02 +1595.7500 4.231493712956e+02 +1596.0000 4.202262772444e+02 +1596.2500 4.174022961102e+02 +1596.5000 4.146765491852e+02 +1596.7500 4.120481495402e+02 +1597.0000 4.095162049218e+02 +1597.2500 4.070798204695e+02 +1597.5000 4.047381012511e+02 +1597.7500 4.024901546114e+02 +1598.0000 4.003350923318e+02 +1598.2500 3.982720325999e+02 +1598.5000 3.963001017855e+02 +1598.7500 3.944184360250e+02 +1599.0000 3.926261826108e+02 +1599.2500 3.909225011890e+02 +1599.5000 3.893065647639e+02 +1599.7500 3.877775605135e+02 +1600.0000 3.863346904147e+02 +1600.2500 3.849771716844e+02 +1600.5000 3.837042370372e+02 +1600.7500 3.825151347640e+02 +1601.0000 3.814091286365e+02 +1601.2500 3.803854976414e+02 +1601.5000 3.794435355494e+02 +1601.7500 3.785825503250e+02 +1602.0000 3.778018633832e+02 +1602.2500 3.771008086985e+02 +1602.5000 3.764787317742e+02 +1602.7500 3.759349884777e+02 +1603.0000 3.754689437507e+02 +1603.2500 3.750799702006e+02 +1603.5000 3.747674465816e+02 +1603.7500 3.745307561741e+02 +1604.0000 3.743692850697e+02 +1604.2500 3.742824203717e+02 +1604.5000 3.742695483185e+02 +1604.7500 3.743300523402e+02 +1605.0000 3.744633110554e+02 +1605.2500 3.746686962197e+02 +1605.5000 3.749455706328e+02 +1605.7500 3.752932860143e+02 +1606.0000 3.757111808581e+02 +1606.2500 3.761985782722e+02 +1606.5000 3.767547838155e+02 +1606.7500 3.773790833389e+02 +1607.0000 3.780707408403e+02 +1607.2500 3.788289963419e+02 +1607.5000 3.796530637980e+02 +1607.7500 3.805421290432e+02 +1608.0000 3.814953477874e+02 +1608.2500 3.825118436666e+02 +1608.5000 3.835907063570e+02 +1608.7500 3.847309897602e+02 +1609.0000 3.859317102662e+02 +1609.2500 3.871918451017e+02 +1609.5000 3.885103307701e+02 +1609.7500 3.898860615892e+02 +1610.0000 3.913178883330e+02 +1610.2500 3.928046169837e+02 +1610.5000 3.943450075975e+02 +1610.7500 3.959377732914e+02 +1611.0000 3.975815793530e+02 +1611.2500 3.992750424801e+02 +1611.5000 4.010167301511e+02 +1611.7500 4.028051601321e+02 +1612.0000 4.046388001208e+02 +1612.2500 4.065160675330e+02 +1612.5000 4.084353294301e+02 +1612.7500 4.103949025928e+02 +1613.0000 4.123930537389e+02 +1613.2500 4.144279998890e+02 +1613.5000 4.164979088776e+02 +1613.7500 4.186009000120e+02 +1614.0000 4.207350448770e+02 +1614.2500 4.228983682850e+02 +1614.5000 4.250888493700e+02 +1614.7500 4.273044228237e+02 +1615.0000 4.295429802728e+02 +1615.2500 4.318023717924e+02 +1615.5000 4.340804075556e+02 +1615.7500 4.363748596139e+02 +1616.0000 4.386834638055e+02 +1616.2500 4.410039217882e+02 +1616.5000 4.433339031914e+02 +1616.7500 4.456710478836e+02 +1617.0000 4.480129683498e+02 +1617.2500 4.503572521740e+02 +1617.5000 4.527014646217e+02 +1617.7500 4.550431513156e+02 +1618.0000 4.573798409995e+02 +1618.2500 4.597090483838e+02 +1618.5000 4.620282770662e+02 +1618.7500 4.643350225213e+02 +1619.0000 4.666267751523e+02 +1619.2500 4.689010233969e+02 +1619.5000 4.711552568825e+02 +1619.7500 4.733869696214e+02 +1620.0000 4.755936632399e+02 +1620.2500 4.777728502338e+02 +1620.5000 4.799220572428e+02 +1620.7500 4.820388283369e+02 +1621.0000 4.841207283067e+02 +1621.2500 4.861653459503e+02 +1621.5000 4.881702973502e+02 +1621.7500 4.901332291322e+02 +1622.0000 4.920518216990e+02 +1622.2500 4.939237924316e+02 +1622.5000 4.957468988518e+02 +1622.7500 4.975189417376e+02 +1623.0000 4.992377681861e+02 +1623.2500 5.009012746168e+02 +1623.5000 5.025074097083e+02 +1623.7500 5.040541772625e+02 +1624.0000 5.055396389902e+02 +1624.2500 5.069619172129e+02 +1624.5000 5.083191974730e+02 +1624.7500 5.096097310503e+02 +1625.0000 5.108318373765e+02 +1625.2500 5.119839063446e+02 +1625.5000 5.130644005081e+02 +1625.7500 5.140718571661e+02 +1626.0000 5.150048903298e+02 +1626.2500 5.158621925663e+02 +1626.5000 5.166425367182e+02 +1626.7500 5.173447774931e+02 +1627.0000 5.179678529230e+02 +1627.2500 5.185107856893e+02 +1627.5000 5.189726843126e+02 +1627.7500 5.193527442044e+02 +1628.0000 5.196502485801e+02 +1628.2500 5.198645692326e+02 +1628.5000 5.199951671642e+02 +1628.7500 5.200415930783e+02 +1629.0000 5.200034877296e+02 +1629.2500 5.198805821338e+02 +1629.5000 5.196726976364e+02 +1629.7500 5.193797458432e+02 +1630.0000 5.190017284120e+02 +1630.2500 5.185387367083e+02 +1630.5000 5.179909513259e+02 +1630.7500 5.173586414759e+02 +1631.0000 5.166421642447e+02 +1631.2500 5.158419637252e+02 +1631.5000 5.149585700240e+02 +1631.7500 5.139925981466e+02 +1632.0000 5.129447467660e+02 +1632.2500 5.118157968765e+02 +1632.5000 5.106066103377e+02 +1632.7500 5.093181283132e+02 +1633.0000 5.079513696065e+02 +1633.2500 5.065074289007e+02 +1633.5000 5.049874749052e+02 +1633.7500 5.033927484147e+02 +1634.0000 5.017245602852e+02 +1634.2500 4.999842893326e+02 +1634.5000 4.981733801575e+02 +1634.7500 4.962933409038e+02 +1635.0000 4.943457409534e+02 +1635.2500 4.923322085653e+02 +1635.5000 4.902544284618e+02 +1635.7500 4.881141393692e+02 +1636.0000 4.859131315167e+02 +1636.2500 4.836532441005e+02 +1636.5000 4.813363627170e+02 +1636.7500 4.789644167708e+02 +1637.0000 4.765393768634e+02 +1637.2500 4.740632521668e+02 +1637.5000 4.715380877876e+02 +1637.7500 4.689659621269e+02 +1638.0000 4.663489842394e+02 +1638.2500 4.636892911992e+02 +1638.5000 4.609890454735e+02 +1638.7500 4.582504323119e+02 +1639.0000 4.554756571535e+02 +1639.2500 4.526669430570e+02 +1639.5000 4.498265281572e+02 +1639.7500 4.469566631530e+02 +1640.0000 4.440596088291e+02 +1640.2500 4.411376336152e+02 +1640.5000 4.381930111876e+02 +1640.7500 4.352280181135e+02 +1641.0000 4.322449315439e+02 +1641.2500 4.292460269555e+02 +1641.5000 4.262335759458e+02 +1641.7500 4.232098440820e+02 +1642.0000 4.201770888075e+02 +1642.2500 4.171375574074e+02 +1642.5000 4.140934850333e+02 +1642.7500 4.110470927915e+02 +1643.0000 4.080005858934e+02 +1643.2500 4.049561518706e+02 +1643.5000 4.019159588556e+02 +1643.7500 3.988821539277e+02 +1644.0000 3.958568615260e+02 +1644.2500 3.928421819290e+02 +1644.5000 3.898401898013e+02 +1644.7500 3.868529328065e+02 +1645.0000 3.838824302882e+02 +1645.2500 3.809306720160e+02 +1645.5000 3.779996169986e+02 +1645.7500 3.750911923614e+02 +1646.0000 3.722072922886e+02 +1646.2500 3.693497770297e+02 +1646.5000 3.665204719678e+02 +1646.7500 3.637211667492e+02 +1647.0000 3.609536144741e+02 +1647.2500 3.582195309452e+02 +1647.5000 3.555205939741e+02 +1647.7500 3.528584427437e+02 +1648.0000 3.502346772245e+02 +1648.2500 3.476508576441e+02 +1648.5000 3.451085040070e+02 +1648.7500 3.426090956642e+02 +1649.0000 3.401540709298e+02 +1649.2500 3.377448267433e+02 +1649.5000 3.353827183758e+02 +1649.7500 3.330690591776e+02 +1650.0000 3.308051203664e+02 +1650.2500 3.285921308530e+02 +1650.5000 3.264312771038e+02 +1650.7500 3.243237030371e+02 +1651.0000 3.222705099522e+02 +1651.2500 3.202727564897e+02 +1651.5000 3.183314586192e+02 +1651.7500 3.164475896559e+02 +1652.0000 3.146220803012e+02 +1652.2500 3.128558187074e+02 +1652.5000 3.111496505648e+02 +1652.7500 3.095043792080e+02 +1653.0000 3.079207657427e+02 +1653.2500 3.063995291879e+02 +1653.5000 3.049413466354e+02 +1653.7500 3.035468534228e+02 +1654.0000 3.022166433197e+02 +1654.2500 3.009512687261e+02 +1654.5000 2.997512408801e+02 +1654.7500 2.986170300767e+02 +1655.0000 2.975490658926e+02 +1655.2500 2.965477374198e+02 +1655.5000 2.956133935044e+02 +1655.7500 2.947463429905e+02 +1656.0000 2.939468549686e+02 +1656.2500 2.932151590271e+02 +1656.5000 2.925514455065e+02 +1656.7500 2.919558657552e+02 +1657.0000 2.914285323864e+02 +1657.2500 2.909695195355e+02 +1657.5000 2.905788631178e+02 +1657.7500 2.902565610847e+02 +1658.0000 2.900025736793e+02 +1658.2500 2.898168236901e+02 +1658.5000 2.896991967030e+02 +1658.7500 2.896495413506e+02 +1659.0000 2.896676695585e+02 +1659.2500 2.897533567894e+02 +1659.5000 2.899063422832e+02 +1659.7500 2.901263292935e+02 +1660.0000 2.904129853213e+02 +1660.2500 2.907659423439e+02 +1660.5000 2.911847970405e+02 +1660.7500 2.916691110135e+02 +1661.0000 2.922184110057e+02 +1661.2500 2.928321891139e+02 +1661.5000 2.935099029977e+02 +1661.7500 2.942509760850e+02 +1662.0000 2.950547977732e+02 +1662.2500 2.959207236264e+02 +1662.5000 2.968480755701e+02 +1662.7500 2.978361420806e+02 +1663.0000 2.988841783727e+02 +1663.2500 2.999914065838e+02 +1663.5000 3.011570159554e+02 +1663.7500 3.023801630118e+02 +1664.0000 3.036599717375e+02 +1664.2500 3.049955337525e+02 +1664.5000 3.063859084866e+02 +1664.7500 3.078301233526e+02 +1665.0000 3.093271739199e+02 +1665.2500 3.108760240881e+02 +1665.5000 3.124756062615e+02 +1665.7500 3.141248215256e+02 +1666.0000 3.158225398253e+02 +1666.2500 3.175676001470e+02 +1666.5000 3.193588107034e+02 +1666.7500 3.211949491242e+02 +1667.0000 3.230747626512e+02 +1667.2500 3.249969683408e+02 +1667.5000 3.269602532730e+02 +1667.7500 3.289632747699e+02 +1668.0000 3.310046606225e+02 +1668.2500 3.330830093294e+02 +1668.5000 3.351968903459e+02 +1668.7500 3.373448443471e+02 +1669.0000 3.395253835046e+02 +1669.2500 3.417369917789e+02 +1669.5000 3.439781252283e+02 +1669.7500 3.462472123361e+02 +1670.0000 3.485426543568e+02 +1670.2500 3.508628256841e+02 +1670.5000 3.532060742395e+02 +1670.7500 3.555707218864e+02 +1671.0000 3.579550648678e+02 +1671.2500 3.603573742715e+02 +1671.5000 3.627758965228e+02 +1671.7500 3.652088539068e+02 +1672.0000 3.676544451219e+02 +1672.2500 3.701108458652e+02 +1672.5000 3.725762094517e+02 +1672.7500 3.750486674694e+02 +1673.0000 3.775263304698e+02 +1673.2500 3.800072886969e+02 +1673.5000 3.824896128557e+02 +1673.7500 3.849713549199e+02 +1674.0000 3.874505489821e+02 +1674.2500 3.899252121465e+02 +1674.5000 3.923933454645e+02 +1674.7500 3.948529349159e+02 +1675.0000 3.973019524347e+02 +1675.2500 3.997383569816e+02 +1675.5000 4.021600956632e+02 +1675.7500 4.045651048981e+02 +1676.0000 4.069513116319e+02 +1676.2500 4.093166345991e+02 +1676.5000 4.116589856344e+02 +1676.7500 4.139762710314e+02 +1677.0000 4.162663929499e+02 +1677.2500 4.185272508719e+02 +1677.5000 4.207567431037e+02 +1677.7500 4.229527683262e+02 +1678.0000 4.251132271916e+02 +1678.2500 4.272360239643e+02 +1678.5000 4.293190682076e+02 +1678.7500 4.313602765129e+02 +1679.0000 4.333575742706e+02 +1679.2500 4.353088974816e+02 +1679.5000 4.372121946068e+02 +1679.7500 4.390654284538e+02 +1680.0000 4.408665780977e+02 +1680.2500 4.426136408341e+02 +1680.5000 4.443046341621e+02 +1680.7500 4.459375977943e+02 +1681.0000 4.475105956919e+02 +1681.2500 4.490217181206e+02 +1681.5000 4.504690837250e+02 +1681.7500 4.518508416191e+02 +1682.0000 4.531651734877e+02 +1682.2500 4.544102956970e+02 +1682.5000 4.555844614088e+02 +1682.7500 4.566859626975e+02 +1683.0000 4.577131326620e+02 +1683.2500 4.586643475326e+02 +1683.5000 4.595380287659e+02 +1683.7500 4.603326451250e+02 +1684.0000 4.610467147399e+02 +1684.2500 4.616788071450e+02 +1684.5000 4.622275452877e+02 +1684.7500 4.626916075053e+02 +1685.0000 4.630697294649e+02 +1685.2500 4.633607060619e+02 +1685.5000 4.635633932726e+02 +1685.7500 4.636767099574e+02 +1686.0000 4.636996396092e+02 +1686.2500 4.636312320421e+02 +1686.5000 4.634706050186e+02 +1686.7500 4.632169458076e+02 +1687.0000 4.628695126725e+02 +1687.2500 4.624276362820e+02 +1687.5000 4.618907210430e+02 +1687.7500 4.612582463488e+02 +1688.0000 4.605297677407e+02 +1688.2500 4.597049179788e+02 +1688.5000 4.587834080190e+02 +1688.7500 4.577650278920e+02 +1689.0000 4.566496474828e+02 +1689.2500 4.554372172061e+02 +1689.5000 4.541277685766e+02 +1689.7500 4.527214146706e+02 +1690.0000 4.512183504769e+02 +1690.2500 4.496188531356e+02 +1690.5000 4.479232820625e+02 +1690.7500 4.461320789576e+02 +1691.0000 4.442457676967e+02 +1691.2500 4.422649541052e+02 +1691.5000 4.401903256132e+02 +1691.7500 4.380226507908e+02 +1692.0000 4.357627787655e+02 +1692.2500 4.334116385189e+02 +1692.5000 4.309702380656e+02 +1692.7500 4.284396635132e+02 +1693.0000 4.258210780062e+02 +1693.2500 4.231157205524e+02 +1693.5000 4.203249047359e+02 +1693.7500 4.174500173171e+02 +1694.0000 4.144925167213e+02 +1694.2500 4.114539314201e+02 +1694.5000 4.083358582055e+02 +1694.7500 4.051399603621e+02 +1695.0000 4.018679657384e+02 +1695.2500 3.985216647220e+02 +1695.5000 3.951029081209e+02 +1695.7500 3.916136049560e+02 +1696.0000 3.880557201676e+02 +1696.2500 3.844312722403e+02 +1696.5000 3.807423307515e+02 +1696.7500 3.769910138471e+02 +1697.0000 3.731794856487e+02 +1697.2500 3.693099535986e+02 +1697.5000 3.653846657465e+02 +1697.7500 3.614059079831e+02 +1698.0000 3.573760012260e+02 +1698.2500 3.532972985629e+02 +1698.5000 3.491721823586e+02 +1698.7500 3.450030613294e+02 +1699.0000 3.407923675919e+02 +1699.2500 3.365425536914e+02 +1699.5000 3.322560896154e+02 +1699.7500 3.279354597970e+02 +1700.0000 3.235831601157e+02 +1700.2500 3.192016948989e+02 +1700.5000 3.147935739320e+02 +1700.7500 3.103613094795e+02 +1701.0000 3.059074133263e+02 +1701.2500 3.014343938414e+02 +1701.5000 2.969447530705e+02 +1701.7500 2.924409838630e+02 +1702.0000 2.879255670374e+02 +1702.2500 2.834009685917e+02 +1702.5000 2.788696369609e+02 +1702.7500 2.743340003295e+02 +1703.0000 2.697964640001e+02 +1703.2500 2.652594078255e+02 +1703.5000 2.607251837058e+02 +1703.7500 2.561961131564e+02 +1704.0000 2.516744849489e+02 +1704.2500 2.471625528302e+02 +1704.5000 2.426625333214e+02 +1704.7500 2.381766036007e+02 +1705.0000 2.337068994731e+02 +1705.2500 2.292555134284e+02 +1705.5000 2.248244927916e+02 +1705.7500 2.204158379665e+02 +1706.0000 2.160315007753e+02 +1706.2500 2.116733828954e+02 +1706.5000 2.073433343947e+02 +1706.7500 2.030431523673e+02 +1707.0000 1.987745796703e+02 +1707.2500 1.945393037617e+02 +1707.5000 1.903389556412e+02 +1707.7500 1.861751088934e+02 +1708.0000 1.820492788332e+02 +1708.2500 1.779629217537e+02 +1708.5000 1.739174342765e+02 +1708.7500 1.699141528030e+02 +1709.0000 1.659543530660e+02 +1709.2500 1.620392497814e+02 +1709.5000 1.581699963977e+02 +1709.7500 1.543476849426e+02 +1710.0000 1.505733459646e+02 +1710.2500 1.468479485682e+02 +1710.5000 1.431724005409e+02 +1710.7500 1.395475485690e+02 +1711.0000 1.359741785408e+02 +1711.2500 1.324530159350e+02 +1711.5000 1.289847262903e+02 +1711.7500 1.255699157556e+02 +1712.0000 1.222091317163e+02 +1712.2500 1.189028634944e+02 +1712.5000 1.156515431204e+02 +1712.7500 1.124555461719e+02 +1713.0000 1.093151926774e+02 +1713.2500 1.062307480823e+02 +1713.5000 1.032024242718e+02 +1713.7500 1.002303806499e+02 +1714.0000 9.731472526973e+01 +1714.2500 9.445551601158e+01 +1714.5000 9.165276180665e+01 +1714.7500 8.890642390166e+01 +1715.0000 8.621641716181e+01 +1715.2500 8.358261140832e+01 +1715.5000 8.100483278733e+01 +1715.7500 7.848286516678e+01 +1716.0000 7.601645155782e+01 +1716.2500 7.360529555776e+01 +1716.5000 7.124906281100e+01 +1716.7500 6.894738248498e+01 +1717.0000 6.669984875799e+01 +1717.2500 6.450602231569e+01 +1717.5000 6.236543185347e+01 +1717.7500 6.027757558166e+01 +1718.0000 5.824192273085e+01 +1718.2500 5.625791505444e+01 +1718.5000 5.432496832598e+01 +1718.7500 5.244247382850e+01 +1719.0000 5.060979983353e+01 +1719.2500 4.882629306746e+01 +1719.5000 4.709128016284e+01 +1719.7500 4.540406909265e+01 +1720.0000 4.376395058535e+01 +1720.2500 4.217019951883e+01 +1720.5000 4.062207629147e+01 +1720.7500 3.911882816854e+01 +1721.0000 3.765969060232e+01 +1721.2500 3.624388852457e+01 +1721.5000 3.487063760973e+01 +1721.7500 3.353914550791e+01 +1722.0000 3.224861304614e+01 +1722.2500 3.099823539715e+01 +1722.5000 2.978720321453e+01 +1722.7500 2.861470373350e+01 +1723.0000 2.747992183653e+01 +1723.2500 2.638204108328e+01 +1723.5000 2.532024470411e+01 +1723.7500 2.429371655697e+01 +1724.0000 2.330164204718e+01 +1724.2500 2.234320900981e+01 +1724.5000 2.141760855471e+01 +1724.7500 2.052403587387e+01 +1725.0000 1.966169101129e+01 +1725.2500 1.882977959532e+01 +1725.5000 1.802751353381e+01 +1725.7500 1.725411167209e+01 +1726.0000 1.650880041424e+01 +1726.2500 1.579081430803e+01 +1726.5000 1.509939659379e+01 +1726.7500 1.443379971797e+01 +1727.0000 1.379328581167e+01 +1727.2500 1.317712713494e+01 +1727.5000 1.258460648741e+01 +1727.7500 1.201501758588e+01 +1728.0000 1.146766540980e+01 +1728.2500 1.094186651516e+01 +1728.5000 1.043694931776e+01 +1728.7500 9.952254346634e+00 +1729.0000 9.487134468525e+00 +1729.2500 9.040955084203e+00 +1729.5000 8.613094297628e+00 +1729.7500 8.202943058818e+00 +1730.0000 7.809905281374e+00 +1730.2500 7.433397935601e+00 +1730.5000 7.072851118177e+00 +1730.7500 6.727708099332e+00 +1731.0000 6.397425348490e+00 +1731.2500 6.081472539342e+00 +1731.5000 5.779332535306e+00 +1731.7500 5.490501356331e+00 +1732.0000 5.214488127993e+00 +1732.2500 4.950815013822e+00 +1732.5000 4.699017131797e+00 +1732.7500 4.458642455920e+00 +1733.0000 4.229251703782e+00 +1733.2500 4.010418211006e+00 +1733.5000 3.801727793438e+00 +1733.7500 3.602778597958e+00 +1734.0000 3.413180942727e+00 +1734.2500 3.232557147697e+00 +1734.5000 3.060541356191e+00 +1734.7500 2.896779348306e+00 +1735.0000 2.740928346902e+00 +1735.2500 2.592656816913e+00 +1735.5000 2.451644258668e+00 +1735.7500 2.317580995915e+00 +1736.0000 2.190167959202e+00 +1736.2500 2.069116465235e+00 +1736.5000 1.954147992839e+00 +1736.7500 1.844993956080e+00 +1737.0000 1.741395475123e+00 +1737.2500 1.643103145342e+00 +1737.5000 1.549876805188e+00 +1737.7500 1.461485303312e+00 +1738.0000 1.377706265366e+00 +1738.2500 1.298325860949e+00 +1738.5000 1.223138571072e+00 +1738.7500 1.151946956546e+00 +1739.0000 1.084561427647e+00 +1739.2500 1.020800015382e+00 +1739.5000 9.604881446909e-01 +1739.7500 9.034584098551e-01 +1740.0000 8.495503524004e-01 +1740.2500 7.986102417305e-01 +1740.5000 7.504908587291e-01 +1740.7500 7.050512825354e-01 +1741.0000 6.621566806879e-01 +1741.2500 6.216781028052e-01 +1741.5000 5.834922779622e-01 +1741.7500 5.474814158980e-01 +1742.0000 5.135330121773e-01 +1742.2500 4.815396574131e-01 +1742.5000 4.513988506402e-01 +1742.7500 4.230128169193e-01 +1743.0000 3.962883292320e-01 +1743.2500 3.711365347213e-01 +1743.5000 3.474727853141e-01 +1743.7500 3.252164727528e-01 +1744.0000 3.042908680541e-01 +1744.2500 2.846229654000e-01 +1744.5000 2.661433304568e-01 +1744.7500 2.487859531120e-01 +1745.0000 2.324881046059e-01 +1745.2500 2.171901990311e-01 +1745.5000 2.028356591624e-01 +1745.7500 1.893707865769e-01 +1746.0000 1.767446360129e-01 +1746.2500 1.649088939158e-01 +1746.5000 1.538177611099e-01 +1746.7500 1.434278395329e-01 +1747.0000 1.336980229642e-01 +1747.2500 1.245893916759e-01 +1747.5000 1.160651109298e-01 +1747.7500 1.080903332434e-01 +1748.0000 1.006321043430e-01 +1748.2500 9.365927272156e-02 +1748.5000 8.714240271572e-02 +1748.7500 8.105369101645e-02 +1749.0000 7.536688652475e-02 +1749.2500 7.005721346445e-02 +1749.5000 6.510129766272e-02 +1749.7500 6.047709590874e-02 +1750.0000 5.616382830074e-02 +1750.2500 5.214191349181e-02 +1750.5000 4.839290674515e-02 +1750.7500 4.489944070968e-02 +1751.0000 4.164516882803e-02 +1751.2500 3.861471128929e-02 +1751.5000 3.579360344008e-02 +1751.7500 3.316824656874e-02 +1752.0000 3.072586097829e-02 +1752.2500 2.845444126552e-02 +1752.5000 2.634271372483e-02 +1752.7500 2.438009579695e-02 +1753.0000 2.255665748439e-02 +1753.2500 2.086308465694e-02 +1753.5000 1.929064417256e-02 +1753.7500 1.783115074055e-02 +1754.0000 1.647693545573e-02 +1754.2500 1.522081593434e-02 +1754.5000 1.405606798421e-02 +1754.7500 1.297639874349e-02 +1755.0000 1.197592122441e-02 +1755.2500 1.104913020030e-02 +1755.5000 1.019087937588e-02 +1755.7500 9.396359783236e-03 +1756.0000 8.661079347067e-03 +1756.2500 7.980843565459e-03 +1756.5000 7.351737253703e-03 +1756.7500 6.770107300877e-03 +1757.0000 6.232546390606e-03 +1757.2500 5.735877639250e-03 +1757.5000 5.277140106524e-03 +1757.7500 4.853575135327e-03 +1758.0000 4.462613479199e-03 +1758.2500 4.101863177569e-03 +1758.5000 3.769098140521e-03 +1758.7500 3.462247406430e-03 +1759.0000 3.179385037363e-03 +1759.2500 2.918720618642e-03 +1759.5000 2.678590330434e-03 +1759.7500 2.457448560662e-03 +1760.0000 2.253860029912e-03 +1760.2500 2.066492400328e-03 +1760.5000 1.894109341819e-03 +1760.7500 1.735564030112e-03 +1761.0000 1.589793052430e-03 +1761.2500 1.455810697711e-03 +1761.5000 1.332703609422e-03 +1761.7500 1.219625780111e-03 +1762.0000 1.115793867853e-03 +1762.2500 1.020482815787e-03 +1762.5000 9.330217568638e-04 +1762.7500 8.527901868705e-04 +1763.0000 7.792143896718e-04 +1763.2500 7.117640994583e-04 +1763.5000 6.499493856004e-04 +1763.7500 5.933177464835e-04 +1764.0000 5.414513994404e-04 +1764.2500 4.939647546033e-04 +1764.5000 4.505020611749e-04 +1764.7500 4.107352152599e-04 +1765.0000 3.743617190128e-04 +1765.2500 3.411027814409e-04 +1765.5000 3.107015517588e-04 +1765.7500 2.829214767159e-04 +1766.0000 2.575447738239e-04 +1766.2500 2.343710128859e-04 +1766.5000 2.132157986811e-04 +1766.7500 1.939095480877e-04 +1767.0000 1.762963553353e-04 +1767.2500 1.602329394595e-04 +1767.5000 1.455876683983e-04 +1767.7500 1.322396545128e-04 +1768.0000 1.200779166422e-04 +1768.2500 1.090006041088e-04 +1768.5000 9.891427837932e-05 +1768.7500 8.973324836571e-05 +1769.0000 8.137895560220e-05 +1769.2500 7.377940578341e-05 +1769.5000 6.686864337502e-05 +1769.7500 6.058626622514e-05 +1770.0000 5.487697730799e-05 +1770.2500 4.969017092172e-05 +1770.5000 4.497955084241e-05 +1770.7500 4.070277810423e-05 +1771.0000 3.682114623435e-05 +1771.2500 3.329928191926e-05 +1771.5000 3.010486921862e-05 +1771.7500 2.720839557294e-05 +1772.0000 2.458291797363e-05 +1772.2500 2.220384777825e-05 +1772.5000 2.004875276080e-05 +1772.7500 1.809717508686e-05 +1773.0000 1.633046399690e-05 +1773.2500 1.473162206852e-05 +1773.5000 1.328516400970e-05 +1773.7500 1.197698701145e-05 +1774.0000 1.079425175910e-05 +1774.2500 9.725273267680e-06 +1774.5000 8.759420768424e-06 +1774.7500 7.887025930951e-06 +1775.0000 7.099298759019e-06 +1775.2500 6.388250547526e-06 +1775.5000 5.746623334637e-06 +1775.7500 5.167825325902e-06 +1776.0000 4.645871807162e-06 +1776.2500 4.175331100096e-06 +1776.5000 3.751275148670e-06 +1776.7500 3.369234356676e-06 +1777.0000 3.025156326137e-06 +1777.2500 2.715368173770e-06 +1777.5000 2.436542128131e-06 +1777.7500 2.185664133566e-06 +1778.0000 1.960005208877e-06 +1778.2500 1.757095328739e-06 +1778.5000 1.574699614538e-06 +1778.7500 1.410796638507e-06 +1779.0000 1.263558660910e-06 +1779.2500 1.131333634745e-06 +1779.5000 1.012628825934e-06 +1779.7500 9.060959095030e-07 +1780.0000 8.105174137654e-07 +1780.2500 7.247943951198e-07 +1780.5000 6.479352358943e-07 +1780.7500 5.790454666472e-07 +1781.0000 5.173185226395e-07 +1781.2500 4.620273518185e-07 +1781.5000 4.125167986667e-07 +1781.7500 3.681966947194e-07 +1782.0000 3.285355924757e-07 +1782.2500 2.930550848714e-07 +1782.5000 2.613246574724e-07 +1782.7500 2.329570251336e-07 +1783.0000 2.076039090696e-07 +1783.2500 1.849522141347e-07 +1783.5000 1.647205696447e-07 +1783.7500 1.466562003034e-07 +1784.0000 1.305320967606e-07 +1784.2500 1.161444580365e-07 +1784.5000 1.033103805279e-07 +1784.7500 9.186577057881e-08 +1785.0000 8.166345966841e-08 +1785.2500 7.257150316480e-08 +1785.5000 6.447164532000e-08 +1785.7500 5.725793476106e-08 +1786.0000 5.083547617176e-08 +1786.2500 4.511930517306e-08 +1786.5000 4.003337460813e-08 +1786.7500 3.550964152904e-08 +1787.0000 3.148724517649e-08 +1787.2500 2.791176714932e-08 +1787.5000 2.473456578440e-08 +1787.7500 2.191217751743e-08 +1788.0000 1.940577867670e-08 +1788.2500 1.718070178214e-08 +1788.5000 1.520600098460e-08 +1788.7500 1.345406179265e-08 +1789.0000 1.190025069796e-08 +1789.2500 1.052260073250e-08 +1789.5000 9.301529372980e-09 +1789.7500 8.219585554816e-09 +1790.0000 7.261222872370e-09 +1790.2500 6.412596327141e-09 +1790.5000 5.661380243514e-09 +1790.7500 4.996605205400e-09 +1791.0000 4.408512078480e-09 +1791.2500 3.888421374069e-09 +1791.5000 3.428616383582e-09 +1791.7500 3.022238668936e-09 +1792.0000 2.663194635503e-09 +1792.2500 2.346072041842e-09 +1792.5000 2.066065415625e-09 +1792.7500 1.818909449182e-09 +1793.0000 1.600819541847e-09 +1793.2500 1.408438740922e-09 +1793.5000 1.238790409283e-09 +1793.7500 1.089236016392e-09 +1794.0000 9.574375113386e-10 +1794.2500 8.413237922783e-10 +1794.5000 7.390608367551e-10 +1794.7500 6.490251025400e-10 +1795.0000 5.697798491699e-10 +1795.2500 5.000540668558e-10 +1795.5000 4.387237321988e-10 +1795.7500 3.847951395983e-10 +1796.0000 3.373900836679e-10 +1796.2500 2.957326917038e-10 +1796.5000 2.591377265390e-10 +1796.7500 2.270001992081e-10 +1797.0000 1.987861479656e-10 +1797.2500 1.740244555414e-10 +1797.5000 1.522995902564e-10 +1797.7500 1.332451689307e-10 +1798.0000 1.165382505292e-10 +1798.2500 1.018942793472e-10 +1798.5000 8.906260535586e-11 +1798.7500 7.782251720834e-11 +1799.0000 6.797973045406e-11 +1799.2500 5.936327980362e-11 +1799.5000 5.182276990718e-11 +1799.7500 4.522594412940e-11 +1800.0000 3.945653528194e-11 +1800.2500 3.441236627063e-11 +1800.5000 3.000367217697e-11 +1800.7500 2.615161846994e-11 +1801.0000 2.278699287410e-11 +1801.2500 1.984905094051e-11 +1801.5000 1.728449761201e-11 +1801.7500 1.504658907170e-11 +1802.0000 1.309434094118e-11 +1802.2500 1.139183047584e-11 +1802.5000 9.907581810106e-12 +1802.7500 8.614024554432e-12 +1803.0000 7.487017155598e-12 +1803.2500 6.505427417394e-12 +1803.5000 5.650763453447e-12 +1803.7500 4.906849120350e-12 +1804.0000 4.259538667872e-12 +1804.2500 3.696465953640e-12 +1804.5000 3.206824111010e-12 +1804.7500 2.781172038415e-12 +1805.0000 2.411264503325e-12 +1805.2500 2.089903030079e-12 +1805.5000 1.810805073785e-12 +1805.7500 1.568489277040e-12 +1806.0000 1.358174866734e-12 +1806.2500 1.175693478531e-12 +1806.5000 1.017411900213e-12 +1806.7500 8.801644048484e-13 +1807.0000 7.611935036459e-13 +1807.2500 6.580980885030e-13 +1807.5000 5.687880580293e-13 +1807.7500 4.914446299651e-13 +1808.0000 4.244856391753e-13 +1808.2500 3.665352052524e-13 +1808.5000 3.163972285313e-13 +1808.7500 2.730322391854e-13 +1809.0000 2.355371820681e-13 +1809.2500 2.031277710175e-13 +1809.5000 1.751230912584e-13 +1809.7500 1.509321680511e-13 +1810.0000 1.300422544738e-13 +1810.2500 1.120086217642e-13 +1810.5000 9.644566247339e-14 +1810.7500 8.301914025011e-14 +1811.0000 7.143944076504e-14 +1811.2500 6.145569644077e-14 +1811.5000 5.285067358711e-14 +1811.7500 4.543632451322e-14 +1812.0000 3.904991943855e-14 +1812.2500 3.355068376093e-14 +1812.5000 2.881687564579e-14 +1812.7500 2.474324713833e-14 +1813.0000 2.123883921169e-14 +1813.2500 1.822506747539e-14 +1813.5000 1.563406078970e-14 +1813.7500 1.340721985956e-14 +1814.0000 1.149396710300e-14 +1814.2500 9.850662777284e-15 +1814.5000 8.439665568536e-15 +1814.7500 7.228518664345e-15 +1815.0000 6.189244785239e-15 +1815.2500 5.297735794472e-15 +1815.5000 4.533224375357e-15 +1815.7500 3.877826895904e-15 +1816.0000 3.316148001850e-15 +1816.2500 2.834938717673e-15 +1816.5000 2.422800914018e-15 +1816.7500 2.069931939413e-15 +1817.0000 1.767904031852e-15 +1817.2500 1.509473837363e-15 +1817.5000 1.288417981627e-15 +1817.7500 1.099391178859e-15 +1818.0000 9.378038299630e-16 +1818.2500 7.997164684425e-16 +1818.5000 6.817487655928e-16 +1818.7500 5.810011130777e-16 +1819.0000 4.949870670638e-16 +1819.2500 4.215751689733e-16 +1819.5000 3.589388581732e-16 +1819.7500 3.055133655527e-16 +1820.0000 2.599586274447e-16 +1820.2500 2.211273897462e-16 +1820.5000 1.880377850412e-16 +1820.7500 1.598497633245e-16 +1821.0000 1.358448415670e-16 +1821.2500 1.154087106021e-16 +1821.5000 9.801630115632e-17 +1821.7500 8.321896561598e-17 +1822.0000 7.063347946095e-17 +1822.2500 5.993260719495e-17 +1822.5000 5.083701292975e-17 +1822.7500 4.310832628054e-17 +1823.0000 3.654320055528e-17 +1823.2500 3.096822293447e-17 +1823.5000 2.623555592808e-17 +1823.7500 2.221920628706e-17 +1824.0000 1.881183210497e-17 +1824.2500 1.592201138834e-17 +1824.5000 1.347190617757e-17 +1824.7500 1.139526560157e-17 +1825.0000 9.635719255305e-18 +1825.2500 8.145319176997e-18 +1825.5000 6.883294626348e-18 +1825.7500 5.814988958568e-18 +1826.0000 4.910952266969e-18 +1826.2500 4.146167228298e-18 +1826.5000 3.499388815655e-18 +1826.7500 2.952581317642e-18 +1827.0000 2.490438483124e-18 +1827.2500 2.099974653644e-18 +1827.5000 1.770176497494e-18 +1827.7500 1.491706461574e-18 +1828.0000 1.256650344661e-18 +1828.2500 1.058302498809e-18 +1828.5000 8.909831103983e-19 +1828.7500 7.498828213501e-19 +1829.0000 6.309306433744e-19 +1829.2500 5.306817105657e-19 +1829.5000 4.462219223569e-19 +1829.7500 3.750869620878e-19 +1830.0000 3.151935467501e-19 +1830.2500 2.647810798664e-19 +1830.5000 2.223621497116e-19 +1830.7500 1.866805458259e-19 +1831.0000 1.566756637244e-19 +1831.2500 1.314523357560e-19 +1831.5000 1.102552694022e-19 +1831.7500 9.244739652382e-20 +1832.0000 7.749154123908e-20 +1832.2500 6.493490288142e-20 +1832.5000 5.439592609069e-20 +1832.7500 4.555319447181e-20 +1833.0000 3.813603905215e-20 +1833.2500 3.191659939733e-20 +1833.5000 2.670311490674e-20 +1833.7500 2.233425753523e-20 +1834.0000 1.867434585438e-20 +1834.2500 1.560930472581e-20 +1834.5000 1.304325555077e-20 +1834.7500 1.089563963003e-20 +1835.0000 9.098792082959e-21 +1835.2500 7.595896430315e-21 +1835.5000 6.339260680859e-21 +1835.7500 5.288864865704e-21 +1836.0000 4.411137681135e-21 +1836.2500 3.677926440165e-21 +1836.5000 3.065630072656e-21 +1836.7500 2.554469604886e-21 +1837.0000 2.127874520550e-21 +1837.2500 1.771966765717e-21 +1837.5000 1.475127003072e-21 +1837.7500 1.227630124876e-21 +1838.0000 1.021339066406e-21 +1838.2500 8.494476791559e-22 +1838.5000 7.062648739860e-22 +1838.7500 5.870334697940e-22 +1839.0000 4.877782176748e-22 +1839.2500 4.051783435763e-22 +1839.5000 3.364606889520e-22 +1839.7500 2.793101500489e-22 +1840.0000 2.317946401319e-22 +1840.2500 1.923022402814e-22 +1840.5000 1.594885762191e-22 +1840.7500 1.322327717698e-22 +1841.0000 1.096005932176e-22 +1841.2500 9.081362070936e-23 +1841.5000 7.522346955281e-23 +1841.7500 6.229024127677e-23 +1842.0000 5.156451634112e-23 +1842.2500 4.267231134534e-23 +1842.5000 3.530251681554e-23 +1842.7500 2.919640995642e-23 +1843.0000 2.413890250407e-23 +1843.2500 1.995123900188e-23 +1843.5000 1.648490712796e-23 +1843.7500 1.361656054209e-23 +1844.0000 1.124378728834e-23 +1844.2500 9.281584087829e-24 +1844.5000 7.659419730710e-24 +1844.7500 6.318789936961e-24 +1845.0000 5.211182100293e-24 +1845.2500 4.296381759854e-24 +1845.5000 3.541063883171e-24 +1845.7500 2.917621445043e-24 +1846.0000 2.403191648799e-24 +1846.2500 1.978846708299e-24 +1846.5000 1.628921601047e-24 +1846.7500 1.340455790723e-24 +1847.0000 1.102729748801e-24 +1847.2500 9.068803034926e-25 +1847.5000 7.455815135112e-25 +1847.7500 6.127799910740e-25 +1848.0000 5.034754557045e-25 +1848.2500 4.135388487299e-25 +1848.5000 3.395616287502e-25 +1848.7500 2.787309434247e-25 +1849.0000 2.287262682989e-25 +1849.2500 1.876338488519e-25 +1849.5000 1.538759023980e-25 +1849.7500 1.261520526839e-25 +1850.0000 1.033908993861e-25 +1850.2500 8.470998169703e-26 +1850.5000 6.938269190846e-26 +1850.7500 5.681094144350e-26 +1851.0000 4.650258657045e-26 +1851.2500 3.805279106790e-26 +1851.5000 3.112864425221e-26 +1851.7500 2.545646989335e-26 +1852.0000 2.081135869241e-26 +1852.2500 1.700853755052e-26 +1852.5000 1.389625563536e-26 +1852.7500 1.134992258713e-26 +1853.0000 9.267280044738e-27 +1853.2500 7.564425632861e-27 +1853.5000 6.172539974782e-27 +1853.7500 5.035193301170e-27 +1854.0000 4.106129738534e-27 +1854.2500 3.347445152764e-27 +1854.5000 2.728089131967e-27 +1854.7500 2.222633848818e-27 +1855.0000 1.810262585543e-27 +1855.2500 1.473938999056e-27 +1855.5000 1.199725051694e-27 +1855.7500 9.762211849244e-28 +1856.0000 7.941069765684e-28 +1856.2500 6.457643681938e-28 +1856.5000 5.249687205504e-28 +1856.7500 4.266355686989e-28 +1857.0000 3.466131021738e-28 +1857.2500 2.815121694677e-28 +1857.5000 2.285670668205e-28 +1857.7500 1.855215736432e-28 +1858.0000 1.505356862756e-28 +1858.2500 1.221093156136e-28 +1858.5000 9.901988337579e-29 +1858.7500 8.027130191111e-29 +1859.0000 6.505227452850e-29 +1859.2500 5.270222470929e-29 +1859.5000 4.268346754509e-29 +1859.7500 3.455848711713e-29 +1860.0000 2.797138900616e-29 +1860.2500 2.263276569180e-29 +1860.5000 1.830735084752e-29 +1860.7500 1.480395187974e-29 +1861.0000 1.196724295212e-29 +1861.2500 9.671076843221e-30 +1861.5000 7.813036320051e-30 +1861.7500 6.309996746374e-30 +1862.0000 5.094513417696e-30 +1862.2500 4.111881293704e-30 +1862.5000 3.317742755495e-30 +1862.7500 2.676141874103e-30 +1863.0000 2.157942361851e-30 +1863.2500 1.739541646140e-30 +1863.5000 1.401825977057e-30 +1863.7500 1.129321664423e-30 +1864.0000 9.095058534851e-31 +1864.2500 7.322470326145e-31 +1864.5000 5.893510007306e-31 +1864.7500 4.741925354367e-31 +1865.0000 3.814166821914e-31 +1865.2500 3.066965833516e-31 +1865.5000 2.465372087809e-31 +1865.7500 1.981163392224e-31 +1866.0000 1.591557733881e-31 +1866.2500 1.278170479986e-31 +1866.5000 1.026170325771e-31 +1866.7500 8.235963315684e-32 +1867.0000 6.608054835598e-32 +1867.2500 5.300259778119e-32 +1867.5000 4.249961115725e-32 +1867.7500 3.406724706926e-32 +1868.0000 2.729941916047e-32 +1868.2500 2.186925841594e-32 +1868.5000 1.751374366475e-32 +1868.7500 1.402129751250e-32 +1869.0000 1.122177878136e-32 +1869.2500 8.978411053268e-33 +1869.5000 7.181274853134e-33 +1869.7500 5.742062251578e-33 +1870.0000 4.589850362290e-33 +1870.2500 3.667696918325e-33 +1870.5000 2.929898913881e-33 +1870.7500 2.339785881903e-33 +1871.0000 1.867944113255e-33 +1871.2500 1.490788122045e-33 +1871.5000 1.189411825656e-33 +1871.7500 9.486649680616e-34 +1872.0000 7.564108637853e-34 +1872.2500 6.029300573558e-34 +1872.5000 4.804413682542e-34 +1872.7500 3.827173389591e-34 +1873.0000 3.047755786489e-34 +1873.2500 2.426311036262e-34 +1873.5000 1.930976843795e-34 +1873.7500 1.536285532961e-34 +1874.0000 1.221887153890e-34 +1874.2500 9.715262512422e-35 +1874.5000 7.722221668903e-35 +1874.7500 6.136126030369e-35 +1875.0000 4.874280984098e-35 +1875.2500 3.870714451961e-35 +1875.5000 3.072811998232e-35 +1875.7500 2.438625601405e-35 +1876.0000 1.934721913670e-35 +1876.2500 1.534462415970e-35 +1876.5000 1.216629221855e-35 +1876.7500 9.643274165677e-36 +1877.0000 7.641085654928e-36 +1877.2500 6.052710536859e-36 +1877.5000 4.793017609404e-36 +1877.7500 3.794306652837e-36 +1878.0000 3.002756481021e-36 +1878.2500 2.375593244959e-36 +1878.5000 1.878833665229e-36 +1878.7500 1.485487042643e-36 +1879.0000 1.174123243321e-36 +1879.2500 9.277325325450e-37 +1879.5000 7.328180699680e-37 +1879.7500 5.786738220160e-37 +1880.0000 4.568101927962e-37 +1880.2500 3.604973015619e-37 +1880.5000 2.844019263524e-37 +1880.7500 2.242989973003e-37 +1881.0000 1.768424054079e-37 +1881.2500 1.393829904161e-37 +1881.5000 1.098240424319e-37 +1881.7500 8.650662241062e-38 +1882.0000 6.811857731202e-38 +1882.2500 5.362237743630e-38 +1882.5000 4.219790057189e-38 +1882.7500 3.319708165874e-38 +1883.0000 2.610797883513e-38 +1883.2500 2.052630983775e-38 +1883.5000 1.613291298230e-38 +1883.7500 1.267590528491e-38 +1884.0000 9.956563378151e-39 +1884.2500 7.818154033590e-39 +1884.5000 6.137100930579e-39 +1884.7500 4.816001258972e-39 +1885.0000 3.778106542056e-39 +1885.2500 2.962962075778e-39 +1885.5000 2.322962868004e-39 +1885.7500 1.820634322251e-39 +1886.0000 1.426485845372e-39 +1886.2500 1.117317215875e-39 +1886.5000 8.748826366506e-40 +1886.7500 6.848372698268e-40 +1887.0000 5.359067905220e-40 +1887.2500 4.192329565313e-40 +1887.5000 3.278580523623e-40 +1887.7500 2.563188679847e-40 +1888.0000 2.003270432701e-40 +1888.2500 1.565174878710e-40 +1888.5000 1.222504424116e-40 +1888.7500 9.545579370657e-41 +1889.0000 7.451066333316e-41 +1889.2500 5.814318917929e-41 +1889.5000 4.535691959781e-41 +1889.7500 3.537142344962e-41 +1890.0000 2.757565303222e-41 +1890.2500 2.149133319904e-41 +1890.5000 1.674423042657e-41 +1890.7500 1.304161302045e-41 +1891.0000 1.015457402346e-41 +1891.2500 7.904172199911e-42 +1891.5000 6.150569914719e-42 +1891.7500 4.784522584327e-42 +1892.0000 3.720712739192e-42 +1892.2500 2.892530563353e-42 +1892.5000 2.247988342728e-42 +1892.7500 1.746523509953e-42 +1893.0000 1.356497820371e-42 +1893.2500 1.053241705050e-42 +1893.5000 8.175254429906e-43 +1893.7500 6.343643825172e-43 +1894.0000 4.920855212828e-43 +1894.2500 3.815985062373e-43 +1894.5000 2.958264678239e-43 +1894.7500 2.292617869358e-43 +1895.0000 1.776194827986e-43 +1895.2500 1.375668560767e-43 +1895.5000 1.065126784897e-43 +1895.7500 8.244286639461e-44 +1896.0000 6.379242959018e-44 +1896.2500 4.934571951423e-44 +1896.5000 3.815874754090e-44 +1896.7500 2.949870973981e-44 +1897.0000 2.279692195165e-44 +1897.2500 1.761220318735e-44 +1897.5000 1.360239696541e-44 +1897.7500 1.050222904508e-44 +1898.0000 8.106097243462e-45 +1898.2500 6.254699020821e-45 +1898.5000 4.824644361248e-45 +1898.7500 3.720390085704e-45 +1899.0000 2.867978781965e-45 +1899.2500 2.210180142137e-45 +1899.5000 1.702721791326e-45 +1899.7500 1.311366239219e-45 +1900.0000 1.009644737995e-45 +1900.2500 7.771009800498e-46 +1900.5000 5.979303665988e-46 +1900.7500 4.599260903100e-46 +1901.0000 3.536631135258e-46 +1901.2500 2.718665452135e-46 +1901.5000 2.089229039468e-46 +1901.7500 1.605020641532e-46 +1902.0000 1.232649129583e-46 +1902.2500 9.463735802383e-47 +1902.5000 7.263568305367e-47 +1902.7500 5.573162742897e-47 +1903.0000 4.274818777110e-47 +1903.2500 3.277917165438e-47 +1903.5000 2.512710899942e-47 +1903.7500 1.925534728340e-47 +1904.0000 1.475110216581e-47 +1904.2500 1.129696723129e-47 +1904.5000 8.648953258729e-48 +1904.7500 6.619565961393e-48 +1905.0000 5.064770385153e-48 +1905.2500 3.873952497466e-48 +1905.5000 2.962191313369e-48 +1905.7500 2.264311644427e-48 +1906.0000 1.730308649975e-48 +1906.2500 1.321828893436e-48 +1906.5000 1.009464813674e-48 +1906.7500 7.706752525634e-49 +1907.0000 5.881876807504e-49 +1907.2500 4.487709311330e-49 +1907.5000 3.422928242214e-49 +1907.7500 2.609967830807e-49 +1908.0000 1.989467263050e-49 +1908.2500 1.516012292772e-49 +1908.5000 1.154869552302e-49 +1908.7500 8.794829472408e-50 +1909.0000 6.695549077432e-50 +1909.2500 5.095763401066e-50 +1909.5000 3.877007095427e-50 +1909.7500 2.948819700638e-50 +1910.0000 2.242147223863e-50 +1910.2500 1.704293216123e-50 +1910.5000 1.295056713997e-50 +1910.7500 9.837789895984e-51 +1911.0000 7.470859716619e-51 +1911.2500 5.671630155255e-51 +1911.5000 4.304369122075e-51 +1911.7500 3.265693295165e-51 +1912.0000 2.476883413384e-51 +1912.2500 1.878019157458e-51 +1912.5000 1.423504204997e-51 +1912.7500 1.078653044467e-51 +1913.0000 8.170884579669e-52 +1913.2500 6.187577633780e-52 +1913.5000 4.684211857181e-52 +1913.7500 3.545003597087e-52 +1914.0000 2.682014455512e-52 +1914.2500 2.028475802167e-52 +1914.5000 1.533708524303e-52 +1914.7500 1.159258034051e-52 +1915.0000 8.759547668864e-53 +1915.2500 6.616792709875e-53 +1915.5000 4.996635408533e-53 +1915.7500 3.772003405563e-53 +1916.0000 2.846628374950e-53 +1916.2500 2.147601778316e-53 +1916.5000 1.619724005264e-53 +1916.7500 1.221216224636e-53 +1917.0000 9.204673650871e-54 +1917.2500 6.935671387807e-54 +1917.5000 5.224357692264e-54 +1917.7500 3.934065464715e-54 +1918.0000 2.961519142725e-54 +1918.2500 2.228700902016e-54 +1918.5000 1.676692093716e-54 +1918.7500 1.261011731869e-54 +1919.0000 9.480892463478e-55 +1919.2500 7.125963560333e-55 +1919.5000 5.354294523326e-55 +1919.7500 4.021843797366e-55 +1920.0000 3.020038119137e-55 +1920.2500 2.267064796340e-55 +1920.5000 1.701295387484e-55 +1920.7500 1.276320659024e-55 +1921.0000 9.572032319646e-56 +1921.2500 7.176501776082e-56 +1921.5000 5.378804010135e-56 +1921.7500 4.030165920733e-56 +1922.0000 3.018731006348e-56 +1922.2500 2.260425447115e-56 +1922.5000 1.692077470528e-56 +1922.7500 1.266235779986e-56 +1923.0000 9.472687326013e-57 +1923.2500 7.084286337986e-57 +1923.5000 5.296430692725e-57 +1923.7500 3.958537502418e-57 +1924.0000 2.957675451816e-57 +1924.2500 2.209177202125e-57 +1924.5000 1.649585657108e-57 +1924.7500 1.231355554621e-57 +1925.0000 9.188748371353e-58 +1925.2500 6.854780091330e-58 +1925.5000 5.112048642869e-58 +1925.7500 3.811190976146e-58 +1926.0000 2.840473411451e-58 +1926.2500 2.116337991244e-58 +1926.5000 1.576317187753e-58 +1926.7500 1.173725329100e-58 +1927.0000 8.736824773570e-59 +1927.2500 6.501372610395e-59 +1927.5000 4.836383958261e-59 +1927.7500 3.596671467618e-59 +1928.0000 2.673899317113e-59 +1928.2500 1.987255071389e-59 +1928.5000 1.476476233307e-59 +1928.7500 1.096638756108e-59 +1929.0000 8.142635657233e-60 +1929.2500 6.044086877130e-60 +1929.5000 4.484981714273e-60 +1929.7500 3.327016373470e-60 +1930.0000 2.467251846353e-60 +1930.2500 1.829095200106e-60 +1930.5000 1.355574593123e-60 +1930.7500 1.004326249725e-60 +1931.0000 7.438587743485e-61 +1931.2500 5.507702193439e-61 +1931.5000 4.076755744312e-61 +1931.7500 3.016638136240e-61 +1932.0000 2.231495551087e-61 +1932.2500 1.650186829326e-61 +1932.5000 1.219928818310e-61 +1932.7500 9.015714446623e-62 +1933.0000 6.660856663192e-62 +1933.2500 4.919537905202e-62 +1933.5000 3.632309254888e-62 +1933.7500 2.681054277744e-62 +1934.0000 1.978302402313e-62 +1934.2500 1.459298154995e-62 +1934.5000 1.076117443891e-62 +1934.7500 7.933039054688e-63 +1935.0000 5.846336334056e-63 +1935.2500 4.307172676693e-63 +1935.5000 3.172232813040e-63 +1935.7500 2.335619572278e-63 +1936.0000 1.719109110059e-63 +1936.2500 1.264937479160e-63 +1936.5000 9.304626879477e-64 +1936.7500 6.842158762284e-64 +1937.0000 5.029810404007e-64 +1937.2500 3.696360882420e-64 +1937.5000 2.715572482731e-64 +1937.7500 1.994402068456e-64 +1938.0000 1.464294110273e-64 +1938.2500 1.074751842083e-64 +1938.5000 7.885919940908e-65 +1938.7500 5.784433229111e-65 +1939.0000 4.241637439906e-65 +1939.2500 3.109356785285e-65 +1939.5000 2.278619742027e-65 +1939.7500 1.669311695939e-65 +1940.0000 1.222551885199e-65 +1940.2500 8.950791609287e-66 +1940.5000 6.551185177050e-66 +1940.7500 4.793388038591e-66 +1941.0000 3.506142661481e-66 +1941.2500 2.563780626571e-66 +1941.5000 1.874115802763e-66 +1941.7500 1.369544874616e-66 +1942.0000 1.000507605125e-66 +1942.2500 7.306826654598e-67 +1942.5000 5.334595540047e-67 +1942.7500 3.893484711403e-67 +1943.0000 2.840793939678e-67 +1943.2500 2.072074064822e-67 +1943.5000 1.510897838757e-67 +1943.7500 1.101359768225e-67 +1944.0000 8.025786434808e-68 +1944.2500 5.846692766509e-68 +1944.5000 4.257917377928e-68 +1944.7500 3.099905609008e-68 +1945.0000 2.256129337219e-68 +1945.2500 1.641511005244e-68 +1945.5000 1.193954804790e-68 +1945.7500 8.681529782031e-69 +1946.0000 6.310574733145e-69 +1946.2500 4.585702244706e-69 +1946.5000 3.331248822003e-69 +1946.7500 2.419204471432e-69 +1947.0000 1.756314808948e-69 +1947.2500 1.274666091524e-69 +1947.5000 9.248148305583e-70 +1947.7500 6.707758545482e-70 +1948.0000 4.863672681520e-70 +1948.2500 3.525457969687e-70 +1948.5000 2.554647752759e-70 +1948.7500 1.850592481898e-70 +1949.0000 1.340154422913e-70 +1949.2500 9.702042606174e-71 +1949.5000 7.021595288514e-71 +1949.7500 5.080105053993e-71 +1950.0000 3.674293764589e-71 +1950.2500 2.656680580097e-71 +1950.5000 1.920300033532e-71 +1950.7500 1.387596260676e-71 +1951.0000 1.002354709279e-71 +1951.2500 7.238424225442e-72 +1951.5000 5.225536825464e-72 +1951.7500 3.771221801706e-72 +1952.0000 2.720805658121e-72 +1952.2500 1.962353531558e-72 +1952.5000 1.414885394160e-72 +1952.7500 1.019834168614e-72 +1953.0000 7.348558174758e-73 +1953.2500 5.293452223628e-73 +1953.5000 3.811888087001e-73 +1953.7500 2.744135604745e-73 +1954.0000 1.974855294935e-73 +1954.2500 1.420787971594e-73 +1954.5000 1.021850937352e-73 +1954.7500 7.347001128769e-74 +1955.0000 5.280766302701e-74 +1955.2500 3.794443350104e-74 +1955.5000 2.725608539072e-74 +1955.7500 1.957235895067e-74 +1956.0000 1.405035009507e-74 +1956.2500 1.008313083641e-74 +1956.5000 7.233824069364e-75 +1956.7500 5.188057311185e-75 +1957.0000 3.719682492886e-75 +1957.2500 2.666068227841e-75 +1957.5000 1.910297164123e-75 +1957.7500 1.368342718806e-75 +1958.0000 9.798353939987e-76 +1958.2500 7.014159602182e-76 +1958.5000 5.019522984903e-76 +1958.7500 3.590984526475e-76 +1959.0000 2.568200364288e-76 +1959.2500 1.836151685684e-76 +1959.5000 1.312358508022e-76 +1959.7500 9.376930768149e-77 +1960.0000 6.697815974191e-77 +1960.2500 4.782665366989e-77 +1960.5000 3.414059318363e-77 +1960.7500 2.436331682533e-77 +1961.0000 1.738065128270e-77 +1961.2500 1.239538334313e-77 +1961.5000 8.837270767284e-78 +1961.7500 6.298550907440e-78 +1962.0000 4.487737118735e-78 +1962.2500 3.196527589185e-78 +1962.5000 2.276112837736e-78 +1962.7500 1.620217812307e-78 +1963.0000 1.152968121098e-78 +1963.2500 8.202107924854e-79 +1963.5000 5.833080131213e-79 +1963.7500 4.147006236998e-79 +1964.0000 2.947377185574e-79 +1964.2500 2.094117419720e-79 +1964.5000 1.487409751358e-79 +1964.7500 1.056147322230e-79 +1965.0000 7.496916316811e-80 +1965.2500 5.319920066970e-80 +1965.5000 3.773912562296e-80 +1965.7500 2.676349604688e-80 +1966.0000 1.897396680043e-80 +1966.2500 1.344738107169e-80 +1966.5000 9.527557331551e-81 +1966.7500 6.748227455600e-81 +1967.0000 4.778175940309e-81 +1967.2500 3.382196570097e-81 +1967.5000 2.393314849300e-81 +1967.7500 1.693031774654e-81 +1968.0000 1.197277071311e-81 +1968.2500 8.464250445904e-82 +1968.5000 5.982003015017e-82 +1968.7500 4.226384773807e-82 +1969.0000 2.985078259899e-82 +1969.2500 2.107689795936e-82 +1969.5000 1.487722555252e-82 +1969.7500 1.049787711519e-82 +1970.0000 7.405345151366e-83 +1970.2500 5.222198893785e-83 +1970.5000 3.681508391582e-83 +1970.7500 2.594552506441e-83 +1971.0000 1.827946228680e-83 +1971.2500 1.287444900892e-83 +1971.5000 9.064798813653e-84 +1971.7500 6.380459713767e-84 +1972.0000 4.489624869239e-84 +1972.2500 3.158147590610e-84 +1972.5000 2.220849210985e-84 +1972.7500 1.561241206678e-84 +1973.0000 1.097198540866e-84 +1973.2500 7.708408478184e-85 +1973.5000 5.413878467957e-85 +1973.7500 3.801163648724e-85 +1974.0000 2.668018983289e-85 +1974.2500 1.872084925484e-85 +1974.5000 1.313186653437e-85 +1974.7500 9.208558618223e-86 +1975.0000 6.455369958911e-86 +1975.2500 4.523919826129e-86 +1975.5000 3.169370019745e-86 +1975.7500 2.219705071089e-86 +1976.0000 1.554110468854e-86 +1976.2500 1.087759238930e-86 +1976.5000 7.611109294034e-87 +1976.7500 5.323869716174e-87 +1977.0000 3.722812493225e-87 +1977.2500 2.602430794420e-87 +1977.5000 1.818659932736e-87 +1977.7500 1.270539265935e-87 +1978.0000 8.873377681361e-88 +1978.2500 6.195182799210e-88 +1978.5000 4.323978909347e-88 +1978.7500 3.017013763612e-88 +1979.0000 2.104433947005e-88 +1979.2500 1.467430661479e-88 +1979.5000 1.022925871212e-88 +1979.7500 7.128448543592e-89 +1980.0000 4.966039371069e-89 +1980.2500 3.458514339390e-89 +1980.5000 2.407871386696e-89 +1980.7500 1.675873656351e-89 +1981.0000 1.166040259470e-89 +1981.2500 8.110546146164e-90 +1981.5000 5.639634216485e-90 +1981.7500 3.920270702482e-90 +1982.0000 2.724240593995e-90 +1982.2500 1.892514197293e-90 +1982.5000 1.314307890644e-90 +1982.7500 9.124716232416e-91 +1983.0000 6.332947712645e-91 +1983.2500 4.393966285869e-91 +1983.5000 3.047697236908e-91 +1983.7500 2.113251594111e-91 +1984.0000 1.464855790592e-91 +1984.2500 1.015085962644e-91 +1984.5000 7.031938356202e-92 +1984.7500 4.869804994821e-92 +1985.0000 3.371416202305e-92 +1985.2500 2.333336912143e-92 +1985.5000 1.614383894090e-92 +1985.7500 1.116607302886e-92 +1986.0000 7.720730525040e-93 +1986.2500 5.336796076079e-93 +1986.5000 3.687797834770e-93 +1986.7500 2.547521656493e-93 +1987.0000 1.759271824144e-93 +1987.2500 1.214541315194e-93 +1987.5000 8.382159516398e-94 +1987.7500 5.783141690865e-94 +1988.0000 3.988742746621e-94 +1988.2500 2.750252099850e-94 +1988.5000 1.895715955575e-94 +1988.7500 1.306286109715e-94 +1989.0000 8.998448496013e-95 +1989.2500 6.196711035444e-95 +1989.5000 4.265983162534e-95 +1989.7500 2.935900360872e-95 +1990.0000 2.019890239678e-95 +1990.2500 1.389243942835e-95 +1990.5000 9.551982897039e-96 +1990.7500 6.565576159064e-96 +1991.0000 4.511452961926e-96 +1991.2500 3.099019484503e-96 +1991.5000 2.128121713713e-96 +1991.7500 1.460941756013e-96 +1992.0000 1.002613675848e-96 +1992.2500 6.878577412538e-97 +1992.5000 4.717673894364e-97 +1992.7500 3.234606748767e-97 +1993.0000 2.217069678074e-97 +1993.2500 1.519152873044e-97 +1993.5000 1.040609770507e-97 +1993.7500 7.125881602080e-98 +1994.0000 4.878132450873e-98 +1994.2500 3.338357608700e-98 +1994.5000 2.283896446545e-98 +1994.7500 1.562011559949e-98 +1995.0000 1.067963380603e-98 +1995.2500 7.299494105377e-99 +1995.5000 4.987621012700e-99 +1995.7500 3.406892362444e-99 +1996.0000 2.326417533590e-99 +1996.2500 1.588112247451e-99 +1996.5000 1.083774705454e-99 +1996.7500 7.393687814159e-100 +1997.0000 5.042518391380e-100 +1997.2500 3.437938911247e-100 +1997.5000 2.343220202179e-100 +1997.7500 1.596586061558e-100 +1998.0000 1.087516480244e-100 +1998.2500 7.405316817765e-101 +1998.5000 5.040988688045e-101 +1998.7500 3.430457832412e-101 +1999.0000 2.333741400693e-101 +1999.2500 1.587148851017e-101 +1999.5000 1.079063171723e-101 +1999.7500 7.333990865161e-102 +2000.0000 4.983083240726e-102 +2000.2500 3.384700162322e-102 +2000.5000 2.298299091926e-102 +2000.7500 1.560117008819e-102 +2001.0000 1.058697971252e-102 +2001.2500 7.182097110575e-103 +2001.5000 4.870737763483e-103 +2001.7500 3.302193409080e-103 +2002.0000 2.238074542768e-103 +2002.2500 1.516389859011e-103 +2002.5000 1.027097041860e-103 +2002.7500 6.954667452639e-104 +2003.0000 4.707664899743e-104 +2003.2500 3.185656881823e-104 +2003.5000 2.155046950492e-104 +2003.7500 1.457399976442e-104 +2004.0000 9.852922415256e-105 +2004.2500 6.659101750000e-105 +2004.5000 4.499150508576e-105 +2004.7500 3.038852882985e-105 +2005.0000 2.051885451888e-105 +2005.2500 1.385035267320e-105 +2005.5000 9.346151890554e-106 +2005.7500 6.304768148360e-106 +2006.0000 4.251769274024e-106 +2006.2500 2.866385120755e-106 +2006.5000 1.931806732943e-106 +2006.7500 1.301538721015e-106 +2007.0000 8.766269007029e-107 +2007.2500 5.902510619164e-107 +2007.5000 3.973040970739e-107 +2007.7500 2.673459399642e-107 +2008.0000 1.798408827207e-107 +2008.2500 1.209393251827e-107 +2008.5000 8.130381781619e-108 +2008.7500 5.464099772444e-108 +2009.0000 3.671052413265e-108 +2009.2500 2.465623907762e-108 +2009.5000 1.655493053637e-108 +2009.7500 1.111199855108e-108 +2010.0000 7.456263929749e-109 +2010.2500 5.001665590487e-109 +2010.5000 3.354071480066e-109 +2010.7500 2.248507077910e-109 +2011.0000 1.506886309300e-109 +2011.2500 1.009557357673e-109 +2011.5000 6.761542659268e-110 +2011.7500 4.527149844370e-110 +2012.0000 3.030178619319e-110 +2012.2500 2.027570073733e-110 +2012.5000 1.356275131203e-110 +2012.7500 9.069513833104e-111 +2013.0000 6.062957158742e-111 +2013.2500 4.051811888896e-111 +2013.5000 2.706938146883e-111 +2013.7500 1.807888628963e-111 +2014.0000 1.207061219304e-111 +2014.2500 8.056588904054e-112 +2014.5000 5.375729329629e-112 +2014.7500 3.585814891367e-112 +2015.0000 2.391126883135e-112 +2015.2500 1.593975570024e-112 +2015.5000 1.062245702176e-112 +2015.7500 7.076729366134e-113 +2016.0000 4.713076346951e-113 +2016.2500 3.137911173029e-113 +2016.5000 2.088531833329e-113 +2016.7500 1.389651292599e-113 +2017.0000 9.243466152397e-114 +2017.2500 6.146503847126e-114 +2017.5000 4.085881277416e-114 +2017.7500 2.715236179011e-114 +2018.0000 1.803822347923e-114 +2018.2500 1.197965187029e-114 +2018.5000 7.953511529943e-115 +2018.7500 5.278832907422e-115 +2019.0000 3.502524635954e-115 +2019.2500 2.323211586701e-115 +2019.5000 1.540496139465e-115 +2019.7500 1.021166940859e-115 +2020.0000 6.767015352772e-116 +2020.2500 4.482928993630e-116 +2020.5000 2.968867675321e-116 +2020.7500 1.965550042539e-116 +2021.0000 1.300893226742e-116 +2021.2500 8.607231474133e-117 +2021.5000 5.693110269032e-117 +2021.7500 3.764436639121e-117 +2022.0000 2.488368361075e-117 +2022.2500 1.644347615135e-117 +2022.5000 1.086267729282e-117 +2022.7500 7.173719738073e-118 +2023.0000 4.736049322972e-118 +2023.2500 3.125736114241e-118 +2023.5000 2.062304015670e-118 +2023.7500 1.360245654855e-118 +2024.0000 8.969046799149e-119 +2024.2500 5.912069297054e-119 +2024.5000 3.895803331846e-119 +2024.7500 2.566367320467e-119 +2025.0000 1.690070772032e-119 +2025.2500 1.112641485557e-119 +2025.5000 7.322677194010e-120 +2025.7500 4.817800509067e-120 +2026.0000 3.168779500050e-120 +2026.2500 2.083528806908e-120 +2026.5000 1.369529154601e-120 +2026.7500 8.999271152384e-121 +2027.0000 5.911635875423e-121 +2027.2500 3.882149872323e-121 +2027.5000 2.548597202129e-121 +2027.7500 1.672608846444e-121 +2028.0000 1.097366908781e-121 +2028.2500 7.197366419082e-122 +2028.5000 4.719105099144e-122 +2028.7500 3.093214012939e-122 +2029.0000 2.026863823646e-122 +2029.2500 1.327710704044e-122 +2029.5000 8.694540300289e-123 +2029.7500 5.691858252460e-123 +2030.0000 3.724995996167e-123 +2030.2500 2.437035342443e-123 +2030.5000 1.593903879292e-123 +2030.7500 1.042141548272e-123 +2031.0000 6.811701008605e-124 +2031.2500 4.450909111227e-124 +2031.5000 2.907409184376e-124 +2031.7500 1.898575503481e-124 +2032.0000 1.239406789978e-124 +2032.2500 8.088428523674e-125 +2032.5000 5.276898199954e-125 +2032.7500 3.441577572657e-125 +2033.0000 2.243885503504e-125 +2033.2500 1.462541188735e-125 +2033.5000 9.529712563263e-126 +2033.7500 6.207486452509e-126 +2034.0000 4.042183660435e-126 +2034.2500 2.631361929204e-126 +2034.5000 1.712416543011e-126 +2034.7500 1.114044465589e-126 +2035.0000 7.245359166593e-127 +2035.2500 4.710658225744e-127 +2035.5000 3.061734694453e-127 +2035.7500 1.989380231861e-127 +2036.0000 1.292207697414e-127 +2036.2500 8.390949981892e-128 +2036.5000 5.446960474235e-128 +2036.7500 3.534773564337e-128 +2037.0000 2.293154182080e-128 +2037.2500 1.487199382101e-128 +2037.5000 9.642050899842e-129 +2037.7500 6.249336730150e-129 +2038.0000 4.049139279456e-129 +2038.2500 2.622743310190e-129 +2038.5000 1.698295048125e-129 +2038.7500 1.099346964570e-129 +2039.0000 7.114112077746e-130 +2039.2500 4.602257426152e-130 +2039.5000 2.976359555148e-130 +2039.7500 1.924261827444e-130 +2040.0000 1.243675897648e-130 +2040.2500 8.035530502189e-131 +2040.5000 5.190224855139e-131 +2040.7500 3.351367665663e-131 +2041.0000 2.163327446654e-131 +2041.2500 1.396004211164e-131 +2041.5000 9.005658607416e-132 +2041.7500 5.807758022855e-132 +2042.0000 3.744258551999e-132 +2042.2500 2.413167292526e-132 +2042.5000 1.554795637124e-132 +2042.7500 1.001436644910e-132 +2043.0000 6.448191519488e-133 +2043.2500 4.150655223318e-133 +2043.5000 2.670912587050e-133 +2043.7500 1.718173326347e-133 +2044.0000 1.104939637651e-133 +2044.2500 7.103533241482e-134 +2044.5000 4.565355106281e-134 +2044.7500 2.933181880722e-134 +2045.0000 1.883942772027e-134 +2045.2500 1.209652707615e-134 +2045.5000 7.764580206752e-135 +2045.7500 4.982410912702e-135 +2046.0000 3.196136999480e-135 +2046.2500 2.049630212853e-135 +2046.5000 1.313983539418e-135 +2046.7500 8.421095998695e-136 +2047.0000 5.395250264689e-136 +2047.2500 3.455563310005e-136 +2047.5000 2.212536258745e-136 +2047.7500 1.416205321613e-136 +2048.0000 9.062047418383e-137 +2048.2500 5.796832101228e-137 +2048.5000 3.706972771164e-137 +2048.7500 2.369803591417e-137 +2049.0000 1.514501101660e-137 +2049.2500 9.675894330331e-138 +2049.5000 6.179835616768e-138 +2049.7500 3.945726805333e-138 +2050.0000 2.518496689897e-138 +2050.2500 1.607015403381e-138 +2050.5000 1.025092314936e-138 +2050.7500 6.536875276869e-139 +2051.0000 4.167174652802e-139 +2051.2500 2.655690682370e-139 +2051.5000 1.691911178587e-139 +2051.7500 1.077561119565e-139 +2052.0000 6.860733483914e-140 +2052.2500 4.366801670089e-140 +2052.5000 2.778565696013e-140 +2052.7500 1.767429723983e-140 +2053.0000 1.123900649989e-140 +2053.2500 7.144600887786e-141 +2053.5000 4.540381098220e-141 +2053.7500 2.884502527269e-141 +2054.0000 1.831950874878e-141 +2054.2500 1.163110580195e-141 +2054.5000 7.382313293233e-142 +2054.7500 4.684122245227e-142 +2055.0000 2.971175137837e-142 +2055.2500 1.884050619444e-142 +2055.5000 1.194321263711e-142 +2055.7500 7.568573714802e-143 +2056.0000 4.794807861113e-143 +2056.2500 3.036635432444e-143 +2056.5000 1.922553281787e-143 +2056.7500 1.216825765884e-143 +2057.0000 7.699148434730e-144 +2057.2500 4.869913766491e-144 +2057.5000 3.079386010434e-144 +2057.7500 1.946575606999e-144 +2058.0000 1.230106473983e-144 +2058.2500 7.771026939139e-145 +2058.5000 4.907704527647e-145 +2058.7500 3.098437099308e-145 +2059.0000 1.955560440809e-145 +2059.2500 1.233854886878e-145 +2059.5000 7.782537297767e-146 +2059.7500 4.907300115074e-146 +2060.0000 3.093344647869e-146 +2060.2500 1.949298210679e-146 +2060.5000 1.227983527859e-146 +2060.7500 7.733410812670e-147 +2061.0000 4.868709970260e-147 +2061.2500 3.064227531759e-147 +2061.5000 1.927935051874e-147 +2061.7500 1.212629338215e-147 +2062.0000 7.624792445249e-148 +2062.2500 4.792832639272e-148 +2062.5000 3.011762940502e-148 +2062.7500 1.891967138512e-148 +2063.0000 1.188148367758e-148 +2063.2500 7.459196456601e-149 +2063.5000 4.681420992980e-149 +2063.7500 2.937160196000e-149 +2064.0000 1.842221526693e-149 +2064.2500 1.155102049737e-149 +2064.5000 7.240409661058e-150 +2064.7500 4.537014913752e-150 +2065.0000 2.842114415939e-150 +2065.2500 1.779824542499e-150 +2065.5000 1.114235798942e-150 +2065.7500 6.973347491176e-151 +2066.0000 4.362845058085e-151 +2066.2500 2.728742501208e-151 +2066.5000 1.706159401996e-151 +2066.7500 1.066451072108e-151 +2067.0000 6.663870512670e-152 +2067.2500 4.162712786184e-152 +2067.5000 2.599504821979e-152 +2067.7500 1.622815289207e-152 +2068.0000 1.012772352351e-152 +2068.2500 6.318570948190e-153 +2068.5000 3.940852485555e-153 +2068.7500 2.457116644566e-153 +2069.0000 1.531530507029e-153 +2069.2500 9.543107439105e-154 +2069.5000 5.944540051058e-154 +2069.7500 3.701783238108e-154 +2070.0000 2.304453741345e-154 +2070.2500 1.434132532983e-154 +2070.5000 8.922259777447e-155 +2070.7500 5.549127747453e-155 +2071.0000 3.450157053587e-155 +2071.2500 2.144456741178e-155 +2071.5000 1.332477848342e-155 +2071.7500 8.276886290335e-156 +2072.0000 5.139705827267e-156 +2072.2500 3.190610716909e-156 +2072.5000 1.980038612502e-156 +2072.7500 1.228394270996e-156 +2073.0000 7.618442395573e-157 +2073.2500 4.723445153621e-157 +2073.5000 2.927627707023e-157 +2073.7500 1.813999250965e-157 +2074.0000 1.123628228025e-157 +2074.2500 6.957808344797e-158 +2074.5000 4.307115970535e-158 +2074.7500 2.665415703530e-158 +2075.0000 1.648950511269e-158 +2075.2500 1.019798982372e-158 +2075.5000 6.305010436961e-159 +2075.7500 3.896918547338e-159 +2076.0000 2.407803990314e-159 +2076.2500 1.487254235213e-159 +2076.5000 9.183613161344e-160 +2076.7500 5.668997065806e-160 +2077.0000 3.498349261812e-160 +2077.2500 2.158163692494e-160 +2077.5000 1.330974948611e-160 +2077.7500 8.205776116544e-161 +2078.0000 5.057474817205e-161 +2078.2500 3.116104957191e-161 +2078.5000 1.919352348701e-161 +2078.7500 1.181847994843e-161 +2079.0000 7.274997022247e-162 +2079.2500 4.476806259714e-162 +2079.5000 2.754026172592e-162 +2079.7500 1.693682925607e-162 +2080.0000 1.041263004508e-162 +2080.2500 6.399603253084e-163 +2080.5000 3.931967735924e-163 +2080.7500 2.415077787519e-163 +2081.0000 1.482916114376e-163 +2081.2500 9.102618230091e-164 +2081.5000 5.585735353931e-164 +2081.7500 3.426562560542e-164 +2082.0000 2.101363857197e-164 +2082.2500 1.288273680193e-164 +2082.5000 7.895493729412e-165 +2082.7500 4.837430458393e-165 +2083.0000 2.962882709404e-165 +2083.2500 1.814172031652e-165 +2083.5000 1.110469815215e-165 +2083.7500 6.795154439313e-166 +2084.0000 4.156771851187e-166 +2084.2500 2.542010429729e-166 +2084.5000 1.554041995514e-166 +2084.7500 9.497568977126e-167 +2085.0000 5.802650922366e-167 +2085.2500 3.544089791821e-167 +2085.5000 2.163950245300e-167 +2085.7500 1.320851849142e-167 +2086.0000 8.059817887890e-168 +2086.2500 4.916551950327e-168 +2086.5000 2.998198060503e-168 +2086.7500 1.827781546355e-168 +2087.0000 1.113916252855e-168 +2087.2500 6.786487851815e-169 +2087.5000 4.133347265831e-169 +2087.7500 2.516651013325e-169 +2088.0000 1.531822272855e-169 +2088.2500 9.320904260937e-170 +2088.5000 5.669855586696e-170 +2088.7500 3.447864823449e-170 +2089.0000 2.096007087087e-170 +2089.2500 1.273795017849e-170 +2089.5000 7.738746632402e-171 +2089.7500 4.700088041106e-171 +2090.0000 2.853682429219e-171 +2090.2500 1.732086481873e-171 +2090.5000 1.050988069952e-171 +2090.7500 6.375148173554e-172 +2091.0000 3.865868376147e-172 +2091.2500 2.343517096608e-172 +2091.5000 1.420212962110e-172 +2091.7500 8.604053476378e-173 +2092.0000 5.210951281295e-173 +2092.2500 3.154969808958e-173 +2092.5000 1.909579243976e-173 +2092.7500 1.155432146349e-173 +2093.0000 6.989007234862e-174 +2093.2500 4.226207503719e-174 +2093.5000 2.554761874921e-174 +2093.7500 1.543882765552e-174 +2094.0000 9.327011126392e-175 +2094.2500 5.632937771209e-175 +2094.5000 3.400883030201e-175 +2094.7500 2.052639678039e-175 +2095.0000 1.238505750022e-175 +2095.2500 7.470464697130e-176 +2095.5000 4.504654545522e-176 +2095.7500 2.715436477508e-176 +2096.0000 1.636372179126e-176 +2096.2500 9.857999905086e-177 +2096.5000 5.936901110391e-177 +2096.7500 3.574333762558e-177 +2097.0000 2.151268780734e-177 +2097.2500 1.294370269699e-177 +2097.5000 7.785502821075e-178 +2097.7500 4.681435958699e-178 +2098.0000 2.814075790361e-178 +2098.2500 1.691051274827e-178 +2098.5000 1.015879146361e-178 +2098.7500 6.100867563817e-179 +2099.0000 3.662734445227e-179 +2099.2500 2.198282743983e-179 +2099.5000 1.318942771029e-179 +2099.7500 7.911022796354e-180 +2100.0000 4.743551314448e-180 +2100.2500 2.843405852911e-180 +2100.5000 1.703877570686e-180 +2100.7500 1.020709606067e-180 +2101.0000 6.112660857629e-181 +2101.2500 3.659507848070e-181 +2101.5000 2.190177674905e-181 +2101.7500 1.310389171573e-181 +2102.0000 7.837643879530e-182 +2102.2500 4.686353448036e-182 +2102.5000 2.801230440319e-182 +2102.7500 1.673890007682e-182 +2103.0000 9.999292661271e-183 +2103.2500 5.971396720773e-183 +2103.5000 3.564895913334e-183 +2103.7500 2.127561220021e-183 +2104.0000 1.269350505446e-183 +2104.2500 7.570862137072e-184 +2104.5000 4.514123103957e-184 +2104.7500 2.690702870450e-184 +2105.0000 1.603327968852e-184 +2105.2500 9.550877571815e-185 +2105.5000 5.687592470006e-185 +2105.7500 3.385929771352e-185 +2106.0000 2.015077271107e-185 +2106.2500 1.198863521476e-185 +2106.5000 7.130370064983e-186 +2106.7500 4.239539418374e-186 +2107.0000 2.519936330681e-186 +2107.2500 1.497354876212e-186 +2107.5000 8.894554438174e-187 +2107.7500 5.281872783086e-187 +2108.0000 3.135566089494e-187 +2108.2500 1.860836706155e-187 +2108.5000 1.103989269990e-187 +2108.7500 6.547654026444e-188 +2109.0000 3.882137180047e-188 +2109.2500 2.301019582828e-188 +2109.5000 1.363433733173e-188 +2109.7500 8.076292470634e-189 +2110.0000 4.782492789197e-189 +2110.2500 2.831137047650e-189 +2110.5000 1.675451053309e-189 +2110.7500 9.912127501362e-190 +2111.0000 5.862276489444e-190 +2111.2500 3.466011494260e-190 +2111.5000 2.048603840222e-190 +2111.7500 1.210459461254e-190 +2112.0000 7.150012468651e-191 +2112.2500 4.222091412126e-191 +2112.5000 2.492371334783e-191 +2112.7500 1.470828872274e-191 +2113.0000 8.677124487681e-192 +2113.2500 5.117452177250e-192 +2113.5000 3.017144015071e-192 +2113.7500 1.778289938048e-192 +2114.0000 1.047787914298e-192 +2114.2500 6.171752211881e-193 +2114.5000 3.634191940541e-193 +2114.7500 2.139299173887e-193 +2115.0000 1.258923872457e-193 +2115.2500 7.406136249898e-194 +2115.5000 4.355602204213e-194 +2115.7500 2.560760742930e-194 +2116.0000 1.505060925669e-194 +2116.2500 8.843077703378e-195 +2116.5000 5.194181062398e-195 +2116.7500 3.049966090071e-195 +2117.0000 1.790347029960e-195 +2117.2500 1.050615278998e-195 +2117.5000 6.163316746661e-196 +2117.7500 3.614510959483e-196 +2118.0000 2.119087487382e-196 +2118.2500 1.241974020154e-196 +2118.5000 7.276799660915e-197 +2118.7500 4.262188064300e-197 +2119.0000 2.495681051620e-197 +2119.2500 1.460864170961e-197 +2119.5000 8.548597646389e-198 +2119.7500 5.000854268449e-198 +2120.0000 2.924541603148e-198 +2120.2500 1.709762123083e-198 +2120.5000 9.992585265574e-199 +2120.7500 5.838271894205e-199 +2121.0000 3.410005296514e-199 +2121.2500 1.991086250877e-199 +2121.5000 1.162222760591e-199 +2121.7500 6.781924678269e-200 +2122.0000 3.956223614305e-200 +2122.2500 2.307134867301e-200 +2122.5000 1.345022091086e-200 +2122.7500 7.838809948144e-201 +2123.0000 4.567043369851e-201 +2123.2500 2.660017044586e-201 +2123.5000 1.548809436824e-201 +2123.7500 9.015209753101e-202 +2124.0000 5.245875367335e-202 +2124.2500 3.051577358043e-202 +2124.5000 1.774577956210e-202 +2124.7500 1.031644492301e-202 +2125.0000 5.995554131593e-203 +2125.2500 3.483316009915e-203 +2125.5000 2.023115634575e-203 +2125.7500 1.174661729664e-203 +2126.0000 6.818191832437e-204 +2126.2500 3.956306189372e-204 +2126.5000 2.294958612301e-204 +2126.7500 1.330834660249e-204 +2127.0000 7.715030217193e-205 +2127.2500 4.471110905588e-205 +2127.5000 2.590344562270e-205 +2127.7500 1.500250962562e-205 +2128.0000 8.686294993467e-206 +2128.2500 5.027701872344e-206 +2128.5000 2.909167609683e-206 +2128.7500 1.682799028601e-206 +2129.0000 9.731057633347e-207 +2129.2500 5.625383302730e-207 +2129.5000 3.250936434321e-207 +2129.7500 1.878145001640e-207 +2130.0000 1.084710996107e-207 +2130.2500 6.262723669554e-208 +2130.5000 3.614737292529e-208 +2130.7500 2.085712829493e-208 +2131.0000 1.203085710160e-208 +2131.2500 6.937498580532e-209 +2131.5000 3.999203732644e-209 +2131.7500 2.304668329791e-209 +2132.0000 1.327723437491e-209 +2132.2500 7.646647889730e-210 +2132.5000 4.402494743728e-210 +2132.7500 2.533908234270e-210 +2133.0000 1.457965349397e-210 +2133.2500 8.386250004677e-211 +2133.5000 4.822282966607e-211 +2133.7500 2.772055105482e-211 +2134.0000 1.592998294734e-211 +2134.2500 9.151516044138e-212 +2134.5000 5.255754404760e-212 +2134.7500 3.017458900292e-212 +2135.0000 1.731856671338e-212 +2135.2500 9.936806053430e-213 +2135.5000 5.699620800735e-213 +2135.7500 3.268205790619e-213 +2136.0000 1.873428447135e-213 +2136.2500 1.073566889834e-213 +2136.5000 6.150145496062e-214 +2136.7500 3.522134646382e-214 +2137.0000 2.016465526419e-214 +2137.2500 1.154090674899e-214 +2137.5000 6.603183177792e-215 +2137.7500 3.776861343959e-215 +2138.0000 2.159598516500e-215 +2138.2500 1.234466425298e-215 +2138.5000 7.054233446180e-216 +2138.7500 4.029810793783e-216 +2139.0000 2.301355795169e-216 +2139.2500 1.313854161137e-216 +2139.5000 7.498507632557e-217 +2139.7500 4.278256293060e-217 +2140.0000 2.440186616169e-217 +2140.2500 1.391372984714e-217 +2140.5000 7.931007774841e-218 +2140.7500 4.519365515938e-218 +2141.0000 2.574487824979e-218 +2141.2500 1.466116563283e-218 +2141.5000 8.346616143121e-219 +2141.7500 4.750252166896e-219 +2142.0000 2.702633598346e-219 +2142.2500 1.537170216572e-219 +2142.5000 8.740193223710e-220 +2142.7500 4.968032057454e-220 +2143.0000 2.823007475674e-220 +2143.2500 1.603629178750e-220 +2143.5000 9.106681641305e-221 +2143.7500 5.169882135026e-221 +2144.0000 2.934035826331e-221 +2144.2500 1.664617538423e-221 +2144.5000 9.441213148434e-222 +2144.7500 5.353100808516e-222 +2145.0000 3.034221800973e-222 +2145.2500 1.719307310726e-222 +2145.5000 9.739215559588e-223 +2145.7500 5.515167789124e-223 +2146.0000 3.122178753004e-223 +2146.2500 1.766937065959e-223 +2146.5000 9.996516370737e-224 +2146.7500 5.653801605207e-224 +2147.0000 3.196662092713e-224 +2147.2500 1.806829531623e-224 +2147.5000 1.020943979464e-224 +2147.7500 5.767012962708e-225 +2148.0000 3.256598554139e-225 +2148.2500 1.838407600434e-225 +2148.5000 1.037489406397e-225 +2148.7500 5.853152209561e-226 +2149.0000 3.301111914024e-226 +2149.2500 1.861208216053e-226 +2149.5000 1.049044610669e-226 +2149.7500 5.910949322348e-227 +2150.0000 3.329544301919e-227 +2150.2500 1.874893669768e-227 +2150.5000 1.055438107349e-227 +2150.7500 5.939545060806e-228 +2151.0000 3.341472377212e-228 +2151.2500 1.879259922985e-228 +2151.5000 1.056574468207e-228 +2151.7500 5.938512222119e-229 +2152.0000 3.336717817112e-229 +2152.2500 1.874241668873e-229 +2152.5000 1.052436691683e-229 +2152.7500 5.907866260170e-230 +2153.0000 3.315351752432e-230 +2153.2500 1.859913957673e-230 +2153.5000 1.043086626125e-230 +2153.7500 5.848064900798e-231 +2154.0000 3.277692996936e-231 +2154.2500 1.836490329119e-231 +2154.5000 1.028663431578e-231 +2154.7500 5.759996766451e-232 +2155.0000 3.224300131884e-232 +2155.2500 1.804317516943e-232 +2155.5000 1.009380133592e-232 +2155.7500 5.644959405371e-233 +2156.0000 3.155957720418e-233 +2156.2500 1.763866908993e-233 +2156.5000 9.855183883312e-234 +2156.7500 5.504627484526e-234 +2157.0000 3.073657127332e-234 +2157.2500 1.715723056947e-234 +2157.5000 9.574216387669e-235 +2157.7500 5.341012235989e-235 +2158.0000 2.978572599508e-235 +2158.2500 1.660569627014e-235 +2158.5000 9.254868943449e-236 +2158.7500 5.156413528952e-236 +2159.0000 2.872033413381e-236 +2159.2500 1.599173263358e-236 +2159.5000 8.901554089551e-237 +2159.7500 4.953366162532e-237 +2160.0000 2.755493011942e-237 +2160.2500 1.532365895980e-237 +2160.5000 8.519025627159e-238 +2160.7500 4.734582129376e-238 +2161.0000 2.630496130809e-238 +2161.2500 1.461026062315e-238 +2161.5000 8.112272709233e-239 +2161.7500 4.502890681845e-239 +2162.0000 2.498644948395e-239 +2162.2500 1.386059825927e-239 +2162.5000 7.686412481313e-240 +2162.7500 4.261178040069e-240 +2163.0000 2.361565289118e-240 +2163.2500 1.308381866484e-240 +2163.5000 7.246584469997e-241 +2163.7500 4.012328516709e-241 +2164.0000 2.220873862690e-241 +2164.2500 1.228897284092e-241 +2164.5000 6.797849711437e-242 +2164.7500 3.759168702766e-242 +2165.0000 2.078147440559e-242 +2165.2500 1.148484610342e-242 +2165.5000 6.345097301928e-243 +2165.7500 3.504416170923e-243 +2166.0000 1.934894757787e-243 +2166.2500 1.067980451212e-243 +2166.5000 5.892960654930e-244 +2166.7500 3.250633918788e-244 +2167.0000 1.792531791640e-244 +2167.2500 9.881661071263e-245 +2167.5000 5.445745285638e-245 +2167.7500 3.000191506859e-245 +2168.0000 1.652360914113e-245 +2168.2500 9.097564271699e-246 +2168.5000 5.007369439584e-246 +2168.7500 2.755233558521e-246 +2169.0000 1.515554252429e-246 +2169.2500 8.333910620314e-247 +2169.5000 4.581318360023e-247 +2169.7500 2.517655995748e-247 +2170.0000 1.383141426664e-247 +2170.2500 7.596281879743e-248 +2170.5000 4.170612473783e-248 +2170.7500 2.289090097412e-248 +2171.0000 1.256001674483e-248 +2171.2500 6.889406859926e-249 +2171.5000 3.777789288482e-249 +2171.7500 2.070894199067e-249 +2172.0000 1.134860225745e-249 +2172.2500 6.217146797122e-250 +2172.5000 3.404898354160e-250 +2172.7500 1.864152613711e-250 +2173.0000 1.020288659960e-250 +2173.2500 5.582502654381e-251 +2173.5000 3.053508264411e-251 +2173.7500 1.669681150265e-251 +2174.0000 9.127088711894e-252 +2174.2500 4.987642100849e-252 +2174.5000 2.724724366820e-252 +2174.7500 1.488038445651e-252 +2175.0000 8.124001807464e-253 +2175.2500 4.433943489067e-253 +2175.5000 2.419215626146e-253 +2175.7500 1.319542210479e-253 +2176.0000 7.195090793251e-254 +2176.2500 3.922053855009e-254 +2176.5000 2.137248938369e-254 +2176.7500 1.164289417883e-254 +2177.0000 6.340610468310e-255 +2177.2500 3.451957813260e-255 +2177.5000 1.878729127402e-255 +2177.7500 1.022179438489e-255 +2178.0000 5.559738891419e-256 +2178.2500 3.023054201024e-256 +2178.5000 1.643242863419e-256 +2178.7500 8.929391381324e-257 +2179.0000 4.850720439666e-257 +2179.2500 2.634237425915e-257 +2179.5000 1.430104814128e-257 +2179.7500 7.761490039584e-258 +2180.0000 4.211013399394e-258 +2180.2500 2.283980676023e-258 +2180.5000 1.238404467313e-258 +2180.7500 6.712694425893e-259 +2181.0000 3.637437405235e-259 +2181.2500 1.970418435824e-259 +2181.5000 1.067052232899e-259 +2181.7500 5.776664945806e-260 +2182.0000 3.126316633450e-260 +2182.2500 1.691426096465e-260 +2182.5000 9.148236332434e-261 +2182.7500 4.946363252800e-261 +2183.0000 2.673615323237e-261 +2183.2500 1.444694831742e-261 +2183.5000 7.804006090151e-262 +2183.7500 4.214279767336e-262 +2184.0000 2.275062906317e-262 +2184.2500 1.227800310803e-262 +2184.5000 6.624091935532e-263 +2184.7500 3.572639920850e-263 +2185.0000 1.926266736278e-263 +2185.2500 1.038264216454e-263 +2185.5000 5.594530304769e-264 +2185.7500 3.013586474214e-264 +2186.0000 1.622811094776e-264 +2186.2500 8.736079175849e-265 +2186.5000 4.701424190786e-265 +2186.7500 2.529336415901e-265 +2187.0000 1.360341786982e-265 +2187.2500 7.313979926008e-266 +2187.5000 3.931187625940e-266 +2187.7500 2.112311985043e-266 +2188.0000 1.134636204773e-266 +2188.2500 6.092836081329e-267 +2188.5000 3.270744608861e-267 +2188.7500 1.755246263435e-267 +2189.0000 9.416592201739e-268 +2189.2500 5.050260171723e-268 +2189.5000 2.707684282025e-268 +2189.7500 1.451264522852e-268 +2190.0000 7.776056663523e-269 +2190.2500 4.165206499524e-269 +2190.5000 2.230375270629e-269 +2190.7500 1.193943094285e-269 +2191.0000 6.389304669803e-270 +2191.2500 3.418124288970e-270 +2191.5000 1.828042911102e-270 +2191.7500 9.773479462814e-271 +2192.0000 5.223676895778e-271 +2192.2500 2.791050477202e-271 +2192.5000 1.490813643078e-271 +2192.7500 7.960554299835e-272 +2193.0000 4.249399305606e-272 +2193.2500 2.267650181685e-272 +2193.5000 1.209731135787e-272 +2193.7500 6.451577832486e-273 +2194.0000 3.439594980007e-273 +2194.2500 1.833213111883e-273 +2194.5000 9.767487997024e-274 +2194.7500 5.202560036114e-274 +2195.0000 2.770228531319e-274 +2195.2500 1.474614086190e-274 +2195.5000 7.847032321281e-275 +2195.7500 4.174426201418e-275 +2196.0000 2.219997149938e-275 +2196.2500 1.180245434362e-275 +2196.5000 6.272728986855e-276 +2196.7500 3.332767383849e-276 +2197.0000 1.770181360800e-276 +2197.2500 9.399284769779e-277 +2197.5000 4.989259979476e-277 +2197.7500 2.647535210836e-277 +2198.0000 1.404467318364e-277 +2198.2500 7.448105397982e-278 +2198.5000 3.948610287482e-278 +2198.7500 2.092700194180e-278 +2199.0000 1.108751038247e-278 +2199.2500 5.872531397387e-279 +2199.5000 3.109431101973e-279 +2199.7500 1.645890020905e-279 +2200.0000 8.709334461034e-280 +2200.2500 4.607161206763e-280 +2200.5000 2.436386202856e-280 +2200.7500 1.288021573356e-280 +2201.0000 6.807135975063e-281 +2201.2500 3.596416633055e-281 +2201.5000 1.899502424505e-281 +2201.7500 1.002937776869e-281 +2202.0000 5.293859495002e-282 +2202.2500 2.793412769053e-282 +2202.5000 1.473540580505e-282 +2202.7500 7.770578821636e-283 +2203.0000 4.096461924947e-283 +2203.2500 2.158881267962e-283 +2203.5000 1.137399090232e-283 +2203.7500 5.990475246826e-284 +2204.0000 3.154089134804e-284 +2204.2500 1.660163761515e-284 +2204.5000 8.735588745091e-285 +2204.7500 4.595129057921e-285 +2205.0000 2.416392781570e-285 +2205.2500 1.270286343033e-285 +2205.5000 6.675749182094e-286 +2205.7500 3.507217313947e-286 +2206.0000 1.841999994793e-286 +2206.2500 9.671210939047e-287 +2206.5000 5.076172476009e-287 +2206.7500 2.663521256480e-287 +2207.0000 1.397141031090e-287 +2207.2500 7.326365991468e-288 +2207.5000 3.840619266803e-288 +2207.7500 2.012696008295e-288 +2208.0000 1.054433990427e-288 +2208.2500 5.522362257734e-289 +2208.5000 2.891310079136e-289 +2208.7500 1.513312889251e-289 +2209.0000 7.918211083219e-290 +2209.2500 4.141805512851e-290 +2209.5000 2.165791334154e-290 +2209.7500 1.132159993697e-290 +2210.0000 5.916478358274e-291 +2210.2500 3.090886367119e-291 +2210.5000 1.614236194108e-291 +2210.7500 8.427822988814e-292 +2211.0000 4.398737170258e-292 +2211.2500 2.295117391008e-292 +2211.5000 1.197143129531e-292 +2211.7500 6.242399139448e-293 +2212.0000 3.254027910223e-293 +2212.2500 1.695724504794e-293 +2212.5000 8.833922842273e-294 +2212.7500 4.600618168664e-294 +2213.0000 2.395207052138e-294 +2213.2500 1.246620361589e-294 +2213.5000 6.486189809518e-295 +2213.7500 3.373722627536e-295 +2214.0000 1.754257642937e-295 +2214.2500 9.118883423404e-296 +2214.5000 4.738645640123e-296 +2214.7500 2.461677098324e-296 +2215.0000 1.278416068204e-296 +2215.2500 6.637088961463e-297 +2215.5000 3.444667757743e-297 +2215.7500 1.787233615060e-297 +2216.0000 9.269996953479e-298 +2216.2500 4.806646035276e-298 +2216.5000 2.491546372716e-298 +2216.7500 1.291100623261e-298 +2217.0000 6.688296071915e-299 +2217.2500 3.463659343535e-299 +2217.5000 1.793160389778e-299 +2217.7500 9.280414733623e-300 +2218.0000 4.801532975983e-300 +2218.2500 2.483457486215e-300 +2218.5000 1.284096986308e-300 +2218.7500 6.637479711507e-301 +2219.0000 3.429832169881e-301 +2219.2500 1.771767843754e-301 +2219.5000 9.149661855402e-302 +2219.7500 4.723539548537e-302 +2220.0000 2.437779107342e-302 +2220.2500 1.257724232138e-302 +2220.5000 6.486953564105e-303 +2220.7500 3.344725126970e-303 +2221.0000 1.724028176706e-303 +2221.2500 8.883673100282e-304 +2221.5000 4.576200684063e-304 +2221.7500 2.356578099279e-304 +2222.0000 1.213173445850e-304 +2222.2500 6.243501743934e-305 +2222.5000 3.212165119700e-305 +2222.7500 1.652082646331e-305 +2223.0000 8.494346247945e-306 +2223.2500 4.366087481367e-306 +2223.5000 2.243464437336e-306 +2223.7500 1.152418519976e-306 +2224.0000 5.917871781427e-307 +2224.2500 3.037981722558e-307 +2224.5000 1.559082313952e-307 +2224.7500 7.998659625862e-308 +2225.0000 4.102321286246e-308 +2225.2500 2.103325115605e-308 +2225.5000 1.078071159391e-308 +2225.7500 5.523988058904e-309 +2226.0000 2.829582215906e-309 +2226.2500 1.448959298930e-309 +2226.5000 7.417445063836e-310 +2226.7500 3.795917574981e-310 +2227.0000 1.941974359935e-310 +2227.2500 9.931949269515e-311 +2227.5000 5.077965858543e-311 +2227.7500 2.595430139406e-311 +2228.0000 1.326151660791e-311 +2228.2500 6.773939701518e-312 +2228.5000 3.459025329268e-312 +2228.7500 1.765754985595e-312 +2229.0000 9.010967498968e-313 +2229.2500 4.597023114942e-313 +2229.5000 2.344478400245e-313 +2229.7500 1.195308653569e-313 +2230.0000 6.092256553230e-314 +2230.2500 3.104134819814e-314 +2230.5000 1.581128781279e-314 +2230.7500 8.051156434142e-315 +2231.0000 4.098391487473e-315 +2231.2500 2.085608762265e-315 +2231.5000 1.061004052529e-315 +2231.7500 5.395909147028e-316 +2232.0000 2.743321484455e-316 +2232.2500 1.394298607790e-316 +2232.5000 7.084317375770e-317 +2232.7500 3.598342844999e-317 +2233.0000 1.827080943800e-317 +2233.2500 9.274042009552e-318 +2233.5000 4.706340885216e-318 +2233.7500 2.387829147664e-318 +2234.0000 1.211241456031e-318 +2234.2500 6.147411798380e-319 +2234.5000 3.119332861583e-319 +2234.7500 1.568757238675e-319 +2235.0000 8.026096416691e-320 +2235.2500 4.013295241168e-320 +2235.5000 2.006400587761e-320 +2235.7500 1.094355405538e-320 +2236.0000 5.474247355921e-321 +2236.2500 1.823102233154e-321 +2236.5000 1.823102233154e-321 +2236.7500 0.000000000000e+00 +2237.0000 0.000000000000e+00 +2237.2500 0.000000000000e+00 +2237.5000 0.000000000000e+00 +2237.7500 0.000000000000e+00 +2238.0000 0.000000000000e+00 +2238.2500 0.000000000000e+00 +2238.5000 0.000000000000e+00 +2238.7500 0.000000000000e+00 +2239.0000 0.000000000000e+00 +2239.2500 0.000000000000e+00 +2239.5000 0.000000000000e+00 +2239.7500 0.000000000000e+00 +2240.0000 0.000000000000e+00 +2240.2500 0.000000000000e+00 +2240.5000 0.000000000000e+00 +2240.7500 0.000000000000e+00 +2241.0000 0.000000000000e+00 +2241.2500 0.000000000000e+00 +2241.5000 0.000000000000e+00 +2241.7500 0.000000000000e+00 +2242.0000 0.000000000000e+00 +2242.2500 0.000000000000e+00 +2242.5000 0.000000000000e+00 +2242.7500 0.000000000000e+00 +2243.0000 0.000000000000e+00 +2243.2500 0.000000000000e+00 +2243.5000 0.000000000000e+00 +2243.7500 0.000000000000e+00 +2244.0000 0.000000000000e+00 +2244.2500 0.000000000000e+00 +2244.5000 0.000000000000e+00 +2244.7500 0.000000000000e+00 +2245.0000 0.000000000000e+00 +2245.2500 0.000000000000e+00 +2245.5000 0.000000000000e+00 +2245.7500 0.000000000000e+00 +2246.0000 0.000000000000e+00 +2246.2500 0.000000000000e+00 +2246.5000 0.000000000000e+00 +2246.7500 0.000000000000e+00 +2247.0000 0.000000000000e+00 +2247.2500 0.000000000000e+00 +2247.5000 0.000000000000e+00 +2247.7500 0.000000000000e+00 +2248.0000 0.000000000000e+00 +2248.2500 0.000000000000e+00 +2248.5000 0.000000000000e+00 +2248.7500 0.000000000000e+00 +2249.0000 0.000000000000e+00 +2249.2500 0.000000000000e+00 +2249.5000 0.000000000000e+00 +2249.7500 0.000000000000e+00 +2250.0000 0.000000000000e+00 +2250.2500 0.000000000000e+00 +2250.5000 0.000000000000e+00 +2250.7500 0.000000000000e+00 +2251.0000 0.000000000000e+00 +2251.2500 0.000000000000e+00 +2251.5000 0.000000000000e+00 +2251.7500 0.000000000000e+00 +2252.0000 0.000000000000e+00 +2252.2500 0.000000000000e+00 +2252.5000 0.000000000000e+00 +2252.7500 0.000000000000e+00 +2253.0000 0.000000000000e+00 +2253.2500 0.000000000000e+00 +2253.5000 0.000000000000e+00 +2253.7500 0.000000000000e+00 +2254.0000 0.000000000000e+00 +2254.2500 0.000000000000e+00 +2254.5000 0.000000000000e+00 +2254.7500 0.000000000000e+00 +2255.0000 0.000000000000e+00 +2255.2500 0.000000000000e+00 +2255.5000 0.000000000000e+00 +2255.7500 0.000000000000e+00 +2256.0000 0.000000000000e+00 +2256.2500 0.000000000000e+00 +2256.5000 0.000000000000e+00 +2256.7500 0.000000000000e+00 +2257.0000 0.000000000000e+00 +2257.2500 0.000000000000e+00 +2257.5000 0.000000000000e+00 +2257.7500 0.000000000000e+00 +2258.0000 0.000000000000e+00 +2258.2500 0.000000000000e+00 +2258.5000 0.000000000000e+00 +2258.7500 0.000000000000e+00 +2259.0000 0.000000000000e+00 +2259.2500 0.000000000000e+00 +2259.5000 0.000000000000e+00 +2259.7500 0.000000000000e+00 +2260.0000 0.000000000000e+00 +2260.2500 0.000000000000e+00 +2260.5000 0.000000000000e+00 +2260.7500 0.000000000000e+00 +2261.0000 0.000000000000e+00 +2261.2500 0.000000000000e+00 +2261.5000 0.000000000000e+00 +2261.7500 0.000000000000e+00 +2262.0000 0.000000000000e+00 +2262.2500 0.000000000000e+00 +2262.5000 0.000000000000e+00 +2262.7500 0.000000000000e+00 +2263.0000 0.000000000000e+00 +2263.2500 0.000000000000e+00 +2263.5000 0.000000000000e+00 +2263.7500 0.000000000000e+00 +2264.0000 0.000000000000e+00 +2264.2500 0.000000000000e+00 +2264.5000 0.000000000000e+00 +2264.7500 0.000000000000e+00 +2265.0000 0.000000000000e+00 +2265.2500 0.000000000000e+00 +2265.5000 0.000000000000e+00 +2265.7500 0.000000000000e+00 +2266.0000 0.000000000000e+00 +2266.2500 0.000000000000e+00 +2266.5000 0.000000000000e+00 +2266.7500 0.000000000000e+00 +2267.0000 0.000000000000e+00 +2267.2500 0.000000000000e+00 +2267.5000 0.000000000000e+00 +2267.7500 0.000000000000e+00 +2268.0000 0.000000000000e+00 +2268.2500 0.000000000000e+00 +2268.5000 0.000000000000e+00 +2268.7500 0.000000000000e+00 +2269.0000 0.000000000000e+00 +2269.2500 0.000000000000e+00 +2269.5000 0.000000000000e+00 +2269.7500 0.000000000000e+00 +2270.0000 0.000000000000e+00 +2270.2500 0.000000000000e+00 +2270.5000 0.000000000000e+00 +2270.7500 0.000000000000e+00 +2271.0000 0.000000000000e+00 +2271.2500 0.000000000000e+00 +2271.5000 0.000000000000e+00 +2271.7500 0.000000000000e+00 +2272.0000 0.000000000000e+00 +2272.2500 0.000000000000e+00 +2272.5000 0.000000000000e+00 +2272.7500 0.000000000000e+00 +2273.0000 0.000000000000e+00 +2273.2500 0.000000000000e+00 +2273.5000 0.000000000000e+00 +2273.7500 0.000000000000e+00 +2274.0000 0.000000000000e+00 +2274.2500 0.000000000000e+00 +2274.5000 0.000000000000e+00 +2274.7500 0.000000000000e+00 +2275.0000 0.000000000000e+00 +2275.2500 0.000000000000e+00 +2275.5000 0.000000000000e+00 +2275.7500 0.000000000000e+00 +2276.0000 0.000000000000e+00 +2276.2500 0.000000000000e+00 +2276.5000 0.000000000000e+00 +2276.7500 0.000000000000e+00 +2277.0000 0.000000000000e+00 +2277.2500 0.000000000000e+00 +2277.5000 0.000000000000e+00 +2277.7500 0.000000000000e+00 +2278.0000 0.000000000000e+00 +2278.2500 0.000000000000e+00 +2278.5000 0.000000000000e+00 +2278.7500 0.000000000000e+00 +2279.0000 0.000000000000e+00 +2279.2500 0.000000000000e+00 +2279.5000 0.000000000000e+00 +2279.7500 0.000000000000e+00 +2280.0000 0.000000000000e+00 +2280.2500 0.000000000000e+00 +2280.5000 0.000000000000e+00 +2280.7500 0.000000000000e+00 +2281.0000 0.000000000000e+00 +2281.2500 0.000000000000e+00 +2281.5000 0.000000000000e+00 +2281.7500 0.000000000000e+00 +2282.0000 0.000000000000e+00 +2282.2500 0.000000000000e+00 +2282.5000 0.000000000000e+00 +2282.7500 0.000000000000e+00 +2283.0000 0.000000000000e+00 +2283.2500 0.000000000000e+00 +2283.5000 0.000000000000e+00 +2283.7500 0.000000000000e+00 +2284.0000 0.000000000000e+00 +2284.2500 0.000000000000e+00 +2284.5000 0.000000000000e+00 +2284.7500 0.000000000000e+00 +2285.0000 0.000000000000e+00 +2285.2500 0.000000000000e+00 +2285.5000 0.000000000000e+00 +2285.7500 0.000000000000e+00 +2286.0000 0.000000000000e+00 +2286.2500 0.000000000000e+00 +2286.5000 0.000000000000e+00 +2286.7500 0.000000000000e+00 +2287.0000 0.000000000000e+00 +2287.2500 0.000000000000e+00 +2287.5000 0.000000000000e+00 +2287.7500 0.000000000000e+00 +2288.0000 0.000000000000e+00 +2288.2500 0.000000000000e+00 +2288.5000 0.000000000000e+00 +2288.7500 0.000000000000e+00 +2289.0000 0.000000000000e+00 +2289.2500 0.000000000000e+00 +2289.5000 0.000000000000e+00 +2289.7500 0.000000000000e+00 +2290.0000 0.000000000000e+00 +2290.2500 0.000000000000e+00 +2290.5000 0.000000000000e+00 +2290.7500 0.000000000000e+00 +2291.0000 0.000000000000e+00 +2291.2500 0.000000000000e+00 +2291.5000 0.000000000000e+00 +2291.7500 0.000000000000e+00 +2292.0000 0.000000000000e+00 +2292.2500 0.000000000000e+00 +2292.5000 0.000000000000e+00 +2292.7500 0.000000000000e+00 +2293.0000 0.000000000000e+00 +2293.2500 0.000000000000e+00 +2293.5000 0.000000000000e+00 +2293.7500 0.000000000000e+00 +2294.0000 0.000000000000e+00 +2294.2500 0.000000000000e+00 +2294.5000 0.000000000000e+00 +2294.7500 0.000000000000e+00 +2295.0000 0.000000000000e+00 +2295.2500 0.000000000000e+00 +2295.5000 0.000000000000e+00 +2295.7500 0.000000000000e+00 +2296.0000 0.000000000000e+00 +2296.2500 0.000000000000e+00 +2296.5000 0.000000000000e+00 +2296.7500 0.000000000000e+00 +2297.0000 0.000000000000e+00 +2297.2500 0.000000000000e+00 +2297.5000 0.000000000000e+00 +2297.7500 0.000000000000e+00 +2298.0000 0.000000000000e+00 +2298.2500 0.000000000000e+00 +2298.5000 0.000000000000e+00 +2298.7500 0.000000000000e+00 +2299.0000 0.000000000000e+00 +2299.2500 0.000000000000e+00 +2299.5000 0.000000000000e+00 +2299.7500 0.000000000000e+00 +2300.0000 0.000000000000e+00 +2300.2500 0.000000000000e+00 +2300.5000 0.000000000000e+00 +2300.7500 0.000000000000e+00 +2301.0000 0.000000000000e+00 +2301.2500 0.000000000000e+00 +2301.5000 0.000000000000e+00 +2301.7500 0.000000000000e+00 +2302.0000 0.000000000000e+00 +2302.2500 0.000000000000e+00 +2302.5000 0.000000000000e+00 +2302.7500 0.000000000000e+00 +2303.0000 0.000000000000e+00 +2303.2500 0.000000000000e+00 +2303.5000 0.000000000000e+00 +2303.7500 0.000000000000e+00 +2304.0000 0.000000000000e+00 +2304.2500 0.000000000000e+00 +2304.5000 0.000000000000e+00 +2304.7500 0.000000000000e+00 +2305.0000 0.000000000000e+00 +2305.2500 0.000000000000e+00 +2305.5000 0.000000000000e+00 +2305.7500 0.000000000000e+00 +2306.0000 0.000000000000e+00 +2306.2500 0.000000000000e+00 +2306.5000 0.000000000000e+00 +2306.7500 0.000000000000e+00 +2307.0000 0.000000000000e+00 +2307.2500 0.000000000000e+00 +2307.5000 0.000000000000e+00 +2307.7500 0.000000000000e+00 +2308.0000 0.000000000000e+00 +2308.2500 0.000000000000e+00 +2308.5000 0.000000000000e+00 +2308.7500 0.000000000000e+00 +2309.0000 0.000000000000e+00 +2309.2500 0.000000000000e+00 +2309.5000 0.000000000000e+00 +2309.7500 0.000000000000e+00 +2310.0000 0.000000000000e+00 +2310.2500 0.000000000000e+00 +2310.5000 0.000000000000e+00 +2310.7500 0.000000000000e+00 +2311.0000 0.000000000000e+00 +2311.2500 0.000000000000e+00 +2311.5000 0.000000000000e+00 +2311.7500 0.000000000000e+00 +2312.0000 0.000000000000e+00 +2312.2500 0.000000000000e+00 +2312.5000 0.000000000000e+00 +2312.7500 0.000000000000e+00 +2313.0000 0.000000000000e+00 +2313.2500 0.000000000000e+00 +2313.5000 0.000000000000e+00 +2313.7500 0.000000000000e+00 +2314.0000 0.000000000000e+00 +2314.2500 0.000000000000e+00 +2314.5000 0.000000000000e+00 +2314.7500 0.000000000000e+00 +2315.0000 0.000000000000e+00 +2315.2500 0.000000000000e+00 +2315.5000 0.000000000000e+00 +2315.7500 0.000000000000e+00 +2316.0000 0.000000000000e+00 +2316.2500 0.000000000000e+00 +2316.5000 0.000000000000e+00 +2316.7500 0.000000000000e+00 +2317.0000 0.000000000000e+00 +2317.2500 0.000000000000e+00 +2317.5000 0.000000000000e+00 +2317.7500 0.000000000000e+00 +2318.0000 0.000000000000e+00 +2318.2500 0.000000000000e+00 +2318.5000 0.000000000000e+00 +2318.7500 0.000000000000e+00 +2319.0000 0.000000000000e+00 +2319.2500 0.000000000000e+00 +2319.5000 0.000000000000e+00 +2319.7500 0.000000000000e+00 +2320.0000 0.000000000000e+00 +2320.2500 0.000000000000e+00 +2320.5000 0.000000000000e+00 +2320.7500 0.000000000000e+00 +2321.0000 0.000000000000e+00 +2321.2500 0.000000000000e+00 +2321.5000 0.000000000000e+00 +2321.7500 0.000000000000e+00 +2322.0000 0.000000000000e+00 +2322.2500 0.000000000000e+00 +2322.5000 0.000000000000e+00 +2322.7500 0.000000000000e+00 +2323.0000 0.000000000000e+00 +2323.2500 0.000000000000e+00 +2323.5000 0.000000000000e+00 +2323.7500 0.000000000000e+00 +2324.0000 0.000000000000e+00 +2324.2500 0.000000000000e+00 +2324.5000 0.000000000000e+00 +2324.7500 0.000000000000e+00 +2325.0000 0.000000000000e+00 +2325.2500 0.000000000000e+00 +2325.5000 0.000000000000e+00 +2325.7500 0.000000000000e+00 +2326.0000 0.000000000000e+00 +2326.2500 0.000000000000e+00 +2326.5000 0.000000000000e+00 +2326.7500 0.000000000000e+00 +2327.0000 0.000000000000e+00 +2327.2500 0.000000000000e+00 +2327.5000 0.000000000000e+00 +2327.7500 0.000000000000e+00 +2328.0000 0.000000000000e+00 +2328.2500 0.000000000000e+00 +2328.5000 0.000000000000e+00 +2328.7500 0.000000000000e+00 +2329.0000 0.000000000000e+00 +2329.2500 0.000000000000e+00 +2329.5000 0.000000000000e+00 +2329.7500 0.000000000000e+00 +2330.0000 0.000000000000e+00 +2330.2500 0.000000000000e+00 +2330.5000 0.000000000000e+00 +2330.7500 0.000000000000e+00 +2331.0000 0.000000000000e+00 +2331.2500 0.000000000000e+00 +2331.5000 0.000000000000e+00 +2331.7500 0.000000000000e+00 +2332.0000 0.000000000000e+00 +2332.2500 0.000000000000e+00 +2332.5000 0.000000000000e+00 +2332.7500 0.000000000000e+00 +2333.0000 0.000000000000e+00 +2333.2500 0.000000000000e+00 +2333.5000 0.000000000000e+00 +2333.7500 0.000000000000e+00 +2334.0000 0.000000000000e+00 +2334.2500 0.000000000000e+00 +2334.5000 0.000000000000e+00 +2334.7500 0.000000000000e+00 +2335.0000 0.000000000000e+00 +2335.2500 0.000000000000e+00 +2335.5000 0.000000000000e+00 +2335.7500 0.000000000000e+00 +2336.0000 0.000000000000e+00 +2336.2500 0.000000000000e+00 +2336.5000 0.000000000000e+00 +2336.7500 0.000000000000e+00 +2337.0000 0.000000000000e+00 +2337.2500 0.000000000000e+00 +2337.5000 0.000000000000e+00 +2337.7500 0.000000000000e+00 +2338.0000 0.000000000000e+00 +2338.2500 0.000000000000e+00 +2338.5000 0.000000000000e+00 +2338.7500 0.000000000000e+00 +2339.0000 0.000000000000e+00 +2339.2500 0.000000000000e+00 +2339.5000 0.000000000000e+00 +2339.7500 0.000000000000e+00 +2340.0000 0.000000000000e+00 +2340.2500 0.000000000000e+00 +2340.5000 0.000000000000e+00 +2340.7500 0.000000000000e+00 +2341.0000 0.000000000000e+00 +2341.2500 0.000000000000e+00 +2341.5000 0.000000000000e+00 +2341.7500 0.000000000000e+00 +2342.0000 0.000000000000e+00 +2342.2500 0.000000000000e+00 +2342.5000 0.000000000000e+00 +2342.7500 0.000000000000e+00 +2343.0000 0.000000000000e+00 +2343.2500 0.000000000000e+00 +2343.5000 0.000000000000e+00 +2343.7500 0.000000000000e+00 +2344.0000 0.000000000000e+00 +2344.2500 0.000000000000e+00 +2344.5000 0.000000000000e+00 +2344.7500 0.000000000000e+00 +2345.0000 0.000000000000e+00 +2345.2500 0.000000000000e+00 +2345.5000 0.000000000000e+00 +2345.7500 0.000000000000e+00 +2346.0000 0.000000000000e+00 +2346.2500 0.000000000000e+00 +2346.5000 0.000000000000e+00 +2346.7500 0.000000000000e+00 +2347.0000 0.000000000000e+00 +2347.2500 0.000000000000e+00 +2347.5000 0.000000000000e+00 +2347.7500 0.000000000000e+00 +2348.0000 0.000000000000e+00 +2348.2500 0.000000000000e+00 +2348.5000 0.000000000000e+00 +2348.7500 0.000000000000e+00 +2349.0000 0.000000000000e+00 +2349.2500 0.000000000000e+00 +2349.5000 0.000000000000e+00 +2349.7500 0.000000000000e+00 +2350.0000 0.000000000000e+00 +2350.2500 0.000000000000e+00 +2350.5000 0.000000000000e+00 +2350.7500 0.000000000000e+00 +2351.0000 0.000000000000e+00 +2351.2500 0.000000000000e+00 +2351.5000 0.000000000000e+00 +2351.7500 0.000000000000e+00 +2352.0000 0.000000000000e+00 +2352.2500 0.000000000000e+00 +2352.5000 0.000000000000e+00 +2352.7500 0.000000000000e+00 +2353.0000 0.000000000000e+00 +2353.2500 0.000000000000e+00 +2353.5000 0.000000000000e+00 +2353.7500 0.000000000000e+00 +2354.0000 0.000000000000e+00 +2354.2500 0.000000000000e+00 +2354.5000 0.000000000000e+00 +2354.7500 0.000000000000e+00 +2355.0000 0.000000000000e+00 +2355.2500 0.000000000000e+00 +2355.5000 0.000000000000e+00 +2355.7500 0.000000000000e+00 +2356.0000 0.000000000000e+00 +2356.2500 0.000000000000e+00 +2356.5000 0.000000000000e+00 +2356.7500 0.000000000000e+00 +2357.0000 0.000000000000e+00 +2357.2500 0.000000000000e+00 +2357.5000 0.000000000000e+00 +2357.7500 0.000000000000e+00 +2358.0000 0.000000000000e+00 +2358.2500 0.000000000000e+00 +2358.5000 0.000000000000e+00 +2358.7500 0.000000000000e+00 +2359.0000 0.000000000000e+00 +2359.2500 0.000000000000e+00 +2359.5000 0.000000000000e+00 +2359.7500 0.000000000000e+00 +2360.0000 0.000000000000e+00 +2360.2500 0.000000000000e+00 +2360.5000 0.000000000000e+00 +2360.7500 0.000000000000e+00 +2361.0000 0.000000000000e+00 +2361.2500 0.000000000000e+00 +2361.5000 0.000000000000e+00 +2361.7500 0.000000000000e+00 +2362.0000 0.000000000000e+00 +2362.2500 0.000000000000e+00 +2362.5000 0.000000000000e+00 +2362.7500 0.000000000000e+00 +2363.0000 0.000000000000e+00 +2363.2500 0.000000000000e+00 +2363.5000 0.000000000000e+00 +2363.7500 0.000000000000e+00 +2364.0000 0.000000000000e+00 +2364.2500 0.000000000000e+00 +2364.5000 0.000000000000e+00 +2364.7500 0.000000000000e+00 +2365.0000 0.000000000000e+00 +2365.2500 0.000000000000e+00 +2365.5000 0.000000000000e+00 +2365.7500 0.000000000000e+00 +2366.0000 0.000000000000e+00 +2366.2500 0.000000000000e+00 +2366.5000 0.000000000000e+00 +2366.7500 0.000000000000e+00 +2367.0000 0.000000000000e+00 +2367.2500 0.000000000000e+00 +2367.5000 0.000000000000e+00 +2367.7500 0.000000000000e+00 +2368.0000 0.000000000000e+00 +2368.2500 0.000000000000e+00 +2368.5000 0.000000000000e+00 +2368.7500 0.000000000000e+00 +2369.0000 0.000000000000e+00 +2369.2500 0.000000000000e+00 +2369.5000 0.000000000000e+00 +2369.7500 0.000000000000e+00 +2370.0000 0.000000000000e+00 +2370.2500 0.000000000000e+00 +2370.5000 0.000000000000e+00 +2370.7500 0.000000000000e+00 +2371.0000 0.000000000000e+00 +2371.2500 0.000000000000e+00 +2371.5000 0.000000000000e+00 +2371.7500 0.000000000000e+00 +2372.0000 0.000000000000e+00 +2372.2500 0.000000000000e+00 +2372.5000 0.000000000000e+00 +2372.7500 0.000000000000e+00 +2373.0000 0.000000000000e+00 +2373.2500 0.000000000000e+00 +2373.5000 0.000000000000e+00 +2373.7500 0.000000000000e+00 +2374.0000 0.000000000000e+00 +2374.2500 0.000000000000e+00 +2374.5000 0.000000000000e+00 +2374.7500 0.000000000000e+00 +2375.0000 0.000000000000e+00 +2375.2500 0.000000000000e+00 +2375.5000 0.000000000000e+00 +2375.7500 0.000000000000e+00 +2376.0000 0.000000000000e+00 +2376.2500 0.000000000000e+00 +2376.5000 0.000000000000e+00 +2376.7500 0.000000000000e+00 +2377.0000 0.000000000000e+00 +2377.2500 0.000000000000e+00 +2377.5000 0.000000000000e+00 +2377.7500 0.000000000000e+00 +2378.0000 0.000000000000e+00 +2378.2500 0.000000000000e+00 +2378.5000 0.000000000000e+00 +2378.7500 0.000000000000e+00 +2379.0000 0.000000000000e+00 +2379.2500 0.000000000000e+00 +2379.5000 0.000000000000e+00 +2379.7500 0.000000000000e+00 +2380.0000 0.000000000000e+00 +2380.2500 0.000000000000e+00 +2380.5000 0.000000000000e+00 +2380.7500 0.000000000000e+00 +2381.0000 0.000000000000e+00 +2381.2500 0.000000000000e+00 +2381.5000 0.000000000000e+00 +2381.7500 0.000000000000e+00 +2382.0000 0.000000000000e+00 +2382.2500 0.000000000000e+00 +2382.5000 0.000000000000e+00 +2382.7500 0.000000000000e+00 +2383.0000 0.000000000000e+00 +2383.2500 0.000000000000e+00 +2383.5000 0.000000000000e+00 +2383.7500 0.000000000000e+00 +2384.0000 0.000000000000e+00 +2384.2500 0.000000000000e+00 +2384.5000 0.000000000000e+00 +2384.7500 0.000000000000e+00 +2385.0000 0.000000000000e+00 +2385.2500 0.000000000000e+00 +2385.5000 0.000000000000e+00 +2385.7500 0.000000000000e+00 +2386.0000 0.000000000000e+00 +2386.2500 0.000000000000e+00 +2386.5000 0.000000000000e+00 +2386.7500 0.000000000000e+00 +2387.0000 0.000000000000e+00 +2387.2500 0.000000000000e+00 +2387.5000 0.000000000000e+00 +2387.7500 0.000000000000e+00 +2388.0000 0.000000000000e+00 +2388.2500 0.000000000000e+00 +2388.5000 0.000000000000e+00 +2388.7500 0.000000000000e+00 +2389.0000 0.000000000000e+00 +2389.2500 0.000000000000e+00 +2389.5000 0.000000000000e+00 +2389.7500 0.000000000000e+00 +2390.0000 0.000000000000e+00 +2390.2500 0.000000000000e+00 +2390.5000 0.000000000000e+00 +2390.7500 0.000000000000e+00 +2391.0000 0.000000000000e+00 +2391.2500 0.000000000000e+00 +2391.5000 0.000000000000e+00 +2391.7500 0.000000000000e+00 +2392.0000 0.000000000000e+00 +2392.2500 0.000000000000e+00 +2392.5000 0.000000000000e+00 +2392.7500 0.000000000000e+00 +2393.0000 0.000000000000e+00 +2393.2500 0.000000000000e+00 +2393.5000 0.000000000000e+00 +2393.7500 0.000000000000e+00 +2394.0000 0.000000000000e+00 +2394.2500 0.000000000000e+00 +2394.5000 0.000000000000e+00 +2394.7500 0.000000000000e+00 +2395.0000 0.000000000000e+00 +2395.2500 0.000000000000e+00 +2395.5000 0.000000000000e+00 +2395.7500 0.000000000000e+00 +2396.0000 0.000000000000e+00 +2396.2500 0.000000000000e+00 +2396.5000 0.000000000000e+00 +2396.7500 0.000000000000e+00 +2397.0000 0.000000000000e+00 +2397.2500 0.000000000000e+00 +2397.5000 0.000000000000e+00 +2397.7500 0.000000000000e+00 +2398.0000 0.000000000000e+00 +2398.2500 0.000000000000e+00 +2398.5000 0.000000000000e+00 +2398.7500 0.000000000000e+00 +2399.0000 0.000000000000e+00 +2399.2500 0.000000000000e+00 +2399.5000 0.000000000000e+00 +2399.7500 0.000000000000e+00 +2400.0000 0.000000000000e+00 +2400.2500 0.000000000000e+00 +2400.5000 0.000000000000e+00 +2400.7500 0.000000000000e+00 +2401.0000 0.000000000000e+00 +2401.2500 0.000000000000e+00 +2401.5000 0.000000000000e+00 +2401.7500 0.000000000000e+00 +2402.0000 0.000000000000e+00 +2402.2500 0.000000000000e+00 +2402.5000 0.000000000000e+00 +2402.7500 0.000000000000e+00 +2403.0000 0.000000000000e+00 +2403.2500 0.000000000000e+00 +2403.5000 0.000000000000e+00 +2403.7500 0.000000000000e+00 +2404.0000 0.000000000000e+00 +2404.2500 0.000000000000e+00 +2404.5000 0.000000000000e+00 +2404.7500 0.000000000000e+00 +2405.0000 0.000000000000e+00 +2405.2500 0.000000000000e+00 +2405.5000 0.000000000000e+00 +2405.7500 0.000000000000e+00 +2406.0000 0.000000000000e+00 +2406.2500 0.000000000000e+00 +2406.5000 0.000000000000e+00 +2406.7500 0.000000000000e+00 +2407.0000 0.000000000000e+00 +2407.2500 0.000000000000e+00 +2407.5000 0.000000000000e+00 +2407.7500 0.000000000000e+00 +2408.0000 0.000000000000e+00 +2408.2500 0.000000000000e+00 +2408.5000 0.000000000000e+00 +2408.7500 0.000000000000e+00 +2409.0000 0.000000000000e+00 +2409.2500 0.000000000000e+00 +2409.5000 0.000000000000e+00 +2409.7500 0.000000000000e+00 +2410.0000 0.000000000000e+00 +2410.2500 0.000000000000e+00 +2410.5000 0.000000000000e+00 +2410.7500 0.000000000000e+00 +2411.0000 0.000000000000e+00 +2411.2500 0.000000000000e+00 +2411.5000 0.000000000000e+00 +2411.7500 0.000000000000e+00 +2412.0000 0.000000000000e+00 +2412.2500 0.000000000000e+00 +2412.5000 0.000000000000e+00 +2412.7500 0.000000000000e+00 +2413.0000 0.000000000000e+00 +2413.2500 0.000000000000e+00 +2413.5000 0.000000000000e+00 +2413.7500 0.000000000000e+00 +2414.0000 0.000000000000e+00 +2414.2500 0.000000000000e+00 +2414.5000 0.000000000000e+00 +2414.7500 0.000000000000e+00 +2415.0000 0.000000000000e+00 +2415.2500 0.000000000000e+00 +2415.5000 0.000000000000e+00 +2415.7500 0.000000000000e+00 +2416.0000 0.000000000000e+00 +2416.2500 0.000000000000e+00 +2416.5000 0.000000000000e+00 +2416.7500 0.000000000000e+00 +2417.0000 0.000000000000e+00 +2417.2500 0.000000000000e+00 +2417.5000 0.000000000000e+00 +2417.7500 0.000000000000e+00 +2418.0000 0.000000000000e+00 +2418.2500 0.000000000000e+00 +2418.5000 0.000000000000e+00 +2418.7500 0.000000000000e+00 +2419.0000 0.000000000000e+00 +2419.2500 0.000000000000e+00 +2419.5000 0.000000000000e+00 +2419.7500 0.000000000000e+00 +2420.0000 0.000000000000e+00 +2420.2500 0.000000000000e+00 +2420.5000 0.000000000000e+00 +2420.7500 0.000000000000e+00 +2421.0000 0.000000000000e+00 +2421.2500 0.000000000000e+00 +2421.5000 0.000000000000e+00 +2421.7500 0.000000000000e+00 +2422.0000 0.000000000000e+00 +2422.2500 0.000000000000e+00 +2422.5000 0.000000000000e+00 +2422.7500 0.000000000000e+00 +2423.0000 0.000000000000e+00 +2423.2500 0.000000000000e+00 +2423.5000 0.000000000000e+00 +2423.7500 0.000000000000e+00 +2424.0000 0.000000000000e+00 +2424.2500 0.000000000000e+00 +2424.5000 0.000000000000e+00 +2424.7500 0.000000000000e+00 +2425.0000 0.000000000000e+00 +2425.2500 0.000000000000e+00 +2425.5000 0.000000000000e+00 +2425.7500 0.000000000000e+00 +2426.0000 0.000000000000e+00 +2426.2500 0.000000000000e+00 +2426.5000 0.000000000000e+00 +2426.7500 0.000000000000e+00 +2427.0000 0.000000000000e+00 +2427.2500 0.000000000000e+00 +2427.5000 0.000000000000e+00 +2427.7500 0.000000000000e+00 +2428.0000 0.000000000000e+00 +2428.2500 0.000000000000e+00 +2428.5000 0.000000000000e+00 +2428.7500 0.000000000000e+00 +2429.0000 0.000000000000e+00 +2429.2500 0.000000000000e+00 +2429.5000 0.000000000000e+00 +2429.7500 0.000000000000e+00 +2430.0000 0.000000000000e+00 +2430.2500 0.000000000000e+00 +2430.5000 0.000000000000e+00 +2430.7500 0.000000000000e+00 +2431.0000 0.000000000000e+00 +2431.2500 0.000000000000e+00 +2431.5000 0.000000000000e+00 +2431.7500 0.000000000000e+00 +2432.0000 0.000000000000e+00 +2432.2500 0.000000000000e+00 +2432.5000 0.000000000000e+00 +2432.7500 0.000000000000e+00 +2433.0000 0.000000000000e+00 +2433.2500 0.000000000000e+00 +2433.5000 0.000000000000e+00 +2433.7500 0.000000000000e+00 +2434.0000 0.000000000000e+00 +2434.2500 0.000000000000e+00 +2434.5000 0.000000000000e+00 +2434.7500 0.000000000000e+00 +2435.0000 0.000000000000e+00 +2435.2500 0.000000000000e+00 +2435.5000 0.000000000000e+00 +2435.7500 0.000000000000e+00 +2436.0000 0.000000000000e+00 +2436.2500 0.000000000000e+00 +2436.5000 0.000000000000e+00 +2436.7500 0.000000000000e+00 +2437.0000 0.000000000000e+00 +2437.2500 0.000000000000e+00 +2437.5000 0.000000000000e+00 +2437.7500 0.000000000000e+00 +2438.0000 0.000000000000e+00 +2438.2500 0.000000000000e+00 +2438.5000 0.000000000000e+00 +2438.7500 0.000000000000e+00 +2439.0000 0.000000000000e+00 +2439.2500 0.000000000000e+00 +2439.5000 0.000000000000e+00 +2439.7500 0.000000000000e+00 +2440.0000 0.000000000000e+00 +2440.2500 0.000000000000e+00 +2440.5000 0.000000000000e+00 +2440.7500 0.000000000000e+00 +2441.0000 0.000000000000e+00 +2441.2500 0.000000000000e+00 +2441.5000 0.000000000000e+00 +2441.7500 0.000000000000e+00 +2442.0000 0.000000000000e+00 +2442.2500 0.000000000000e+00 +2442.5000 0.000000000000e+00 +2442.7500 0.000000000000e+00 +2443.0000 0.000000000000e+00 +2443.2500 0.000000000000e+00 +2443.5000 0.000000000000e+00 +2443.7500 0.000000000000e+00 +2444.0000 0.000000000000e+00 +2444.2500 0.000000000000e+00 +2444.5000 0.000000000000e+00 +2444.7500 0.000000000000e+00 +2445.0000 0.000000000000e+00 +2445.2500 0.000000000000e+00 +2445.5000 0.000000000000e+00 +2445.7500 0.000000000000e+00 +2446.0000 0.000000000000e+00 +2446.2500 0.000000000000e+00 +2446.5000 0.000000000000e+00 +2446.7500 0.000000000000e+00 +2447.0000 0.000000000000e+00 +2447.2500 0.000000000000e+00 +2447.5000 0.000000000000e+00 +2447.7500 0.000000000000e+00 +2448.0000 0.000000000000e+00 +2448.2500 0.000000000000e+00 +2448.5000 0.000000000000e+00 +2448.7500 0.000000000000e+00 +2449.0000 0.000000000000e+00 +2449.2500 0.000000000000e+00 +2449.5000 0.000000000000e+00 +2449.7500 0.000000000000e+00 +2450.0000 0.000000000000e+00 +2450.2500 0.000000000000e+00 +2450.5000 0.000000000000e+00 +2450.7500 0.000000000000e+00 +2451.0000 0.000000000000e+00 +2451.2500 0.000000000000e+00 +2451.5000 0.000000000000e+00 +2451.7500 0.000000000000e+00 +2452.0000 0.000000000000e+00 +2452.2500 0.000000000000e+00 +2452.5000 0.000000000000e+00 +2452.7500 0.000000000000e+00 +2453.0000 0.000000000000e+00 +2453.2500 0.000000000000e+00 +2453.5000 0.000000000000e+00 +2453.7500 0.000000000000e+00 +2454.0000 0.000000000000e+00 +2454.2500 0.000000000000e+00 +2454.5000 0.000000000000e+00 +2454.7500 0.000000000000e+00 +2455.0000 0.000000000000e+00 +2455.2500 0.000000000000e+00 +2455.5000 0.000000000000e+00 +2455.7500 0.000000000000e+00 +2456.0000 0.000000000000e+00 +2456.2500 0.000000000000e+00 +2456.5000 0.000000000000e+00 +2456.7500 0.000000000000e+00 +2457.0000 0.000000000000e+00 +2457.2500 0.000000000000e+00 +2457.5000 0.000000000000e+00 +2457.7500 0.000000000000e+00 +2458.0000 0.000000000000e+00 +2458.2500 0.000000000000e+00 +2458.5000 0.000000000000e+00 +2458.7500 0.000000000000e+00 +2459.0000 0.000000000000e+00 +2459.2500 0.000000000000e+00 +2459.5000 0.000000000000e+00 +2459.7500 0.000000000000e+00 +2460.0000 0.000000000000e+00 +2460.2500 0.000000000000e+00 +2460.5000 0.000000000000e+00 +2460.7500 0.000000000000e+00 +2461.0000 0.000000000000e+00 +2461.2500 0.000000000000e+00 +2461.5000 0.000000000000e+00 +2461.7500 0.000000000000e+00 +2462.0000 0.000000000000e+00 +2462.2500 0.000000000000e+00 +2462.5000 0.000000000000e+00 +2462.7500 0.000000000000e+00 +2463.0000 0.000000000000e+00 +2463.2500 0.000000000000e+00 +2463.5000 0.000000000000e+00 +2463.7500 0.000000000000e+00 +2464.0000 0.000000000000e+00 +2464.2500 0.000000000000e+00 +2464.5000 0.000000000000e+00 +2464.7500 0.000000000000e+00 +2465.0000 0.000000000000e+00 +2465.2500 0.000000000000e+00 +2465.5000 0.000000000000e+00 +2465.7500 0.000000000000e+00 +2466.0000 0.000000000000e+00 +2466.2500 0.000000000000e+00 +2466.5000 0.000000000000e+00 +2466.7500 0.000000000000e+00 +2467.0000 0.000000000000e+00 +2467.2500 0.000000000000e+00 +2467.5000 0.000000000000e+00 +2467.7500 0.000000000000e+00 +2468.0000 0.000000000000e+00 +2468.2500 0.000000000000e+00 +2468.5000 0.000000000000e+00 +2468.7500 0.000000000000e+00 +2469.0000 0.000000000000e+00 +2469.2500 0.000000000000e+00 +2469.5000 0.000000000000e+00 +2469.7500 0.000000000000e+00 +2470.0000 0.000000000000e+00 +2470.2500 0.000000000000e+00 +2470.5000 0.000000000000e+00 +2470.7500 0.000000000000e+00 +2471.0000 0.000000000000e+00 +2471.2500 0.000000000000e+00 +2471.5000 0.000000000000e+00 +2471.7500 0.000000000000e+00 +2472.0000 0.000000000000e+00 +2472.2500 0.000000000000e+00 +2472.5000 0.000000000000e+00 +2472.7500 0.000000000000e+00 +2473.0000 0.000000000000e+00 +2473.2500 0.000000000000e+00 +2473.5000 0.000000000000e+00 +2473.7500 0.000000000000e+00 +2474.0000 0.000000000000e+00 +2474.2500 0.000000000000e+00 +2474.5000 0.000000000000e+00 +2474.7500 0.000000000000e+00 +2475.0000 0.000000000000e+00 +2475.2500 0.000000000000e+00 +2475.5000 0.000000000000e+00 +2475.7500 0.000000000000e+00 +2476.0000 0.000000000000e+00 +2476.2500 0.000000000000e+00 +2476.5000 0.000000000000e+00 +2476.7500 0.000000000000e+00 +2477.0000 0.000000000000e+00 +2477.2500 0.000000000000e+00 +2477.5000 0.000000000000e+00 +2477.7500 0.000000000000e+00 +2478.0000 0.000000000000e+00 +2478.2500 0.000000000000e+00 +2478.5000 0.000000000000e+00 +2478.7500 0.000000000000e+00 +2479.0000 0.000000000000e+00 +2479.2500 0.000000000000e+00 +2479.5000 0.000000000000e+00 +2479.7500 0.000000000000e+00 +2480.0000 0.000000000000e+00 +2480.2500 0.000000000000e+00 +2480.5000 0.000000000000e+00 +2480.7500 0.000000000000e+00 +2481.0000 0.000000000000e+00 +2481.2500 0.000000000000e+00 +2481.5000 0.000000000000e+00 +2481.7500 0.000000000000e+00 +2482.0000 0.000000000000e+00 +2482.2500 0.000000000000e+00 +2482.5000 0.000000000000e+00 +2482.7500 0.000000000000e+00 +2483.0000 0.000000000000e+00 +2483.2500 0.000000000000e+00 +2483.5000 0.000000000000e+00 +2483.7500 0.000000000000e+00 +2484.0000 0.000000000000e+00 +2484.2500 0.000000000000e+00 +2484.5000 0.000000000000e+00 +2484.7500 0.000000000000e+00 +2485.0000 0.000000000000e+00 +2485.2500 0.000000000000e+00 +2485.5000 0.000000000000e+00 +2485.7500 0.000000000000e+00 +2486.0000 0.000000000000e+00 +2486.2500 0.000000000000e+00 +2486.5000 0.000000000000e+00 +2486.7500 0.000000000000e+00 +2487.0000 0.000000000000e+00 +2487.2500 0.000000000000e+00 +2487.5000 0.000000000000e+00 +2487.7500 0.000000000000e+00 +2488.0000 0.000000000000e+00 +2488.2500 0.000000000000e+00 +2488.5000 0.000000000000e+00 +2488.7500 0.000000000000e+00 +2489.0000 0.000000000000e+00 +2489.2500 0.000000000000e+00 +2489.5000 0.000000000000e+00 +2489.7500 0.000000000000e+00 +2490.0000 0.000000000000e+00 +2490.2500 0.000000000000e+00 +2490.5000 0.000000000000e+00 +2490.7500 0.000000000000e+00 +2491.0000 0.000000000000e+00 +2491.2500 0.000000000000e+00 +2491.5000 0.000000000000e+00 +2491.7500 0.000000000000e+00 +2492.0000 0.000000000000e+00 +2492.2500 0.000000000000e+00 +2492.5000 0.000000000000e+00 +2492.7500 0.000000000000e+00 +2493.0000 0.000000000000e+00 +2493.2500 0.000000000000e+00 +2493.5000 0.000000000000e+00 +2493.7500 0.000000000000e+00 +2494.0000 0.000000000000e+00 +2494.2500 0.000000000000e+00 +2494.5000 0.000000000000e+00 +2494.7500 0.000000000000e+00 +2495.0000 0.000000000000e+00 +2495.2500 0.000000000000e+00 +2495.5000 0.000000000000e+00 +2495.7500 0.000000000000e+00 +2496.0000 0.000000000000e+00 +2496.2500 0.000000000000e+00 +2496.5000 0.000000000000e+00 +2496.7500 0.000000000000e+00 +2497.0000 0.000000000000e+00 +2497.2500 0.000000000000e+00 +2497.5000 0.000000000000e+00 +2497.7500 0.000000000000e+00 +2498.0000 0.000000000000e+00 +2498.2500 0.000000000000e+00 +2498.5000 0.000000000000e+00 +2498.7500 0.000000000000e+00 +2499.0000 0.000000000000e+00 +2499.2500 0.000000000000e+00 +2499.5000 0.000000000000e+00 +2499.7500 0.000000000000e+00 +2500.0000 0.000000000000e+00 +2500.2500 0.000000000000e+00 +2500.5000 0.000000000000e+00 +2500.7500 0.000000000000e+00 +2501.0000 0.000000000000e+00 +2501.2500 0.000000000000e+00 +2501.5000 0.000000000000e+00 +2501.7500 0.000000000000e+00 +2502.0000 0.000000000000e+00 +2502.2500 0.000000000000e+00 +2502.5000 0.000000000000e+00 +2502.7500 0.000000000000e+00 +2503.0000 0.000000000000e+00 +2503.2500 0.000000000000e+00 +2503.5000 0.000000000000e+00 +2503.7500 0.000000000000e+00 +2504.0000 0.000000000000e+00 +2504.2500 0.000000000000e+00 +2504.5000 0.000000000000e+00 +2504.7500 0.000000000000e+00 +2505.0000 0.000000000000e+00 +2505.2500 0.000000000000e+00 +2505.5000 0.000000000000e+00 +2505.7500 0.000000000000e+00 +2506.0000 0.000000000000e+00 +2506.2500 0.000000000000e+00 +2506.5000 0.000000000000e+00 +2506.7500 0.000000000000e+00 +2507.0000 0.000000000000e+00 +2507.2500 0.000000000000e+00 +2507.5000 0.000000000000e+00 +2507.7500 0.000000000000e+00 +2508.0000 0.000000000000e+00 +2508.2500 0.000000000000e+00 +2508.5000 0.000000000000e+00 +2508.7500 0.000000000000e+00 +2509.0000 0.000000000000e+00 +2509.2500 0.000000000000e+00 +2509.5000 0.000000000000e+00 +2509.7500 0.000000000000e+00 +2510.0000 0.000000000000e+00 +2510.2500 0.000000000000e+00 +2510.5000 0.000000000000e+00 +2510.7500 0.000000000000e+00 +2511.0000 0.000000000000e+00 +2511.2500 0.000000000000e+00 +2511.5000 0.000000000000e+00 +2511.7500 0.000000000000e+00 +2512.0000 0.000000000000e+00 +2512.2500 0.000000000000e+00 +2512.5000 0.000000000000e+00 +2512.7500 0.000000000000e+00 +2513.0000 0.000000000000e+00 +2513.2500 0.000000000000e+00 +2513.5000 0.000000000000e+00 +2513.7500 0.000000000000e+00 +2514.0000 0.000000000000e+00 +2514.2500 0.000000000000e+00 +2514.5000 0.000000000000e+00 +2514.7500 0.000000000000e+00 +2515.0000 0.000000000000e+00 +2515.2500 0.000000000000e+00 +2515.5000 0.000000000000e+00 +2515.7500 0.000000000000e+00 +2516.0000 0.000000000000e+00 +2516.2500 0.000000000000e+00 +2516.5000 0.000000000000e+00 +2516.7500 0.000000000000e+00 +2517.0000 0.000000000000e+00 +2517.2500 0.000000000000e+00 +2517.5000 0.000000000000e+00 +2517.7500 0.000000000000e+00 +2518.0000 0.000000000000e+00 +2518.2500 0.000000000000e+00 +2518.5000 0.000000000000e+00 +2518.7500 0.000000000000e+00 +2519.0000 0.000000000000e+00 +2519.2500 0.000000000000e+00 +2519.5000 0.000000000000e+00 +2519.7500 0.000000000000e+00 +2520.0000 0.000000000000e+00 +2520.2500 0.000000000000e+00 +2520.5000 0.000000000000e+00 +2520.7500 0.000000000000e+00 +2521.0000 0.000000000000e+00 +2521.2500 0.000000000000e+00 +2521.5000 0.000000000000e+00 +2521.7500 0.000000000000e+00 +2522.0000 0.000000000000e+00 +2522.2500 0.000000000000e+00 +2522.5000 0.000000000000e+00 +2522.7500 0.000000000000e+00 +2523.0000 0.000000000000e+00 +2523.2500 0.000000000000e+00 +2523.5000 0.000000000000e+00 +2523.7500 0.000000000000e+00 +2524.0000 0.000000000000e+00 +2524.2500 0.000000000000e+00 +2524.5000 0.000000000000e+00 +2524.7500 0.000000000000e+00 +2525.0000 0.000000000000e+00 +2525.2500 0.000000000000e+00 +2525.5000 0.000000000000e+00 +2525.7500 0.000000000000e+00 +2526.0000 0.000000000000e+00 +2526.2500 0.000000000000e+00 +2526.5000 0.000000000000e+00 +2526.7500 0.000000000000e+00 +2527.0000 0.000000000000e+00 +2527.2500 0.000000000000e+00 +2527.5000 0.000000000000e+00 +2527.7500 0.000000000000e+00 +2528.0000 0.000000000000e+00 +2528.2500 0.000000000000e+00 +2528.5000 0.000000000000e+00 +2528.7500 0.000000000000e+00 +2529.0000 0.000000000000e+00 +2529.2500 0.000000000000e+00 +2529.5000 0.000000000000e+00 +2529.7500 0.000000000000e+00 +2530.0000 0.000000000000e+00 +2530.2500 0.000000000000e+00 +2530.5000 0.000000000000e+00 +2530.7500 0.000000000000e+00 +2531.0000 0.000000000000e+00 +2531.2500 0.000000000000e+00 +2531.5000 0.000000000000e+00 +2531.7500 0.000000000000e+00 +2532.0000 0.000000000000e+00 +2532.2500 0.000000000000e+00 +2532.5000 0.000000000000e+00 +2532.7500 0.000000000000e+00 +2533.0000 0.000000000000e+00 +2533.2500 0.000000000000e+00 +2533.5000 0.000000000000e+00 +2533.7500 0.000000000000e+00 +2534.0000 0.000000000000e+00 +2534.2500 0.000000000000e+00 +2534.5000 0.000000000000e+00 +2534.7500 0.000000000000e+00 +2535.0000 0.000000000000e+00 +2535.2500 0.000000000000e+00 +2535.5000 0.000000000000e+00 +2535.7500 0.000000000000e+00 +2536.0000 0.000000000000e+00 +2536.2500 0.000000000000e+00 +2536.5000 0.000000000000e+00 +2536.7500 0.000000000000e+00 +2537.0000 0.000000000000e+00 +2537.2500 0.000000000000e+00 +2537.5000 0.000000000000e+00 +2537.7500 0.000000000000e+00 +2538.0000 0.000000000000e+00 +2538.2500 0.000000000000e+00 +2538.5000 0.000000000000e+00 +2538.7500 0.000000000000e+00 +2539.0000 0.000000000000e+00 +2539.2500 0.000000000000e+00 +2539.5000 0.000000000000e+00 +2539.7500 0.000000000000e+00 +2540.0000 0.000000000000e+00 +2540.2500 0.000000000000e+00 +2540.5000 0.000000000000e+00 +2540.7500 0.000000000000e+00 +2541.0000 0.000000000000e+00 +2541.2500 0.000000000000e+00 +2541.5000 0.000000000000e+00 +2541.7500 0.000000000000e+00 +2542.0000 0.000000000000e+00 +2542.2500 0.000000000000e+00 +2542.5000 0.000000000000e+00 +2542.7500 0.000000000000e+00 +2543.0000 0.000000000000e+00 +2543.2500 0.000000000000e+00 +2543.5000 0.000000000000e+00 +2543.7500 0.000000000000e+00 +2544.0000 0.000000000000e+00 +2544.2500 0.000000000000e+00 +2544.5000 0.000000000000e+00 +2544.7500 0.000000000000e+00 +2545.0000 0.000000000000e+00 +2545.2500 0.000000000000e+00 +2545.5000 0.000000000000e+00 +2545.7500 0.000000000000e+00 +2546.0000 0.000000000000e+00 +2546.2500 0.000000000000e+00 +2546.5000 0.000000000000e+00 +2546.7500 0.000000000000e+00 +2547.0000 0.000000000000e+00 +2547.2500 0.000000000000e+00 +2547.5000 0.000000000000e+00 +2547.7500 0.000000000000e+00 +2548.0000 0.000000000000e+00 +2548.2500 0.000000000000e+00 +2548.5000 0.000000000000e+00 +2548.7500 0.000000000000e+00 +2549.0000 0.000000000000e+00 +2549.2500 0.000000000000e+00 +2549.5000 0.000000000000e+00 +2549.7500 0.000000000000e+00 +2550.0000 0.000000000000e+00 +2550.2500 0.000000000000e+00 +2550.5000 0.000000000000e+00 +2550.7500 0.000000000000e+00 +2551.0000 0.000000000000e+00 +2551.2500 0.000000000000e+00 +2551.5000 0.000000000000e+00 +2551.7500 0.000000000000e+00 +2552.0000 0.000000000000e+00 +2552.2500 0.000000000000e+00 +2552.5000 0.000000000000e+00 +2552.7500 0.000000000000e+00 +2553.0000 0.000000000000e+00 +2553.2500 0.000000000000e+00 +2553.5000 0.000000000000e+00 +2553.7500 0.000000000000e+00 +2554.0000 0.000000000000e+00 +2554.2500 0.000000000000e+00 +2554.5000 0.000000000000e+00 +2554.7500 0.000000000000e+00 +2555.0000 0.000000000000e+00 +2555.2500 0.000000000000e+00 +2555.5000 0.000000000000e+00 +2555.7500 0.000000000000e+00 +2556.0000 0.000000000000e+00 +2556.2500 0.000000000000e+00 +2556.5000 0.000000000000e+00 +2556.7500 0.000000000000e+00 +2557.0000 0.000000000000e+00 +2557.2500 0.000000000000e+00 +2557.5000 0.000000000000e+00 +2557.7500 0.000000000000e+00 +2558.0000 0.000000000000e+00 +2558.2500 0.000000000000e+00 +2558.5000 0.000000000000e+00 +2558.7500 0.000000000000e+00 +2559.0000 0.000000000000e+00 +2559.2500 0.000000000000e+00 +2559.5000 0.000000000000e+00 +2559.7500 0.000000000000e+00 +2560.0000 0.000000000000e+00 +2560.2500 0.000000000000e+00 +2560.5000 0.000000000000e+00 +2560.7500 0.000000000000e+00 +2561.0000 0.000000000000e+00 +2561.2500 0.000000000000e+00 +2561.5000 0.000000000000e+00 +2561.7500 0.000000000000e+00 +2562.0000 0.000000000000e+00 +2562.2500 0.000000000000e+00 +2562.5000 0.000000000000e+00 +2562.7500 0.000000000000e+00 +2563.0000 0.000000000000e+00 +2563.2500 0.000000000000e+00 +2563.5000 0.000000000000e+00 +2563.7500 0.000000000000e+00 +2564.0000 0.000000000000e+00 +2564.2500 0.000000000000e+00 +2564.5000 0.000000000000e+00 +2564.7500 0.000000000000e+00 +2565.0000 0.000000000000e+00 +2565.2500 0.000000000000e+00 +2565.5000 0.000000000000e+00 +2565.7500 0.000000000000e+00 +2566.0000 0.000000000000e+00 +2566.2500 0.000000000000e+00 +2566.5000 0.000000000000e+00 +2566.7500 0.000000000000e+00 +2567.0000 0.000000000000e+00 +2567.2500 0.000000000000e+00 +2567.5000 0.000000000000e+00 +2567.7500 0.000000000000e+00 +2568.0000 0.000000000000e+00 +2568.2500 0.000000000000e+00 +2568.5000 0.000000000000e+00 +2568.7500 0.000000000000e+00 +2569.0000 0.000000000000e+00 +2569.2500 0.000000000000e+00 +2569.5000 0.000000000000e+00 +2569.7500 0.000000000000e+00 +2570.0000 0.000000000000e+00 +2570.2500 0.000000000000e+00 +2570.5000 0.000000000000e+00 +2570.7500 0.000000000000e+00 +2571.0000 0.000000000000e+00 +2571.2500 0.000000000000e+00 +2571.5000 0.000000000000e+00 +2571.7500 0.000000000000e+00 +2572.0000 0.000000000000e+00 +2572.2500 0.000000000000e+00 +2572.5000 0.000000000000e+00 +2572.7500 0.000000000000e+00 +2573.0000 0.000000000000e+00 +2573.2500 0.000000000000e+00 +2573.5000 0.000000000000e+00 +2573.7500 0.000000000000e+00 +2574.0000 0.000000000000e+00 +2574.2500 0.000000000000e+00 +2574.5000 0.000000000000e+00 +2574.7500 0.000000000000e+00 +2575.0000 0.000000000000e+00 +2575.2500 0.000000000000e+00 +2575.5000 0.000000000000e+00 +2575.7500 0.000000000000e+00 +2576.0000 0.000000000000e+00 +2576.2500 0.000000000000e+00 +2576.5000 0.000000000000e+00 +2576.7500 0.000000000000e+00 +2577.0000 0.000000000000e+00 +2577.2500 0.000000000000e+00 +2577.5000 0.000000000000e+00 +2577.7500 0.000000000000e+00 +2578.0000 0.000000000000e+00 +2578.2500 0.000000000000e+00 +2578.5000 0.000000000000e+00 +2578.7500 0.000000000000e+00 +2579.0000 0.000000000000e+00 +2579.2500 0.000000000000e+00 +2579.5000 0.000000000000e+00 +2579.7500 0.000000000000e+00 +2580.0000 0.000000000000e+00 +2580.2500 0.000000000000e+00 +2580.5000 0.000000000000e+00 +2580.7500 0.000000000000e+00 +2581.0000 0.000000000000e+00 +2581.2500 0.000000000000e+00 +2581.5000 0.000000000000e+00 +2581.7500 0.000000000000e+00 +2582.0000 0.000000000000e+00 +2582.2500 0.000000000000e+00 +2582.5000 0.000000000000e+00 +2582.7500 0.000000000000e+00 +2583.0000 0.000000000000e+00 +2583.2500 0.000000000000e+00 +2583.5000 0.000000000000e+00 +2583.7500 0.000000000000e+00 +2584.0000 0.000000000000e+00 +2584.2500 0.000000000000e+00 +2584.5000 0.000000000000e+00 +2584.7500 0.000000000000e+00 +2585.0000 0.000000000000e+00 +2585.2500 0.000000000000e+00 +2585.5000 0.000000000000e+00 +2585.7500 0.000000000000e+00 +2586.0000 0.000000000000e+00 +2586.2500 0.000000000000e+00 +2586.5000 0.000000000000e+00 +2586.7500 0.000000000000e+00 +2587.0000 0.000000000000e+00 +2587.2500 0.000000000000e+00 +2587.5000 0.000000000000e+00 +2587.7500 0.000000000000e+00 +2588.0000 0.000000000000e+00 +2588.2500 0.000000000000e+00 +2588.5000 0.000000000000e+00 +2588.7500 0.000000000000e+00 +2589.0000 0.000000000000e+00 +2589.2500 0.000000000000e+00 +2589.5000 0.000000000000e+00 +2589.7500 0.000000000000e+00 +2590.0000 0.000000000000e+00 +2590.2500 0.000000000000e+00 +2590.5000 0.000000000000e+00 +2590.7500 0.000000000000e+00 +2591.0000 0.000000000000e+00 +2591.2500 0.000000000000e+00 +2591.5000 0.000000000000e+00 +2591.7500 0.000000000000e+00 +2592.0000 0.000000000000e+00 +2592.2500 0.000000000000e+00 +2592.5000 0.000000000000e+00 +2592.7500 0.000000000000e+00 +2593.0000 0.000000000000e+00 +2593.2500 0.000000000000e+00 +2593.5000 0.000000000000e+00 +2593.7500 0.000000000000e+00 +2594.0000 0.000000000000e+00 +2594.2500 0.000000000000e+00 +2594.5000 0.000000000000e+00 +2594.7500 0.000000000000e+00 +2595.0000 0.000000000000e+00 +2595.2500 0.000000000000e+00 +2595.5000 0.000000000000e+00 +2595.7500 0.000000000000e+00 +2596.0000 0.000000000000e+00 +2596.2500 0.000000000000e+00 +2596.5000 0.000000000000e+00 +2596.7500 0.000000000000e+00 +2597.0000 0.000000000000e+00 +2597.2500 0.000000000000e+00 +2597.5000 0.000000000000e+00 +2597.7500 0.000000000000e+00 +2598.0000 0.000000000000e+00 +2598.2500 0.000000000000e+00 +2598.5000 0.000000000000e+00 +2598.7500 0.000000000000e+00 +2599.0000 0.000000000000e+00 +2599.2500 0.000000000000e+00 +2599.5000 0.000000000000e+00 +2599.7500 0.000000000000e+00 +2600.0000 0.000000000000e+00 +2600.2500 0.000000000000e+00 +2600.5000 0.000000000000e+00 +2600.7500 0.000000000000e+00 +2601.0000 0.000000000000e+00 +2601.2500 0.000000000000e+00 +2601.5000 0.000000000000e+00 +2601.7500 0.000000000000e+00 +2602.0000 0.000000000000e+00 +2602.2500 0.000000000000e+00 +2602.5000 0.000000000000e+00 +2602.7500 0.000000000000e+00 +2603.0000 0.000000000000e+00 +2603.2500 0.000000000000e+00 +2603.5000 0.000000000000e+00 +2603.7500 0.000000000000e+00 +2604.0000 0.000000000000e+00 +2604.2500 0.000000000000e+00 +2604.5000 0.000000000000e+00 +2604.7500 0.000000000000e+00 +2605.0000 0.000000000000e+00 +2605.2500 0.000000000000e+00 +2605.5000 0.000000000000e+00 +2605.7500 0.000000000000e+00 +2606.0000 0.000000000000e+00 +2606.2500 0.000000000000e+00 +2606.5000 0.000000000000e+00 +2606.7500 0.000000000000e+00 +2607.0000 0.000000000000e+00 +2607.2500 0.000000000000e+00 +2607.5000 0.000000000000e+00 +2607.7500 0.000000000000e+00 +2608.0000 0.000000000000e+00 +2608.2500 0.000000000000e+00 +2608.5000 0.000000000000e+00 +2608.7500 0.000000000000e+00 +2609.0000 0.000000000000e+00 +2609.2500 0.000000000000e+00 +2609.5000 0.000000000000e+00 +2609.7500 0.000000000000e+00 +2610.0000 0.000000000000e+00 +2610.2500 0.000000000000e+00 +2610.5000 0.000000000000e+00 +2610.7500 0.000000000000e+00 +2611.0000 0.000000000000e+00 +2611.2500 0.000000000000e+00 +2611.5000 0.000000000000e+00 +2611.7500 0.000000000000e+00 +2612.0000 0.000000000000e+00 +2612.2500 0.000000000000e+00 +2612.5000 0.000000000000e+00 +2612.7500 0.000000000000e+00 +2613.0000 0.000000000000e+00 +2613.2500 0.000000000000e+00 +2613.5000 0.000000000000e+00 +2613.7500 0.000000000000e+00 +2614.0000 0.000000000000e+00 +2614.2500 0.000000000000e+00 +2614.5000 0.000000000000e+00 +2614.7500 0.000000000000e+00 +2615.0000 0.000000000000e+00 +2615.2500 0.000000000000e+00 +2615.5000 0.000000000000e+00 +2615.7500 0.000000000000e+00 +2616.0000 0.000000000000e+00 +2616.2500 0.000000000000e+00 +2616.5000 0.000000000000e+00 +2616.7500 0.000000000000e+00 +2617.0000 0.000000000000e+00 +2617.2500 0.000000000000e+00 +2617.5000 0.000000000000e+00 +2617.7500 0.000000000000e+00 +2618.0000 0.000000000000e+00 +2618.2500 0.000000000000e+00 +2618.5000 0.000000000000e+00 +2618.7500 0.000000000000e+00 +2619.0000 0.000000000000e+00 +2619.2500 0.000000000000e+00 +2619.5000 0.000000000000e+00 +2619.7500 0.000000000000e+00 +2620.0000 0.000000000000e+00 +2620.2500 0.000000000000e+00 +2620.5000 0.000000000000e+00 +2620.7500 0.000000000000e+00 +2621.0000 0.000000000000e+00 +2621.2500 0.000000000000e+00 +2621.5000 0.000000000000e+00 +2621.7500 0.000000000000e+00 +2622.0000 0.000000000000e+00 +2622.2500 0.000000000000e+00 +2622.5000 0.000000000000e+00 +2622.7500 0.000000000000e+00 +2623.0000 0.000000000000e+00 +2623.2500 0.000000000000e+00 +2623.5000 0.000000000000e+00 +2623.7500 0.000000000000e+00 +2624.0000 0.000000000000e+00 +2624.2500 0.000000000000e+00 +2624.5000 0.000000000000e+00 +2624.7500 0.000000000000e+00 +2625.0000 0.000000000000e+00 +2625.2500 0.000000000000e+00 +2625.5000 0.000000000000e+00 +2625.7500 0.000000000000e+00 +2626.0000 0.000000000000e+00 +2626.2500 0.000000000000e+00 +2626.5000 0.000000000000e+00 +2626.7500 0.000000000000e+00 +2627.0000 0.000000000000e+00 +2627.2500 0.000000000000e+00 +2627.5000 0.000000000000e+00 +2627.7500 0.000000000000e+00 +2628.0000 0.000000000000e+00 +2628.2500 0.000000000000e+00 +2628.5000 0.000000000000e+00 +2628.7500 0.000000000000e+00 +2629.0000 0.000000000000e+00 +2629.2500 0.000000000000e+00 +2629.5000 0.000000000000e+00 +2629.7500 0.000000000000e+00 +2630.0000 0.000000000000e+00 +2630.2500 0.000000000000e+00 +2630.5000 0.000000000000e+00 +2630.7500 0.000000000000e+00 +2631.0000 0.000000000000e+00 +2631.2500 0.000000000000e+00 +2631.5000 0.000000000000e+00 +2631.7500 0.000000000000e+00 +2632.0000 0.000000000000e+00 +2632.2500 0.000000000000e+00 +2632.5000 0.000000000000e+00 +2632.7500 0.000000000000e+00 +2633.0000 0.000000000000e+00 +2633.2500 0.000000000000e+00 +2633.5000 0.000000000000e+00 +2633.7500 0.000000000000e+00 +2634.0000 0.000000000000e+00 +2634.2500 0.000000000000e+00 +2634.5000 0.000000000000e+00 +2634.7500 0.000000000000e+00 +2635.0000 0.000000000000e+00 +2635.2500 0.000000000000e+00 +2635.5000 0.000000000000e+00 +2635.7500 0.000000000000e+00 +2636.0000 0.000000000000e+00 +2636.2500 0.000000000000e+00 +2636.5000 0.000000000000e+00 +2636.7500 0.000000000000e+00 +2637.0000 0.000000000000e+00 +2637.2500 0.000000000000e+00 +2637.5000 0.000000000000e+00 +2637.7500 0.000000000000e+00 +2638.0000 0.000000000000e+00 +2638.2500 0.000000000000e+00 +2638.5000 0.000000000000e+00 +2638.7500 0.000000000000e+00 +2639.0000 0.000000000000e+00 +2639.2500 0.000000000000e+00 +2639.5000 0.000000000000e+00 +2639.7500 0.000000000000e+00 +2640.0000 0.000000000000e+00 +2640.2500 0.000000000000e+00 +2640.5000 0.000000000000e+00 +2640.7500 0.000000000000e+00 +2641.0000 0.000000000000e+00 +2641.2500 0.000000000000e+00 +2641.5000 0.000000000000e+00 +2641.7500 0.000000000000e+00 +2642.0000 0.000000000000e+00 +2642.2500 0.000000000000e+00 +2642.5000 0.000000000000e+00 +2642.7500 0.000000000000e+00 +2643.0000 0.000000000000e+00 +2643.2500 0.000000000000e+00 +2643.5000 0.000000000000e+00 +2643.7500 0.000000000000e+00 +2644.0000 0.000000000000e+00 +2644.2500 0.000000000000e+00 +2644.5000 0.000000000000e+00 +2644.7500 0.000000000000e+00 +2645.0000 0.000000000000e+00 +2645.2500 0.000000000000e+00 +2645.5000 0.000000000000e+00 +2645.7500 0.000000000000e+00 +2646.0000 0.000000000000e+00 +2646.2500 0.000000000000e+00 +2646.5000 0.000000000000e+00 +2646.7500 0.000000000000e+00 +2647.0000 0.000000000000e+00 +2647.2500 0.000000000000e+00 +2647.5000 0.000000000000e+00 +2647.7500 0.000000000000e+00 +2648.0000 0.000000000000e+00 +2648.2500 0.000000000000e+00 +2648.5000 0.000000000000e+00 +2648.7500 0.000000000000e+00 +2649.0000 0.000000000000e+00 +2649.2500 0.000000000000e+00 +2649.5000 0.000000000000e+00 +2649.7500 9.881312916825e-323 +2650.0000 9.881312916825e-323 +2650.2500 3.013800439632e-322 +2650.5000 5.039469587581e-322 +2650.7500 1.012834573975e-321 +2651.0000 2.025669147949e-321 +2651.2500 3.947584510272e-321 +2651.5000 7.909990989918e-321 +2651.7500 1.561741506504e-320 +2652.0000 3.073582382778e-320 +2652.2500 6.066137999639e-320 +2652.5000 1.195243610419e-319 +2652.7500 2.356890756921e-319 +2653.0000 4.644760543118e-319 +2653.2500 9.149453475640e-319 +2653.5000 1.802094561893e-318 +2653.7500 3.547999037885e-318 +2654.0000 6.983415337051e-318 +2654.2500 1.374093397951e-317 +2654.5000 2.702880482113e-317 +2654.7500 5.314975907737e-317 +2655.0000 1.044819198129e-316 +2655.2500 2.053265925696e-316 +2655.5000 4.033790516948e-316 +2655.7500 7.922201871762e-316 +2656.0000 1.555401972339e-315 +2656.2500 3.052837781711e-315 +2656.5000 5.990031164125e-315 +2656.7500 1.174948206426e-314 +2657.0000 2.303947902655e-314 +2657.2500 4.516384143768e-314 +2657.5000 8.850613605967e-314 +2657.7500 1.733884549532e-313 +2658.0000 3.395715208153e-313 +2658.2500 6.648239108074e-313 +2658.5000 1.301206696420e-312 +2658.7500 2.545952146064e-312 +2659.0000 4.979875335956e-312 +2659.2500 9.737578985687e-312 +2659.5000 1.903477746370e-311 +2659.7500 3.719708456932e-311 +2660.0000 7.266650761516e-311 +2660.2500 1.419135821096e-310 +2660.5000 2.770626121752e-310 +2660.7500 5.407495596726e-310 +2661.0000 1.055063775892e-309 +2661.2500 2.057906023321e-309 +2661.5000 4.012699632618e-309 +2661.7500 7.821896302059e-309 +2662.0000 1.524234347424e-308 +2662.2500 2.969311236364e-308 +2662.5000 5.782611127390e-308 +2662.7500 1.125787809048e-307 +2663.0000 2.191055524536e-307 +2663.2500 4.262991957306e-307 +2663.5000 8.291630326234e-307 +2663.7500 1.612239797479e-306 +2664.0000 3.133889154615e-306 +2664.2500 6.089784348165e-306 +2664.5000 1.182999289854e-305 +2664.7500 2.297372098674e-305 +2665.0000 4.460078358058e-305 +2665.2500 8.656013466347e-305 +2665.5000 1.679413523946e-304 +2665.7500 3.257329233944e-304 +2666.0000 6.315823081043e-304 +2666.2500 1.224228662317e-303 +2666.5000 2.372244337061e-303 +2666.7500 4.595371030602e-303 +2667.0000 8.899098910335e-303 +2667.2500 1.722803612477e-302 +2667.5000 3.334185833189e-302 +2667.7500 6.450718914356e-302 +2668.0000 1.247644116097e-301 +2668.2500 2.412334987010e-301 +2668.5000 4.662821568476e-301 +2668.7500 9.009989108996e-301 +2669.0000 1.740459907926e-300 +2669.2500 3.360996571860e-300 +2669.5000 6.488381893369e-300 +2669.7500 1.252186525557e-299 +2670.0000 2.415827590605e-299 +2670.2500 4.659369323638e-299 +2670.5000 8.983645860289e-299 +2670.7500 1.731579355171e-298 +2671.0000 3.336540980893e-298 +2671.2500 6.427096429369e-298 +2671.5000 1.237648890393e-297 +2671.7500 2.382562961312e-297 +2672.0000 4.585171705162e-297 +2672.2500 8.821269892575e-297 +2672.5000 1.696566566490e-296 +2672.7500 3.261932630535e-296 +2673.0000 6.269650885299e-296 +2673.2500 1.204691977910e-295 +2673.5000 2.314051215133e-295 +2673.7500 4.443592277764e-295 +2674.0000 8.530210111015e-295 +2674.2500 1.637003252468e-294 +2674.5000 3.140535048401e-294 +2674.7500 6.023127203655e-294 +2675.0000 1.154794520455e-293 +2675.2500 2.213358089710e-293 +2675.5000 4.240947913601e-293 +2675.7500 8.123412061719e-293 +2676.0000 1.555529733447e-292 +2676.2500 2.977710271098e-292 +2676.5000 5.698372685200e-292 +2676.7500 1.090143196666e-291 +2677.0000 2.084877472047e-291 +2677.2500 3.986041473565e-291 +2677.5000 7.618463271852e-291 +2677.7500 1.455650895596e-290 +2678.0000 2.780426213360e-290 +2678.2500 5.309208797556e-290 +2678.5000 1.013473798056e-289 +2678.7500 1.934013643654e-289 +2679.0000 3.689528170521e-289 +2679.2500 7.036333516531e-289 +2679.5000 1.341486452169e-288 +2679.7500 2.556762891141e-288 +2680.0000 4.871457369572e-288 +2680.2500 9.278796439213e-288 +2680.5000 1.766805232242e-287 +2680.7500 3.363179096563e-287 +2681.0000 6.399935575014e-287 +2681.2500 1.217490267259e-286 +2681.5000 2.315366166570e-286 +2681.7500 4.401879567903e-286 +2682.0000 8.366058918675e-286 +2682.2500 1.589527222300e-285 +2682.5000 3.019112596581e-285 +2682.7500 5.732643556800e-285 +2683.0000 1.088165260453e-284 +2683.2500 2.064900187644e-284 +2683.5000 3.917126161547e-284 +2683.7500 7.428486594446e-284 +2684.0000 1.408307257796e-283 +2684.2500 2.669062723338e-283 +2684.5000 5.056900765126e-283 +2684.7500 9.577989831072e-283 +2685.0000 1.813546104997e-282 +2685.2500 3.432789074028e-282 +2685.5000 6.495759341460e-282 +2685.7500 1.228788173575e-281 +2686.0000 2.323744678315e-281 +2686.2500 4.393029124833e-281 +2686.5000 8.302407505544e-281 +2686.7500 1.568585869672e-280 +2687.0000 2.962626068728e-280 +2687.2500 5.593835239915e-280 +2687.5000 1.055861100887e-279 +2687.7500 1.992361766824e-279 +2688.0000 3.758321228091e-279 +2688.2500 7.087350059894e-279 +2688.5000 1.336097527282e-278 +2688.7500 2.518005796846e-278 +2689.0000 4.743944287776e-278 +2689.2500 8.934838847031e-278 +2689.5000 1.682279515213e-277 +2689.7500 3.166459070337e-277 +2690.0000 5.958183712785e-277 +2690.2500 1.120774368957e-276 +2690.5000 2.107593158975e-276 +2690.7500 3.962047329716e-276 +2691.0000 7.445893625718e-276 +2691.2500 1.398872990845e-275 +2691.5000 2.627265916692e-275 +2691.7500 4.932806366410e-275 +2692.0000 9.258665484127e-275 +2692.2500 1.737268751642e-274 +2692.5000 3.258741505506e-274 +2692.7500 6.110786429904e-274 +2693.0000 1.145535594527e-273 +2693.2500 2.146764279986e-273 +2693.5000 4.021836599674e-273 +2693.7500 7.532320186970e-273 +2694.0000 1.410254237123e-272 +2694.2500 2.639552734444e-272 +2694.5000 4.938869628077e-272 +2694.7500 9.238236389022e-272 +2695.0000 1.727487322586e-271 +2695.2500 3.229274450241e-271 +2695.5000 6.034750696794e-271 +2695.7500 1.127399921121e-270 +2696.0000 2.105527684746e-270 +2696.2500 3.931046687014e-270 +2696.5000 7.337020573386e-270 +2696.7500 1.368975139756e-269 +2697.0000 2.553498903816e-269 +2697.2500 4.761459334381e-269 +2697.5000 8.875825859516e-269 +2697.7500 1.654023805863e-268 +2698.0000 3.081335791354e-268 +2698.2500 5.738529132645e-268 +2698.5000 1.068381705186e-267 +2698.7500 1.988458740974e-267 +2699.0000 3.699738383996e-267 +2699.2500 6.881604927220e-267 +2699.5000 1.279595625499e-266 +2699.7500 2.378592509825e-266 +2700.0000 4.420095338825e-266 +2700.2500 8.211216756508e-266 +2700.5000 1.524922196755e-265 +2700.7500 2.831080022928e-265 +2701.0000 5.254372936563e-265 +2701.2500 9.748862228410e-265 +2701.5000 1.808219970863e-264 +2701.7500 3.352840391972e-264 +2702.0000 6.214966442314e-264 +2702.2500 1.151672471568e-263 +2702.5000 2.133454935930e-263 +2702.7500 3.950956531481e-263 +2703.0000 7.314511367439e-263 +2703.2500 1.353731942708e-262 +2703.5000 2.504634301522e-262 +2703.7500 4.632551556345e-262 +2704.0000 8.565653230748e-262 +2704.2500 1.583306540286e-261 +2704.5000 2.925727089410e-261 +2704.7500 5.404641727641e-261 +2705.0000 9.980775730828e-261 +2705.2500 1.842578393122e-260 +2705.5000 3.400571738966e-260 +2705.7500 6.273966541781e-260 +2706.0000 1.157168879817e-259 +2706.2500 2.133612675095e-259 +2706.5000 3.932771463668e-259 +2706.7500 7.246797524668e-259 +2707.0000 1.334927976362e-258 +2707.2500 2.458294063071e-258 +2707.5000 4.525578682100e-258 +2707.7500 8.328728358202e-258 +2708.0000 1.532313280953e-257 +2708.2500 2.818257840244e-257 +2708.5000 5.181770475308e-257 +2708.7500 9.524450096277e-257 +2709.0000 1.750112389640e-256 +2709.2500 3.214817015004e-256 +2709.5000 5.903517668784e-256 +2709.7500 1.083751637738e-255 +2710.0000 1.988900039715e-255 +2710.2500 3.648887186267e-255 +2710.5000 6.692250773561e-255 +2710.7500 1.227010465905e-254 +2711.0000 2.248995663021e-254 +2711.2500 4.120911227888e-254 +2711.5000 7.548526614745e-254 +2711.7500 1.382278052714e-253 +2712.0000 2.530421825206e-253 +2712.2500 4.630786168171e-253 +2712.5000 8.471899992755e-253 +2712.7500 1.549427300790e-252 +2713.0000 2.832864994116e-252 +2713.2500 5.177794885495e-252 +2713.5000 9.460805126785e-252 +2713.7500 1.728126947011e-251 +2714.0000 3.155640186380e-251 +2714.2500 5.760545408213e-251 +2714.5000 1.051245188734e-250 +2714.7500 1.917823908758e-250 +2715.0000 3.497661095574e-250 +2715.2500 6.376920677815e-250 +2715.5000 1.162274190335e-249 +2715.7500 2.117729388515e-249 +2716.0000 3.857417298764e-249 +2716.2500 7.024041593621e-249 +2716.5000 1.278620950379e-248 +2716.7500 2.326809607158e-248 +2717.0000 4.232960063855e-248 +2717.2500 7.698245993228e-248 +2717.5000 1.399599210501e-247 +2717.7500 2.543781964012e-247 +2718.0000 4.621898133400e-247 +2718.2500 8.395085929395e-247 +2718.5000 1.524383407499e-246 +2718.7500 2.767117308298e-246 +2719.0000 5.021404640468e-246 +2719.2500 9.109345180466e-246 +2719.5000 1.652012729570e-245 +2719.7500 2.995048852679e-245 +2720.0000 5.428236021274e-245 +2720.2500 9.835078384252e-245 +2720.5000 1.781399062029e-244 +2720.7500 3.225588068530e-244 +2721.0000 5.838763434236e-244 +2721.2500 1.056567252804e-243 +2721.5000 1.911338920917e-243 +2721.7500 3.456547679543e-243 +2722.0000 6.249016786333e-243 +2722.2500 1.129393078041e-242 +2722.5000 2.040529336777e-242 +2722.7500 3.685571623015e-242 +2723.0000 6.654741019612e-242 +2723.2500 1.201217784075e-241 +2723.5000 2.167587504988e-241 +2723.7500 3.910171585876e-241 +2724.0000 7.051463840630e-241 +2724.2500 1.271238514253e-240 +2724.5000 2.291073869301e-240 +2724.7500 4.127769456462e-240 +2725.0000 7.434573603981e-240 +2725.2500 1.338631341252e-239 +2725.5000 2.409518158352e-239 +2725.7500 4.335744774930e-239 +2726.0000 7.799405609242e-239 +2726.2500 1.402566930005e-238 +2726.5000 2.521447757817e-238 +2726.7500 4.531486027811e-238 +2727.0000 8.141334660990e-238 +2727.2500 1.462227208628e-237 +2727.5000 2.625417680579e-237 +2727.7500 4.712444427546e-237 +2728.0000 8.455871395488e-237 +2728.2500 1.516822590241e-236 +2728.5000 2.720041300253e-236 +2728.7500 4.876188657285e-236 +2729.0000 8.738759614567e-236 +2729.2500 1.565609245925e-235 +2729.5000 2.804020945379e-235 +2729.7500 5.020458954550e-235 +2730.0000 8.986071703643e-235 +2730.2500 1.607905904767e-234 +2730.5000 2.876177417073e-234 +2730.7500 5.143218861842e-234 +2731.0000 9.194299158599e-234 +2731.2500 1.643109652869e-233 +2731.5000 2.935477495028e-233 +2731.7500 5.242702992663e-233 +2732.0000 9.360435312519e-233 +2732.2500 1.670710220289e-232 +2732.5000 2.981058536649e-232 +2732.7500 5.317459249311e-232 +2733.0000 9.482047539173e-232 +2733.2500 1.690302283180e-231 +2733.5000 3.012249351388e-231 +2733.7500 5.366384082181e-231 +2734.0000 9.557336510943e-231 +2734.2500 1.701595366756e-230 +2734.5000 3.028586644496e-230 +2734.7500 5.388749594234e-230 +2735.0000 9.585180493966e-230 +2735.2500 1.704421010935e-229 +2735.5000 3.029826467163e-229 +2735.7500 5.384221560198e-229 +2736.0000 9.565163156450e-229 +2736.2500 1.698736951613e-228 +2736.5000 3.015950277514e-228 +2736.7500 5.352867737061e-228 +2737.0000 9.497583926647e-228 +2737.2500 1.684628172513e-227 +2737.5000 2.987165402013e-227 +2737.7500 5.295156177035e-227 +2738.0000 9.383450540290e-227 +2738.2500 1.662304791012e-226 +2738.5000 2.943899881200e-226 +2738.7500 5.211943601699e-226 +2739.0000 9.224454036755e-226 +2739.2500 1.632096851477e-225 +2739.5000 2.886791878880e-225 +2739.7500 5.104454240935e-225 +2740.0000 9.022927071058e-225 +2740.2500 1.594446206409e-224 +2740.5000 2.816674020998e-224 +2740.7500 4.974249867173e-224 +2741.0000 8.781786978047e-224 +2741.2500 1.549895764554e-223 +2741.5000 2.734553201355e-223 +2741.7500 4.823192050036e-223 +2742.0000 8.504465530889e-223 +2742.2500 1.499076471578e-222 +2742.5000 2.641586538562e-222 +2742.7500 4.653397905980e-222 +2743.0000 8.194827756661e-222 +2743.2500 1.442692459445e-221 +2743.5000 2.539054286121e-221 +2743.7500 4.467190811865e-221 +2744.0000 7.857082490607e-221 +2744.2500 1.381504852440e-220 +2744.5000 2.428330580691e-220 +2744.7500 4.267047683145e-220 +2745.0000 7.495687555754e-220 +2745.2500 1.316314748983e-219 +2745.5000 2.310852959746e-219 +2745.7500 4.055544482568e-219 +2746.0000 7.115252540507e-219 +2746.2500 1.247945908342e-218 +2746.5000 2.188091588016e-218 +2746.7500 3.835301623146e-218 +2747.0000 6.720442113671e-218 +2747.2500 1.177227660279e-217 +2747.5000 2.061519103433e-217 +2747.7500 3.608930862435e-217 +2748.0000 6.315882670243e-217 +2748.2500 1.104978524954e-216 +2748.5000 1.932581930473e-216 +2748.7500 3.378985159312e-216 +2749.0000 5.906074853560e-216 +2749.2500 1.031990982222e-215 +2749.5000 1.802673816149e-215 +2749.7500 3.147912787972e-215 +2750.0000 5.495314165565e-215 +2750.2500 9.590177668171e-215 +2750.5000 1.673112226953e-214 +2750.7500 2.918016786791e-214 +2751.0000 5.087621476335e-214 +2751.2500 8.867599922290e-214 +2751.5000 1.545118110281e-213 +2751.7500 2.691420573987e-213 +2752.0000 4.686684797525e-213 +2752.2500 8.158573253222e-213 +2752.5000 1.419799378048e-212 +2752.7500 2.470040299852e-212 +2753.0000 4.295813214506e-212 +2753.2500 7.468803497040e-212 +2753.5000 1.298138320548e-211 +2753.7500 2.255564239222e-211 +2754.0000 3.917903400249e-211 +2754.2500 6.803251725001e-211 +2754.5000 1.180983011573e-210 +2754.7500 2.049439269498e-210 +2755.0000 3.555418681093e-210 +2755.2500 6.166102499936e-210 +2755.5000 1.069042627794e-209 +2755.7500 1.852864239434e-209 +2756.0000 3.210380208277e-209 +2756.2500 5.560753356349e-209 +2756.5000 9.628864813589e-209 +2756.7500 1.666789820931e-208 +2757.0000 2.884369424456e-208 +2757.2500 4.989823917135e-208 +2757.5000 8.629464589441e-208 +2757.7500 1.491924257008e-207 +2758.0000 2.578540712537e-207 +2758.2500 4.455182553129e-207 +2758.5000 7.695224758590e-207 +2758.7500 1.328744278576e-206 +2759.0000 2.293642882179e-206 +2759.2500 3.957988111510e-206 +2759.5000 6.827904919852e-206 +2759.7500 1.177510363058e-205 +2760.0000 2.030047990592e-205 +2760.2500 3.498743989429e-205 +2760.5000 6.028125977186e-205 +2760.7500 1.038285449424e-204 +2761.0000 1.787785908246e-204 +2761.2500 3.077361707756e-204 +2761.5000 5.295486619751e-204 +2761.7500 9.109562051244e-204 +2762.0000 1.566583022855e-203 +2762.2500 2.693231138072e-203 +2762.5000 4.628690390086e-203 +2762.7500 7.952559574049e-203 +2763.0000 1.365903519942e-202 +2763.2500 2.345294641207e-202 +2763.5000 4.025678537956e-202 +2763.7500 6.907884496700e-202 +2764.0000 1.184991776420e-201 +2764.2500 2.032122571044e-201 +2764.5000 3.483764240003e-201 +2764.7500 5.970516574612e-201 +2765.0000 1.022914544735e-200 +2765.2500 1.751987864207e-200 +2765.5000 2.999764266182e-200 +2765.7500 5.134609919583e-200 +2766.0000 8.786017779735e-200 +2766.2500 1.502937754711e-199 +2766.5000 2.570124757658e-199 +2766.7500 4.393713254010e-199 +2767.0000 7.508851398530e-199 +2767.2500 1.282861002827e-198 +2767.5000 2.191038412344e-198 +2767.7500 3.740973863311e-198 +2768.0000 6.385334468243e-198 +2768.2500 1.089549390626e-197 +2768.5000 1.858551021059e-197 +2768.7500 3.169321874145e-197 +2769.0000 5.402844929684e-197 +2769.2500 9.207525959541e-197 +2769.5000 1.568655930372e-196 +2769.7500 2.671632598685e-196 +2770.0000 4.548729034091e-196 +2770.2500 7.742258977595e-196 +2770.5000 1.317375603303e-195 +2770.7500 2.240865720875e-195 +2771.0000 3.810538417806e-195 +2771.2500 6.477704770700e-195 +2771.5000 1.100829987089e-194 +2771.7500 1.870181027845e-194 +2772.0000 3.176225566810e-194 +2772.2500 5.392663512271e-194 +2772.5000 9.152918645274e-194 +2772.7500 1.553031186485e-193 +2773.0000 2.634298875301e-193 +2773.2500 4.466982086608e-193 +2773.5000 7.572297535425e-193 +2773.7500 1.283232719013e-192 +2774.0000 2.173939599918e-192 +2774.2500 3.681745949957e-192 +2774.5000 6.233392252731e-192 +2774.7500 1.055016838057e-191 +2775.0000 1.785083847279e-191 +2775.2500 3.019410384985e-191 +2775.5000 5.105637347964e-191 +2775.7500 8.630621645560e-191 +2776.0000 1.458473315866e-190 +2776.2500 2.463877958354e-190 +2776.5000 4.161062051982e-190 +2776.7500 7.025115798693e-190 +2777.0000 1.185678862531e-189 +2777.2500 2.000529515005e-189 +2777.5000 3.374326821130e-189 +2777.7500 5.689755706533e-189 +2778.0000 9.591011052983e-189 +2778.2500 1.616216209966e-188 +2778.5000 2.722693912641e-188 +2778.7500 4.585244281104e-188 +2779.0000 7.719522382921e-188 +2779.2500 1.299219945362e-187 +2779.5000 2.185944961688e-187 +2779.7500 3.676715807376e-187 +2780.0000 6.182230552630e-187 +2780.2500 1.039189206793e-186 +2780.5000 1.746257777252e-186 +2780.7500 2.933501906573e-186 +2781.0000 4.926388887337e-186 +2781.2500 8.270567388505e-186 +2781.5000 1.388053523864e-185 +2781.7500 2.328849465358e-185 +2782.0000 3.906078048575e-185 +2782.2500 6.549448210159e-185 +2782.5000 1.097824209037e-184 +2782.7500 1.839607580709e-184 +2783.0000 3.081639792184e-184 +2783.2500 5.160631536580e-184 +2783.5000 8.639490402726e-184 +2783.7500 1.445898132867e-183 +2784.0000 2.419087421014e-183 +2784.2500 4.046035839406e-183 +2784.5000 6.765068268305e-183 +2784.7500 1.130782132773e-182 +2785.0000 1.889513450646e-182 +2785.2500 3.156351300328e-182 +2785.5000 5.270902419887e-182 +2785.7500 8.799316003778e-182 +2786.0000 1.468510813714e-181 +2786.2500 2.450020281008e-181 +2786.5000 4.086264795720e-181 +2786.7500 6.813144954514e-181 +2787.0000 1.135620040575e-180 +2787.2500 1.892268515058e-180 +2787.5000 3.152076686684e-180 +2787.7500 5.248981990689e-180 +2788.0000 8.738113607589e-180 +2788.2500 1.454201496758e-179 +2788.5000 2.419333751123e-179 +2788.7500 4.023752665209e-179 +2789.0000 6.690076239587e-179 +2789.2500 1.111975332143e-178 +2789.5000 1.847666290979e-178 +2789.7500 3.069136573844e-178 +2790.0000 5.096513631046e-178 +2790.2500 8.460469461020e-178 +2790.5000 1.404041778519e-177 +2790.7500 2.329323971075e-177 +2791.0000 3.863172117524e-177 +2791.2500 6.405049882409e-177 +2791.5000 1.061610661846e-176 +2791.7500 1.759026261752e-176 +2792.0000 2.913692204233e-176 +2792.2500 4.824800020646e-176 +2792.5000 7.986918621448e-176 +2792.7500 1.321732285098e-175 +2793.0000 2.186613545459e-175 +2793.2500 3.616303458488e-175 +2793.5000 5.978909726603e-175 +2793.7500 9.881967531413e-175 +2794.0000 1.632785541375e-174 +2794.2500 2.696988944991e-174 +2794.5000 4.453418240364e-174 +2794.7500 7.351434598217e-174 +2795.0000 1.213151415451e-173 +2795.2500 2.001346185106e-173 +2795.5000 3.300606292124e-173 +2795.7500 5.441636478421e-173 +2796.0000 8.968702653623e-173 +2796.2500 1.477726367930e-172 +2796.5000 2.434012010933e-172 +2796.7500 4.007889215578e-172 +2797.0000 6.597402750019e-172 +2797.2500 1.085661865303e-171 +2797.5000 1.785995936750e-171 +2797.7500 2.937180573949e-171 +2798.0000 4.828865680439e-171 +2798.2500 7.936406437509e-171 +2798.5000 1.303968119711e-170 +2798.7500 2.141777460991e-170 +2799.0000 3.516786566289e-170 +2799.2500 5.772739727696e-170 +2799.5000 9.472884454763e-170 +2799.7500 1.553984921629e-169 +2800.0000 2.548447308494e-169 +2800.2500 4.178003642470e-169 +2800.5000 6.847408973185e-169 +2800.7500 1.121884166299e-168 +2801.0000 1.837528431035e-168 +2801.2500 3.008738296048e-168 +2801.5000 4.924918615327e-168 +2801.7500 8.058941443638e-168 +2802.0000 1.318321212218e-167 +2802.2500 2.155900820519e-167 +2802.5000 3.524525146017e-167 +2802.7500 5.760189178753e-167 +2803.0000 9.411030446033e-167 +2803.2500 1.537099240110e-166 +2803.5000 2.509752729954e-166 +2803.7500 4.096606603933e-166 +2804.0000 6.684699427206e-166 +2804.2500 1.090445101519e-165 +2804.5000 1.778238569030e-165 +2804.7500 2.898948789265e-165 +2805.0000 4.724494628219e-165 +2805.2500 7.697230175785e-165 +2805.5000 1.253654564470e-164 +2805.7500 2.041200175411e-164 +2806.0000 3.322443513378e-164 +2806.2500 5.406222471085e-164 +2806.5000 8.794163162635e-164 +2806.7500 1.430077003947e-163 +2807.0000 2.324816212574e-163 +2807.2500 3.778175491840e-163 +2807.5000 6.138184326293e-163 +2807.7500 9.969239367620e-163 +2808.0000 1.618633111295e-162 +2808.2500 2.627236173880e-162 +2808.5000 4.262987986384e-162 +2808.7500 6.915019369418e-162 +2809.0000 1.121339166926e-161 +2809.2500 1.817794902654e-161 +2809.5000 2.945893685277e-161 +2809.7500 4.772583730650e-161 +2810.0000 7.729552337201e-161 +2810.2500 1.251467070651e-160 +2810.5000 2.025577247137e-160 +2810.7500 3.277498429379e-160 +2811.0000 5.301520845007e-160 +2811.2500 8.572801212843e-160 +2811.5000 1.385828001743e-159 +2811.7500 2.239547150365e-159 +2812.0000 3.618056855813e-159 +2812.2500 5.843255322083e-159 +2812.5000 9.434060095387e-159 +2812.7500 1.522673230312e-158 +2813.0000 2.456852511570e-158 +2813.2500 3.962924135241e-158 +2813.5000 6.390233537073e-158 +2813.7500 1.030106199943e-157 +2814.0000 1.660013314033e-157 +2814.2500 2.674271159769e-157 +2814.5000 4.306888311935e-157 +2814.7500 6.934035771462e-157 +2815.0000 1.116022229889e-156 +2815.2500 1.795659189100e-156 +2815.5000 2.888279905467e-156 +2815.7500 4.644285876731e-156 +2816.0000 7.465568937247e-156 +2816.2500 1.199695901221e-155 +2816.5000 1.927275229557e-155 +2816.7500 3.095142180157e-155 +2817.0000 4.969146120614e-155 +2817.2500 7.975303720104e-155 +2817.5000 1.279608140523e-154 +2817.7500 2.052442774979e-154 +2818.0000 3.291011651785e-154 +2818.2500 5.275359761911e-154 +2818.5000 8.453548424045e-154 +2818.7500 1.354223378585e-153 +2819.0000 2.168731907398e-153 +2819.2500 3.472048084424e-153 +2819.5000 5.556865602036e-153 +2819.7500 8.890749112645e-153 +2820.0000 1.422037722561e-152 +2820.2500 2.273778623458e-152 +2820.5000 3.634540741109e-152 +2820.7500 5.807847492108e-152 +2821.0000 9.277803416856e-152 +2821.2500 1.481628860126e-151 +2821.5000 2.365364049435e-151 +2821.7500 3.775033891224e-151 +2822.0000 6.022932811106e-151 +2822.2500 9.606373810084e-151 +2822.5000 1.531705410232e-150 +2822.7500 2.441492029943e-150 +2823.0000 3.890448546397e-150 +2823.2500 6.197383068618e-150 +2823.5000 9.869185391845e-150 +2823.7500 1.571153342553e-149 +2824.0000 2.500461319666e-149 +2824.2500 3.978194460623e-149 +2824.5000 6.327267221942e-149 +2824.7500 1.006029337095e-148 +2825.0000 1.599077141227e-148 +2825.2500 2.540928739645e-148 +2825.5000 4.036266715054e-148 +2825.7500 6.409608867421e-148 +2826.0000 1.017530653031e-147 +2826.2500 1.614833590891e-147 +2826.5000 2.561960026544e-147 +2826.7500 4.063321861294e-147 +2827.0000 6.442499613531e-147 +2827.2500 1.021155494767e-146 +2827.5000 1.618056405520e-146 +2827.7500 2.563065687330e-146 +2828.0000 4.058729585758e-146 +2828.2500 6.425172606066e-146 +2828.5000 1.016819302762e-145 +2828.7500 1.608670383293e-145 +2829.0000 2.544219937989e-145 +2829.2500 4.022597120711e-145 +2829.5000 6.358032249882e-145 +2829.7500 1.004623229284e-144 +2830.0000 1.586894323629e-144 +2830.2500 2.505861703066e-144 +2830.5000 3.955765081873e-144 +2830.7500 6.242638518640e-144 +2831.0000 9.848502159018e-144 +2831.2500 1.553232548426e-143 +2831.5000 2.448877621939e-143 +2831.7500 3.859774958201e-143 +2832.0000 6.081646702589e-143 +2832.2500 9.579540817325e-143 +2832.5000 1.508455486272e-142 +2832.7500 2.374567980541e-142 +2833.0000 3.736810009508e-142 +2833.2500 5.878705844011e-142 +2833.5000 9.245422100703e-142 +2833.7500 1.453570363414e-141 +2834.0000 2.284597396446e-141 +2834.2500 3.589612736123e-141 +2834.5000 5.638321284745e-141 +2834.7500 8.853527556471e-141 +2835.0000 1.389783558235e-140 +2835.2500 2.180932868550e-140 +2835.5000 3.421383275962e-140 +2835.7500 5.365688553520e-140 +2836.0000 8.412275664162e-140 +2836.2500 1.318456583008e-139 +2836.5000 2.065772408740e-139 +2836.7500 3.235663981018e-139 +2837.0000 5.066507136876e-139 +2837.2500 7.930822052312e-139 +2837.5000 1.241057932336e-138 +2837.7500 1.941467864863e-138 +2838.0000 3.036215973944e-138 +2838.2500 4.746783430597e-138 +2838.5000 7.418745574920e-138 +2838.7500 1.159113167553e-137 +2839.0000 1.810445702651e-137 +2839.2500 2.826893661148e-137 +2839.5000 4.412632328220e-137 +2839.7500 6.885735173864e-137 +2840.0000 1.074155587238e-136 +2840.2500 1.675129437906e-136 +2840.5000 2.611522985738e-136 +2840.7500 4.070086484844e-136 +2841.0000 6.341291616440e-136 +2841.2500 9.876796744284e-136 +2841.5000 1.537867115758e-135 +2841.7500 2.393788673175e-135 +2842.0000 3.724921356414e-135 +2842.2500 5.794456561945e-135 +2842.5000 9.010992294207e-135 +2842.7500 1.400866753395e-134 +2843.0000 2.177134910096e-134 +2843.2500 3.382502750669e-134 +2843.5000 5.253579136345e-134 +2843.7500 8.157117198054e-134 +2844.0000 1.266142040398e-133 +2844.2500 1.964682875049e-133 +2844.5000 3.047661956014e-133 +2844.7500 4.726127475471e-133 +2845.0000 7.326699385132e-133 +2845.2500 1.135469878312e-132 +2845.5000 1.759167392556e-132 +2845.7500 2.724601672718e-132 +2846.0000 4.218549749755e-132 +2846.2500 6.529615903803e-132 +2846.5000 1.010360593051e-131 +2846.7500 1.562893795200e-131 +2847.0000 2.416834093681e-131 +2847.2500 3.736186222219e-131 +2847.5000 5.773969618689e-131 +2847.7500 8.920409227550e-131 +2848.0000 1.377714934703e-130 +2848.2500 2.127150697161e-130 +2848.5000 3.283231113880e-130 +2848.7500 5.066043975276e-130 +2849.0000 7.814492166490e-130 +2849.2500 1.205027253692e-129 +2849.5000 1.857621730538e-129 +2849.7500 2.862740622497e-129 +2850.0000 4.410329355955e-129 +2850.2500 6.792417150373e-129 +2850.5000 1.045783971485e-128 +2850.7500 1.609622066061e-128 +2851.0000 2.476681485509e-128 +2851.2500 3.809611619781e-128 +2851.5000 5.858083429698e-128 +2851.7500 9.005227876254e-128 +2852.0000 1.383879150712e-127 +2852.2500 2.126013071922e-127 +2852.5000 3.265111371397e-127 +2852.7500 5.012961547194e-127 +2853.0000 7.694050847232e-127 +2853.2500 1.180538176186e-126 +2853.5000 1.810795158307e-126 +2853.7500 2.776661371294e-126 +2854.0000 4.256384150885e-126 +2854.2500 6.522634172919e-126 +2854.5000 9.992393557992e-126 +2854.7500 1.530313273492e-125 +2855.0000 2.342909239029e-125 +2855.2500 3.585872883175e-125 +2855.5000 5.486540892851e-125 +2855.7500 8.392022823130e-125 +2856.0000 1.283213729373e-124 +2856.2500 1.961533114776e-124 +2856.5000 2.997482088220e-124 +2856.7500 4.579118204344e-124 +2857.0000 6.993127040541e-124 +2857.2500 1.067641107279e-123 +2857.5000 1.629459091970e-123 +2857.7500 2.486142068528e-123 +2858.0000 3.792038419185e-123 +2858.2500 5.782076335078e-123 +2858.5000 8.813719381895e-123 +2858.7500 1.343070848984e-122 +2859.0000 2.045987296607e-122 +2859.2500 3.115812023114e-122 +2859.5000 4.743554239158e-122 +2859.7500 7.219394909119e-122 +2860.0000 1.098403816120e-121 +2860.2500 1.670658072294e-121 +2860.5000 2.540255615441e-121 +2860.7500 3.861282466482e-121 +2861.0000 5.867458575752e-121 +2861.2500 8.913182475360e-121 +2861.5000 1.353567348964e-120 +2861.7500 2.054902630470e-120 +2862.0000 3.118652122069e-120 +2862.2500 4.731588029755e-120 +2862.5000 7.176475762696e-120 +2862.7500 1.088127602264e-119 +2863.0000 1.649349671855e-119 +2863.2500 2.499251471196e-119 +2863.5000 3.785920423191e-119 +2863.7500 5.733202912570e-119 +2864.0000 8.679354983800e-119 +2864.2500 1.313535747971e-118 +2864.5000 1.987287262476e-118 +2864.7500 3.005686690487e-118 +2865.0000 4.544551973276e-118 +2865.2500 6.869146012405e-118 +2865.5000 1.037955485590e-117 +2865.7500 1.567902368592e-117 +2866.0000 2.367683300919e-117 +2866.2500 3.574312445436e-117 +2866.5000 5.394183581432e-117 +2866.7500 8.138104076756e-117 +2867.0000 1.227397018323e-116 +2867.2500 1.850594195513e-116 +2867.5000 2.789341156517e-116 +2867.7500 4.202970885602e-116 +2868.0000 6.331045518061e-116 +2868.2500 9.533641085539e-116 +2868.5000 1.435180310636e-115 +2868.7500 2.159824409130e-115 +2869.0000 3.249336807958e-115 +2869.2500 4.886921053454e-115 +2869.5000 7.347510647342e-115 +2869.7500 1.104356859064e-114 +2870.0000 1.659368912982e-114 +2870.2500 2.492532182471e-114 +2870.5000 3.742854178006e-114 +2870.7500 5.618615956758e-114 +2871.0000 8.431796130932e-114 +2871.2500 1.264955229106e-113 +2871.5000 1.897118767012e-113 +2871.7500 2.844318291101e-113 +2872.0000 4.263106442512e-113 +2872.2500 6.387611101417e-113 +2872.5000 9.567865598737e-113 +2872.7500 1.432702351374e-112 +2873.0000 2.144673520681e-112 +2873.2500 3.209450741148e-112 +2873.5000 4.801363071189e-112 +2873.7500 7.180632326354e-112 +2874.0000 1.073557080660e-111 +2874.2500 1.604544995235e-111 +2874.5000 2.397413622077e-111 +2874.7500 3.580950732636e-111 +2875.0000 5.347096625858e-111 +2875.2500 7.981821796045e-111 +2875.5000 1.191105778710e-110 +2875.7500 1.776899826625e-110 +2876.0000 2.649963349596e-110 +2876.2500 3.950764103280e-110 +2876.5000 5.888255412976e-110 +2876.7500 8.773168894636e-110 +2877.0000 1.306744406130e-109 +2877.2500 1.945759316365e-109 +2877.5000 2.896355703804e-109 +2877.7500 4.310017014963e-109 +2878.0000 6.411658488775e-109 +2878.2500 9.535118372544e-109 +2878.5000 1.417575195719e-108 +2878.7500 2.106834549788e-108 +2879.0000 3.130250313199e-108 +2879.2500 4.649347565738e-108 +2879.5000 6.903499043737e-108 +2879.7500 1.024733264919e-107 +2880.0000 1.520606035532e-107 +2880.2500 2.255728856735e-107 +2880.5000 3.345194628977e-107 +2880.7500 4.959297896114e-107 +2881.0000 7.349931846949e-107 +2881.2500 1.088957017514e-106 +2881.5000 1.612881550418e-106 +2881.7500 2.388133058586e-106 +2882.0000 3.534914202653e-106 +2882.2500 5.230744950944e-106 +2882.5000 7.737711306095e-106 +2882.7500 1.144262881873e-105 +2883.0000 1.691622328794e-105 +2883.2500 2.500030565262e-105 +2883.5000 3.693614261091e-105 +2883.7500 5.455343092929e-105 +2884.0000 8.054839860247e-105 +2884.2500 1.188929390083e-104 +2884.5000 1.754363269260e-104 +2884.7500 2.587898865125e-104 +2885.0000 3.816272564946e-104 +2885.2500 5.625948876054e-104 +2885.5000 8.291182765258e-104 +2885.7500 1.221522601151e-103 +2886.0000 1.799081494668e-103 +2886.2500 2.648893375473e-103 +2886.5000 3.898902988391e-103 +2886.7500 5.736997924274e-103 +2887.0000 8.439005454693e-103 +2887.2500 1.240972489393e-102 +2887.5000 1.824304593811e-102 +2887.7500 2.681000291081e-102 +2888.0000 3.938770550871e-102 +2888.2500 5.784806211518e-102 +2888.5000 8.493393770248e-102 +2888.7500 1.246631267547e-101 +2889.0000 1.829191116555e-101 +2889.2500 2.683146980008e-101 +2889.5000 3.934541726440e-101 +2889.7500 5.767772995449e-101 +2890.0000 8.452525221277e-101 +2890.2500 1.238309211090e-100 +2890.5000 1.813577184959e-100 +2890.7500 2.655261485954e-100 +2891.0000 3.886358508950e-100 +2891.2500 5.686469813310e-100 +2891.5000 8.317770388587e-100 +2891.7500 1.216285220392e-99 +2892.0000 1.777985619034e-99 +2892.2500 2.598276533219e-99 +2892.5000 3.795830495345e-99 +2892.7500 5.543608638562e-99 +2893.0000 8.093616602849e-99 +2893.2500 1.181291300575e-98 +2893.5000 1.723596868342e-98 +2893.7500 2.514077723335e-98 +2894.0000 3.665945602714e-98 +2894.2500 5.343891672897e-98 +2894.5000 7.787419825515e-98 +2894.7500 1.134472163698e-97 +2895.0000 1.652184003678e-97 +2895.2500 2.405399936435e-97 +2895.5000 3.500906326788e-97 +2895.7500 5.093754377777e-97 +2896.0000 7.409003867912e-97 +2896.2500 1.077323062905e-96 +2896.5000 1.566016762211e-96 +2896.7500 2.275679876172e-96 +2897.0000 3.305904057022e-96 +2897.2500 4.801021330867e-96 +2897.5000 6.970137401518e-96 +2897.7500 1.011610566585e-95 +2898.0000 1.467741887297e-95 +2898.2500 2.128875843479e-95 +2898.5000 3.086848345661e-95 +2898.7500 4.474500562040e-95 +2899.0000 6.483927566134e-95 +2899.2500 9.392821223217e-95 +2899.5000 1.360248552202e-94 +2899.7500 1.969267903864e-94 +2900.0000 2.850070790542e-94 +2900.2500 4.123545644560e-94 +2900.5000 5.964173650616e-94 +2900.7500 8.623708494407e-94 +2901.0000 1.246528379019e-93 +2901.2500 1.801252462340e-93 +2901.5000 2.602024128376e-93 +2901.7500 3.757615737706e-93 +2902.0000 5.424725006931e-93 +2902.2500 7.829020026068e-93 +2902.5000 1.129539428392e-92 +2902.7500 1.629144856380e-92 +2903.0000 2.348996247212e-92 +2903.2500 3.385862047926e-92 +2903.5000 4.878884209140e-92 +2903.7500 7.028069992891e-92 +2904.0000 1.012082604197e-91 +2904.2500 1.457002033106e-91 +2904.5000 2.096856309672e-91 +2904.7500 3.016765128147e-91 +2905.0000 4.338890032982e-91 +2905.2500 6.238498901160e-91 +2905.5000 8.966973333435e-91 +2905.7500 1.288474919345e-90 +2906.0000 1.850846389471e-90 +2906.2500 2.657841625324e-90 +2906.5000 3.815505969521e-90 +2906.7500 5.475698055034e-90 +2907.0000 7.855813463195e-90 +2907.2500 1.126697029373e-89 +2907.5000 1.615427427051e-89 +2907.7500 2.315432214173e-89 +2908.0000 3.317729746529e-89 +2908.2500 4.752413910430e-89 +2908.5000 6.805371321016e-89 +2908.7500 9.742125304158e-89 +2909.0000 1.394183415851e-88 +2909.2500 1.994575270462e-88 +2909.5000 2.852628813983e-88 +2909.7500 4.078537087299e-88 +2910.0000 5.829454055795e-88 +2910.2500 8.329437400968e-88 +2910.5000 1.189783030439e-87 +2910.7500 1.698964049362e-87 +2911.0000 2.425296974233e-87 +2911.2500 3.461066771487e-87 +2911.5000 4.937639150852e-87 +2911.7500 7.041951591518e-87 +2912.0000 1.003993820823e-86 +2912.2500 1.430979334430e-86 +2912.5000 2.038919133454e-86 +2912.7500 2.904229672552e-86 +2913.0000 4.135482932646e-86 +2913.2500 5.886888700161e-86 +2913.5000 8.377409304617e-86 +2913.7500 1.191785129943e-85 +2914.0000 1.694925086835e-85 +2914.2500 2.409724377346e-85 +2914.5000 3.424905180084e-85 +2914.7500 4.866245909484e-85 +2915.0000 6.912002221336e-85 +2915.2500 9.814722039938e-85 +2915.5000 1.393209599993e-84 +2915.7500 1.977057181394e-84 +2916.0000 2.804699394624e-84 +2916.2500 3.977569067418e-84 +2916.5000 5.639147532950e-84 +2916.7500 7.992331753671e-84 +2917.0000 1.132394802056e-83 +2917.2500 1.603934209538e-83 +2917.5000 2.271117230745e-83 +2917.7500 3.214821565520e-83 +2918.0000 4.549236475090e-83 +2918.2500 6.435532252392e-83 +2918.5000 9.101118074072e-83 +2918.7500 1.286676430111e-82 +2919.0000 1.818478879160e-82 +2919.2500 2.569280355597e-82 +2919.5000 3.628933841334e-82 +2919.7500 5.124021276743e-82 +2920.0000 7.232811013949e-82 +2920.2500 1.020628356230e-81 +2920.5000 1.439767819775e-81 +2920.7500 2.030400044532e-81 +2921.0000 2.862431390111e-81 +2921.2500 4.034157754403e-81 +2921.5000 5.683750276173e-81 +2921.7500 8.005370184801e-81 +2922.0000 1.127177135000e-80 +2922.2500 1.586599238652e-80 +2922.5000 2.232577958447e-80 +2922.7500 3.140583496521e-80 +2923.0000 4.416501434642e-80 +2923.2500 6.208843709833e-80 +2923.5000 8.725843111906e-80 +2923.7500 1.225937678637e-79 +2924.0000 1.721843622977e-79 +2924.2500 2.417593840412e-79 +2924.5000 3.393417499915e-79 +2924.7500 4.761629176106e-79 +2925.0000 6.679410990779e-79 +2925.2500 9.366667072394e-79 +2925.5000 1.313095527508e-78 +2925.7500 1.840229045787e-78 +2926.0000 2.578171251959e-78 +2926.2500 3.610904170573e-78 +2926.5000 5.055737136490e-78 +2926.7500 7.076480748529e-78 +2927.0000 9.901807861957e-78 +2927.2500 1.385083582913e-77 +2927.5000 1.936875876270e-77 +2927.7500 2.707646226586e-77 +2928.0000 3.783958560763e-77 +2928.2500 5.286462368711e-77 +2928.5000 7.383261325883e-77 +2928.7500 1.030850432282e-76 +2929.0000 1.438823082603e-76 +2929.2500 2.007628986949e-76 +2929.5000 2.800424321410e-76 +2929.7500 3.905067509502e-76 +2930.0000 5.443742498475e-76 +2930.2500 7.586315913974e-76 +2930.5000 1.056887098119e-75 +2930.7500 1.471941639678e-75 +2931.0000 2.049353645566e-75 +2931.2500 2.852381090780e-75 +2931.5000 3.968830134098e-75 +2931.7500 5.520543000878e-75 +2932.0000 7.676538024307e-75 +2932.2500 1.067120189793e-74 +2932.5000 1.482946867979e-74 +2932.7500 2.060165777074e-74 +2933.0000 2.861166088891e-74 +2933.2500 3.972357189698e-74 +2933.5000 5.513378900692e-74 +2933.7500 7.649828701541e-74 +2934.0000 1.061084338002e-73 +2934.2500 1.471337898646e-73 +2934.5000 2.039573040162e-73 +2934.7500 2.826379193474e-73 +2935.0000 3.915488166808e-73 +2935.2500 5.422577005114e-73 +2935.5000 7.507405328099e-73 +2935.7500 1.039054492435e-72 +2936.0000 1.437643180549e-72 +2936.2500 1.988512003698e-72 +2936.5000 2.749600825479e-72 +2936.7500 3.800803403882e-72 +2937.0000 5.252251182956e-72 +2937.2500 7.255709614206e-72 +2937.5000 1.002025152908e-71 +2937.7500 1.383380590794e-71 +2938.0000 1.909277512869e-71 +2938.2500 2.634272885548e-71 +2938.5000 3.633429941751e-71 +2938.7500 5.009993295002e-71 +2939.0000 6.905924459973e-71 +2939.2500 9.516359225077e-71 +2939.5000 1.310944049493e-70 +2939.7500 1.805351665294e-70 +2940.0000 2.485442901793e-70 +2940.2500 3.420661467551e-70 +2940.5000 4.706312119889e-70 +2940.7500 6.473150164623e-70 +2941.0000 8.900511456143e-70 +2941.2500 1.223428436761e-69 +2941.5000 1.681150150665e-69 +2941.7500 2.309397879797e-69 +2942.0000 3.171431588544e-69 +2942.2500 4.353878029416e-69 +2942.5000 5.975324500458e-69 +2942.7500 8.198059357852e-69 +2943.0000 1.124410643317e-68 +2943.2500 1.541711683228e-68 +2943.5000 2.113224833489e-68 +2943.7500 2.895693386490e-68 +2944.0000 3.966648972491e-68 +2944.2500 5.431994120833e-68 +2944.5000 7.436338316332e-68 +2944.7500 1.017708296962e-67 +2945.0000 1.392360894926e-67 +2945.2500 1.904340688304e-67 +2945.5000 2.603765108577e-67 +2945.7500 3.558961471453e-67 +2946.0000 4.863054056811e-67 +2946.2500 6.642923255134e-67 +2946.5000 9.071387113966e-67 +2946.7500 1.238375904902e-66 +2947.0000 1.690034669093e-66 +2947.2500 2.305701392163e-66 +2947.5000 3.144668262269e-66 +2947.7500 4.287567211993e-66 +2948.0000 5.844015680654e-66 +2948.2500 7.962989296730e-66 +2948.5000 1.084688958836e-65 +2948.7500 1.477061693073e-65 +2949.0000 2.010742136123e-65 +2949.2500 2.736392875438e-65 +2949.5000 3.722758393891e-65 +2949.7500 5.063089220872e-65 +2950.0000 6.883837947736e-65 +2950.2500 9.356426800144e-65 +2950.5000 1.271316662645e-64 +2950.7500 1.726878501562e-64 +2951.0000 2.344953069827e-64 +2951.2500 3.183250801354e-64 +2951.5000 4.319882037376e-64 +2951.7500 5.860534778480e-64 +2952.0000 7.948166140472e-64 +2952.2500 1.077608367448e-63 +2952.5000 1.460559664269e-63 +2952.7500 1.978982619377e-63 +2953.0000 2.680581320027e-63 +2953.2500 3.629780166946e-63 +2953.5000 4.913556899518e-63 +2953.7500 6.649300888044e-63 +2954.0000 8.995396515146e-63 +2954.2500 1.216547211901e-62 +2954.5000 1.644757797073e-62 +2954.7500 2.222999014608e-62 +2955.0000 3.003591846830e-62 +2955.2500 4.057017618464e-62 +2955.5000 5.478191391460e-62 +2955.7500 7.394892057930e-62 +2956.0000 9.979086969732e-62 +2956.2500 1.346214012912e-61 +2956.5000 1.815522923835e-61 +2956.7500 2.447674694537e-61 +2957.0000 3.298906372272e-61 +2957.2500 4.444783509655e-61 +2957.5000 5.986811262016e-61 +2957.7500 8.061295706475e-61 +2958.0000 1.085121751425e-60 +2958.2500 1.460213694789e-60 +2958.5000 1.964349211468e-60 +2958.7500 2.641711021446e-60 +2959.0000 3.551536243797e-60 +2959.2500 4.773220814446e-60 +2959.5000 6.413146078225e-60 +2959.7500 8.613805693514e-60 +2960.0000 1.156600408910e-59 +2960.2500 1.552515498112e-59 +2960.5000 2.083305110531e-59 +2960.7500 2.794693253425e-59 +2961.0000 3.747828817496e-59 +2961.2500 5.024463300661e-59 +2961.5000 6.733857833398e-59 +2961.7500 9.021994140999e-59 +2962.0000 1.208385404484e-58 +2962.2500 1.617978454572e-58 +2962.5000 2.165730088530e-58 +2962.7500 2.898012533434e-58 +2963.0000 3.876685070048e-58 +2963.2500 5.184240222175e-58 +2963.5000 6.930651256147e-58 +2963.7500 9.262480536696e-58 +2964.0000 1.237499135505e-57 +2964.2500 1.652824849444e-57 +2964.5000 2.206851431316e-57 +2964.7500 2.945667300241e-57 +2965.0000 3.930597960740e-57 +2965.2500 5.243217689906e-57 +2965.5000 6.992001103435e-57 +2965.7500 9.321148375729e-57 +2966.0000 1.242229071015e-56 +2966.2500 1.655001113033e-56 +2966.5000 2.204241761741e-56 +2966.7500 2.934840455353e-56 +2967.0000 3.906376532799e-56 +2967.2500 5.197901463766e-56 +2967.5000 6.914269723739e-56 +2967.7500 9.194517147053e-56 +2968.0000 1.222294540385e-55 +2968.2500 1.624378198016e-55 +2968.5000 2.158056282872e-55 +2968.7500 2.866175092119e-55 +2969.0000 3.805458616422e-55 +2969.2500 5.050979720561e-55 +2969.5000 6.702064171666e-55 +2969.7500 8.890084205364e-55 +2970.0000 1.178874308326e-54 +2970.2500 1.562764249103e-54 +2970.5000 2.071017495899e-54 +2970.7500 2.743711251775e-54 +2971.0000 3.633769513177e-54 +2971.2500 4.811059033081e-54 +2971.5000 6.367784113987e-54 +2971.7500 8.425589824677e-54 +2972.0000 1.114491168308e-53 +2972.2500 1.473727835021e-53 +2972.5000 1.948149485528e-53 +2972.7500 2.574492356687e-53 +2973.0000 3.401145978706e-53 +2973.2500 4.491829625350e-53 +2973.5000 5.930422229673e-53 +2973.7500 7.827305635097e-53 +2974.0000 1.032769269155e-52 +2974.2500 1.362255778066e-52 +2974.5000 1.796297842196e-52 +2974.7500 2.367894645198e-52 +2975.0000 3.120403385181e-52 +2975.2500 4.110772506292e-52 +2975.5000 5.413778512425e-52 +2975.7500 7.127576099810e-52 +2976.0000 9.380966388842e-52 +2976.2500 1.234291207326e-51 +2976.5000 1.623499012927e-51 +2976.7500 2.134768378121e-51 +2977.0000 2.806169059193e-51 +2977.2500 3.687578219639e-51 +2977.5000 4.844321850165e-51 +2977.7500 6.361932785391e-51 +2978.0000 8.352365723698e-51 +2978.2500 1.096211282358e-50 +2978.5000 1.438279769738e-50 +2978.7500 1.886500025822e-50 +2979.0000 2.473629197522e-50 +2979.2500 3.242475632117e-50 +2979.5000 4.248965287120e-50 +2979.7500 5.566138196427e-50 +2980.0000 7.289355420069e-50 +2980.2500 9.543080952891e-50 +2980.5000 1.248971215318e-49 +2980.7500 1.634107378841e-49 +2981.0000 2.137337437555e-49 +2981.2500 2.794666153025e-49 +2981.5000 3.653012158632e-49 +2981.7500 4.773496856065e-49 +2982.0000 6.235718544810e-49 +2982.2500 8.143305150000e-49 +2982.5000 1.063112573454e-48 +2982.7500 1.387465333728e-48 +2983.0000 1.810211703333e-48 +2983.2500 2.361026909610e-48 +2983.5000 3.078483617630e-48 +2983.7500 4.012703752189e-48 +2984.0000 5.228795909709e-48 +2984.2500 6.811309663408e-48 +2984.5000 8.870005745599e-48 +2984.7500 1.154732845037e-47 +2985.0000 1.502807932343e-47 +2985.2500 1.955193661080e-47 +2985.5000 2.542965243818e-47 +2985.7500 3.306400139690e-47 +2986.0000 4.297686568902e-47 +2986.2500 5.584424324285e-47 +2986.5000 7.254148196537e-47 +2986.7500 9.420170857370e-47 +2987.0000 1.222912766559e-46 +2987.2500 1.587071601877e-46 +2987.5000 2.059026355366e-46 +2987.7500 2.670494166239e-46 +2988.0000 3.462467493211e-46 +2988.2500 4.487909796289e-46 +2988.5000 5.815229745498e-46 +2988.7500 7.532757366677e-46 +2989.0000 9.754509230762e-46 +2989.2500 1.262761153033e-45 +2989.5000 1.634185474142e-45 +2989.7500 2.114198803381e-45 +2990.0000 2.734353397565e-45 +2990.2500 3.535312499784e-45 +2990.5000 4.569464611550e-45 +2990.7500 5.904283089229e-45 +2991.0000 7.626642173378e-45 +2991.2500 9.848359959877e-45 +2991.5000 1.271331482351e-44 +2991.7500 1.640657901604e-44 +2992.0000 2.116613746060e-44 +2992.2500 2.729791864811e-44 +2992.5000 3.519506756735e-44 +2992.7500 4.536264994539e-44 +2993.0000 5.844930825625e-44 +2993.2500 7.528781273228e-44 +2993.5000 9.694699014140e-44 +2993.7500 1.247982013924e-43 +2994.0000 1.606004168355e-43 +2994.2500 2.066090572475e-43 +2994.5000 2.657151948044e-43 +2994.7500 3.416235255842e-43 +2995.0000 4.390798396885e-43 +2995.2500 5.641616620713e-43 +2995.5000 7.246494881985e-43 +2995.7500 9.305008115497e-43 +2996.0000 1.194455211108e-42 +2996.2500 1.532806486966e-42 +2996.5000 1.966387645625e-42 +2996.7500 2.521827007092e-42 +2997.0000 3.233149547767e-42 +2997.2500 4.143817711196e-42 +2997.5000 5.309331459006e-42 +2997.7500 6.800539747531e-42 +2998.0000 8.707856737839e-42 +2998.2500 1.114662820108e-41 +2998.5000 1.426395970537e-41 +2998.7500 1.824740197919e-41 +2999.0000 2.333599503512e-41 +2999.2500 2.983430713775e-41 +2999.5000 3.813027500497e-41 +2999.7500 4.871786720214e-41 +3000.0000 6.222586546708e-41 +3000.2500 7.945440375801e-41 +3000.5000 1.014213411562e-40 +3000.7500 1.294210963469e-40 +3001.0000 1.650992684644e-40 +3001.2500 2.105472496903e-40 +3001.5000 2.684221471107e-40 +3001.7500 3.420987353647e-40 +3002.0000 4.358619336037e-40 +3002.2500 5.551505359234e-40 +3002.5000 7.068657441286e-40 +3002.7500 8.997616068630e-40 +3003.0000 1.144938950158e-39 +3003.2500 1.456470030572e-39 +3003.5000 1.852188253946e-39 +3003.7500 2.354686257915e-39 +3004.0000 2.992576928795e-39 +3004.2500 3.802086108279e-39 +3004.5000 4.829063589183e-39 +3004.7500 6.131521438665e-39 +3005.0000 7.782836896267e-39 +3005.2500 9.875792544551e-39 +3005.5000 1.252767098664e-38 +3005.7500 1.588667719778e-38 +3006.0000 2.014003194065e-38 +3006.2500 2.552416776792e-38 +3006.5000 3.233756971340e-38 +3006.7500 4.095694146428e-38 +3007.0000 5.185755170278e-38 +3007.2500 6.563883327009e-38 +3007.5000 8.305658091721e-38 +3007.7500 1.050634355071e-37 +3008.0000 1.328597709055e-37 +3008.2500 1.679576360257e-37 +3008.5000 2.122610755100e-37 +3008.7500 2.681669919432e-37 +3009.0000 3.386917622190e-37 +3009.2500 4.276301329744e-37 +3009.5000 5.397545600169e-37 +3009.7500 6.810652055540e-37 +3010.0000 8.591033658915e-37 +3010.2500 1.083344296986e-36 +3010.5000 1.365689392509e-36 +3010.7500 1.721082643879e-36 +3011.0000 2.168282516636e-36 +3011.2500 2.730828114087e-36 +3011.5000 3.438248142381e-36 +3011.7500 4.327573206944e-36 +3012.0000 5.445226937267e-36 +3012.2500 6.849390074324e-36 +3012.5000 8.612954854570e-36 +3012.7500 1.082721589404e-35 +3013.0000 1.360647968942e-35 +3013.2500 1.709381951372e-35 +3013.5000 2.146825800533e-35 +3013.7500 2.695372874781e-35 +3014.0000 3.383025385892e-35 +3014.2500 4.244788106660e-35 +3014.5000 5.324405592306e-35 +3014.7500 6.676526885019e-35 +3015.0000 8.369402023884e-35 +3015.2500 1.048823992625e-34 +3015.5000 1.313938850620e-34 +3015.7500 1.645553669105e-34 +3016.0000 2.060218606747e-34 +3016.2500 2.578569943175e-34 +3016.5000 3.226330724901e-34 +3016.7500 4.035554429260e-34 +3017.0000 5.046170167226e-34 +3017.2500 6.307901916681e-34 +3017.5000 7.882651554226e-34 +3017.7500 9.847456811198e-34 +3018.0000 1.229816167341e-33 +3018.2500 1.535396935110e-33 +3018.5000 1.916308821498e-33 +3018.7500 2.390973081033e-33 +3019.0000 2.982278741927e-33 +3019.2500 3.718657134347e-33 +3019.5000 4.635412644758e-33 +3019.7500 5.776370262172e-33 +3020.0000 7.195914671032e-33 +3020.2500 8.961513128087e-33 +3020.5000 1.115683589454e-32 +3020.7500 1.388561450994e-32 +3021.0000 1.727641083233e-32 +3021.2500 2.148850993041e-32 +3021.5000 2.671919931614e-32 +3021.7500 3.321275775597e-32 +3022.0000 4.127155157826e-32 +3022.2500 5.126972816594e-32 +3022.5000 6.367010906272e-32 +3022.7500 7.904502357175e-32 +3023.0000 9.810199369652e-32 +3023.2500 1.217153898701e-31 +3023.5000 1.509654328346e-31 +3023.7500 1.871862308978e-31 +3024.0000 2.320249266014e-31 +3024.2500 2.875144984665e-31 +3024.5000 3.561633413323e-31 +3024.7500 4.410654565596e-31 +3025.0000 5.460359499571e-31 +3025.2500 6.757775959782e-31 +3025.5000 8.360855246008e-31 +3025.7500 1.034098674820e-30 +3026.0000 1.278608599880e-30 +3026.2500 1.580438582220e-30 +3026.5000 1.952908915684e-30 +3026.7500 2.412407754507e-30 +3027.0000 2.979091253927e-30 +3027.2500 3.677742007373e-30 +3027.5000 4.538821228752e-30 +3027.7500 5.599757989090e-30 +3028.0000 6.906528403197e-30 +3028.2500 8.515589349055e-30 +3028.5000 1.049624554587e-29 +3028.7500 1.293354616942e-29 +3029.0000 1.593182831733e-29 +3029.2500 1.961905036765e-29 +3029.5000 2.415208959087e-29 +3029.7500 2.972321647816e-29 +3030.0000 3.656800459291e-29 +3030.2500 4.497499110082e-29 +3030.5000 5.529747162458e-29 +3030.7500 6.796789628947e-29 +3031.0000 8.351543491118e-29 +3031.2500 1.025874020208e-28 +3031.5000 1.259753814141e-28 +3031.7500 1.546470707066e-28 +3032.0000 1.897850856884e-28 +3032.2500 2.328342302176e-28 +3032.5000 2.855590597794e-28 +3032.7500 3.501139575169e-28 +3033.0000 4.291284148175e-28 +3033.2500 5.258107816837e-28 +3033.5000 6.440744459801e-28 +3033.7500 7.886912403591e-28 +3034.0000 9.654778915581e-28 +3034.2500 1.181522555376e-27 +3034.5000 1.445459966024e-27 +3034.7500 1.767805523761e-27 +3035.0000 2.161360813693e-27 +3035.2500 2.641705668232e-27 +3035.5000 3.227795048581e-27 +3035.7500 3.942682838082e-27 +3036.0000 4.814399246345e-27 +3036.2500 5.877014078672e-27 +3036.5000 7.171924824057e-27 +3036.7500 8.749416589386e-27 +3037.0000 1.067055063660e-26 +3037.2500 1.300944999878e-26 +3037.5000 1.585606476274e-26 +3037.7500 1.931951659203e-26 +3038.0000 2.353214250496e-26 +3038.2500 2.865438251031e-26 +3038.5000 3.488068527151e-26 +3038.7500 4.244664151410e-26 +3039.0000 5.163759760541e-26 +3039.2500 6.279905304753e-26 +3039.5000 7.634920724669e-26 +3039.7500 9.279409489824e-26 +3040.0000 1.127458381060e-25 +3040.2500 1.369446498623e-25 +3040.5000 1.662853512473e-25 +3040.7500 2.018493178464e-25 +3041.0000 2.449429544126e-25 +3041.2500 2.971440166905e-25 +3041.5000 3.603573626667e-25 +3041.7500 4.368820308132e-25 +3042.0000 5.294919202653e-25 +3042.2500 6.415327993857e-25 +3042.5000 7.770389092009e-25 +3042.7500 9.408730738892e-25 +3043.0000 1.138895002263e-24 +3043.2500 1.378163386327e-24 +3043.5000 1.667178504424e-24 +3043.7500 2.016173351662e-24 +3044.0000 2.437462890098e-24 +3044.2500 2.945862884342e-24 +3044.5000 3.559192022562e-24 +3044.7500 4.298873687173e-24 +3045.0000 5.190656915344e-24 +3045.2500 6.265479873881e-24 +3045.5000 7.560503681082e-24 +3045.7500 9.120349776349e-24 +3046.0000 1.099858042865e-23 +3046.2500 1.325946957943e-23 +3046.5000 1.598012026178e-23 +3046.7500 1.925299559544e-23 +3047.0000 2.318894314581e-23 +3047.2500 2.792080763312e-23 +3047.5000 3.360774503240e-23 +3047.7500 4.044037254662e-23 +3048.0000 4.864691438983e-23 +3048.2500 5.850053352585e-23 +3048.5000 7.032807534719e-23 +3048.7500 8.452049178166e-23 +3049.0000 1.015452647049e-22 +3049.2500 1.219612072571e-22 +3049.5000 1.464360924155e-22 +3049.7500 1.757676419712e-22 +3050.0000 2.109085082711e-22 +3050.2500 2.529959985017e-22 +3050.5000 3.033874302204e-22 +3050.7500 3.637021711460e-22 +3051.0000 4.358716104881e-22 +3051.2500 5.221985387079e-22 +3051.5000 6.254276838895e-22 +3051.7500 7.488294733265e-22 +3052.0000 8.962994672586e-22 +3052.2500 1.072476358238e-21 +3052.5000 1.282881956488e-21 +3052.7500 1.534087203080e-21 +3053.0000 1.833908985505e-21 +3053.2500 2.191643393928e-21 +3053.5000 2.618342074110e-21 +3053.7500 3.127139531681e-21 +3054.0000 3.733640653967e-21 +3054.2500 4.456379376956e-21 +3054.5000 5.317361379965e-21 +3054.7500 6.342705990117e-21 +3055.0000 7.563405182702e-21 +3055.2500 9.016220741924e-21 +3055.5000 1.074474438134e-20 +3055.7500 1.280065001045e-20 +3056.0000 1.524517248544e-20 +3056.2500 1.815085322938e-20 +3056.5000 2.160360020294e-20 +3056.7500 2.570511803085e-20 +3057.0000 3.057577385006e-20 +3057.2500 3.635797588751e-20 +3057.5000 4.322015518347e-20 +3057.7500 5.136145658283e-20 +3058.0000 6.101726350915e-20 +3058.2500 7.246570256673e-20 +3058.5000 8.603529921100e-20 +3058.7500 1.021139852009e-19 +3059.0000 1.211596930128e-19 +3059.2500 1.437128126860e-19 +3059.5000 1.704108336533e-19 +3059.7500 2.020055491117e-19 +3060.0000 2.393832647173e-19 +3060.2500 2.835885283709e-19 +3060.5000 3.358519853587e-19 +3060.7500 3.976230651878e-19 +3061.0000 4.706083254911e-19 +3061.2500 5.568164171419e-19 +3061.5000 6.586107964295e-19 +3061.7500 7.787714985306e-19 +3062.0000 9.205675058924e-19 +3062.2500 1.087841500533e-18 +3062.5000 1.285109086466e-18 +3062.7500 1.517674914205e-18 +3063.0000 1.791768541372e-18 +3063.2500 2.114703330845e-18 +3063.5000 2.495062231078e-18 +3063.7500 2.942914914239e-18 +3064.0000 3.470071480606e-18 +3064.2500 4.090378788388e-18 +3064.5000 4.820066455334e-18 +3064.7500 5.678150723796e-18 +3065.0000 6.686905708992e-18 +3065.2500 7.872413089933e-18 +3065.5000 9.265203086677e-18 +3065.7500 1.090100163458e-17 +3066.0000 1.282160105983e-17 +3066.2500 1.507587433165e-17 +3066.5000 1.772095617308e-17 +3066.7500 2.082361802199e-17 +3067.0000 2.446186812385e-17 +3067.2500 2.872681299684e-17 +3067.5000 3.372482224071e-17 +3067.7500 3.958004528132e-17 +3068.0000 4.643733628754e-17 +3068.2500 5.446565232276e-17 +3068.5000 6.386199997758e-17 +3068.7500 7.485601747858e-17 +3069.0000 8.771529281583e-17 +3069.2500 1.027515340493e-16 +3069.5000 1.203277259507e-16 +3069.7500 1.408664278693e-16 +3070.0000 1.648593915817e-16 +3070.2500 1.928787053666e-16 +3070.5000 2.255897021690e-16 +3070.7500 2.637659060916e-16 +3071.0000 3.083063332822e-16 +3071.2500 3.602555113640e-16 +3071.5000 4.208266368102e-16 +3071.7500 4.914283531226e-16 +3072.0000 5.736957055540e-16 +3072.2500 6.695259117577e-16 +3072.5000 7.811196837351e-16 +3072.7500 9.110289465455e-16 +3073.0000 1.062211925486e-15 +3073.2500 1.238096718145e-15 +3073.5000 1.442654633537e-15 +3073.7500 1.680484770428e-15 +3074.0000 1.956911524405e-15 +3074.2500 2.278096962118e-15 +3074.5000 2.651170285908e-15 +3074.7500 3.084376937687e-15 +3075.0000 3.587250263388e-15 +3075.2500 4.170809084867e-15 +3075.5000 4.847785012472e-15 +3075.7500 5.632883886844e-15 +3076.0000 6.543086372659e-15 +3076.2500 7.597993450679e-15 +3076.5000 8.820223380175e-15 +3076.7500 1.023586764538e-14 +3077.0000 1.187501447320e-14 +3077.2500 1.377234973282e-14 +3077.5000 1.596784642174e-14 +3077.7500 1.850755552979e-14 +3078.0000 2.144451288018e-14 +3078.2500 2.483977860237e-14 +3078.5000 2.876362823142e-14 +3078.7500 3.329691708825e-14 +3079.0000 3.853264261947e-14 +3079.2500 4.457773281166e-14 +3079.5000 5.155509269838e-14 +3079.7500 5.960594541073e-14 +3080.0000 6.889250925333e-14 +3080.2500 7.960105799672e-14 +3080.5000 9.194541805255e-14 +3080.7500 1.061709635403e-13 +3081.0000 1.225591785761e-13 +3081.2500 1.414328655449e-13 +3081.5000 1.631620887933e-13 +3081.7500 1.881709552776e-13 +3082.0000 2.169453473805e-13 +3082.2500 2.500417385975e-13 +3082.5000 2.880972403014e-13 +3082.7500 3.318410475908e-13 +3083.0000 3.821074745996e-13 +3083.2500 4.398507949173e-13 +3083.5000 5.061621313131e-13 +3083.7500 5.822886711719e-13 +3084.0000 6.696555204102e-13 +3084.2500 7.698905496506e-13 +3084.5000 8.848526326784e-13 +3084.7500 1.016663729332e-12 +3085.0000 1.167745323714e-12 +3085.2500 1.340859794763e-12 +3085.5000 1.539157370724e-12 +3085.7500 1.766229402876e-12 +3086.0000 2.026168788221e-12 +3086.2500 2.323638476894e-12 +3086.5000 2.663949119352e-12 +3086.7500 3.053147042401e-12 +3087.0000 3.498113893715e-12 +3087.2500 4.006679463576e-12 +3087.5000 4.587749382394e-12 +3087.7500 5.251449605549e-12 +3088.0000 6.009289836039e-12 +3088.2500 6.874348303292e-12 +3088.5000 7.861480616828e-12 +3088.7500 8.987555749854e-12 +3089.0000 1.027172258476e-11 +3089.2500 1.173571087433e-11 +3089.5000 1.340417094471e-11 +3089.7500 1.530505699438e-11 +3090.0000 1.747005943412e-11 +3090.2500 1.993509237335e-11 +3090.5000 2.274084309624e-11 +3090.7500 2.593339119512e-11 +3091.0000 2.956490594948e-11 +3091.2500 3.369443156585e-11 +3091.5000 3.838877104047e-11 +3091.7500 4.372348068501e-11 +3092.0000 4.978398878088e-11 +3092.2500 5.666685341654e-11 +3092.5000 6.448117633138e-11 +3092.7500 7.335019156099e-11 +3093.0000 8.341304987195e-11 +3093.2500 9.482682241554e-11 +3093.5000 1.077687497449e-10 +3093.7500 1.224387653588e-10 +3094.0000 1.390623262918e-10 +3094.2500 1.578935869954e-10 +3094.5000 1.792189568992e-10 +3094.7500 2.033610866327e-10 +3095.0000 2.306833329912e-10 +3095.2500 2.615947583854e-10 +3095.5000 2.965557267882e-10 +3095.7500 3.360841651433e-10 +3096.0000 3.807625669065e-10 +3096.2500 4.312458229192e-10 +3096.5000 4.882699742612e-10 +3096.7500 5.526619921812e-10 +3097.0000 6.253507017644e-10 +3097.2500 7.073789787849e-10 +3097.5000 7.999173633184e-10 +3097.7500 9.042792493058e-10 +3098.0000 1.021937826502e-09 +3098.2500 1.154544970277e-09 +3098.5000 1.303952295758e-09 +3098.7500 1.472234615940e-09 +3099.0000 1.661716069003e-09 +3099.2500 1.874999208159e-09 +3099.5000 2.114997378467e-09 +3099.7500 2.384970739142e-09 +3100.0000 2.688566327566e-09 +3100.2500 3.029862602581e-09 +3100.5000 3.413418950153e-09 +3100.7500 3.844330684606e-09 +3101.0000 4.328290133609e-09 +3101.2500 4.871654455555e-09 +3101.5000 5.481520904363e-09 +3101.7500 6.165810329579e-09 +3102.0000 6.933359779600e-09 +3102.2500 7.794025163554e-09 +3102.5000 8.758795023460e-09 +3102.7500 9.839916573666e-09 +3103.0000 1.105103527994e-08 +3103.2500 1.240734937696e-08 +3103.5000 1.392578086119e-08 +3103.7500 1.562516464744e-08 +3104.0000 1.752645774296e-08 +3104.2500 1.965297047340e-08 +3104.5000 2.203062199312e-08 +3104.7500 2.468822252752e-08 +3105.0000 2.765778503115e-08 +3105.2500 3.097486920208e-08 +3105.5000 3.467896107357e-08 +3105.7500 3.881389170981e-08 +3106.0000 4.342829886550e-08 +3106.2500 4.857613583223e-08 +3106.5000 5.431723208940e-08 +3106.7500 6.071791080798e-08 +3107.0000 6.785166872284e-08 +3107.2500 7.579992439850e-08 +3107.5000 8.465284146613e-08 +3107.7500 9.451023401015e-08 +3108.0000 1.054825619358e-07 +3108.2500 1.176920248567e-07 +3108.5000 1.312737638109e-07 +3108.7500 1.463771809455e-07 +3109.0000 1.631673882154e-07 +3109.2500 1.818267971198e-07 +3109.5000 2.025568625593e-07 +3109.7500 2.255799950461e-07 +3110.0000 2.511416567393e-07 +3110.2500 2.795126581226e-07 +3110.5000 3.109916735928e-07 +3110.7500 3.459079957950e-07 +3111.0000 3.846245502377e-07 +3111.2500 4.275411935477e-07 +3111.5000 4.750983206995e-07 +3111.7500 5.277808086831e-07 +3112.0000 5.861223263681e-07 +3112.2500 6.507100427947e-07 +3112.5000 7.221897687856e-07 +3112.7500 8.012715696391e-07 +3113.0000 8.887358897473e-07 +3113.2500 9.854402333014e-07 +3113.5000 1.092326448809e-06 +3113.7500 1.210428668982e-06 +3114.0000 1.340881961660e-06 +3114.2500 1.484931751859e-06 +3114.5000 1.643944079760e-06 +3114.7500 1.819416764533e-06 +3115.0000 2.012991549339e-06 +3115.2500 2.226467308670e-06 +3115.5000 2.461814405436e-06 +3115.7500 2.721190291888e-06 +3116.0000 3.006956455575e-06 +3116.2500 3.321696819227e-06 +3116.5000 3.668237711535e-06 +3116.7500 4.049669534570e-06 +3117.0000 4.469370262837e-06 +3117.2500 4.931030918880e-06 +3117.5000 5.438683180928e-06 +3117.7500 5.996729289322e-06 +3118.0000 6.609974430450e-06 +3118.2500 7.283661789685e-06 +3118.5000 8.023510478374e-06 +3118.7500 8.835756554389e-06 +3119.0000 9.727197371044e-06 +3119.2500 1.070523950548e-05 +3119.5000 1.177795053491e-05 +3119.7500 1.295411494740e-05 +3120.0000 1.424329449338e-05 +3120.2500 1.565589330449e-05 +3120.5000 1.720322812836e-05 +3120.7500 1.889760405088e-05 +3121.0000 2.075239610182e-05 +3121.2500 2.278213716559e-05 +3121.5000 2.500261264608e-05 +3121.7500 2.743096236317e-05 +3122.0000 3.008579018892e-05 +3122.2500 3.298728196339e-05 +3122.5000 3.615733226354e-05 +3122.7500 3.961968063429e-05 +3123.0000 4.340005792804e-05 +3123.2500 4.752634343795e-05 +3123.5000 5.202873355174e-05 +3123.7500 5.693992269588e-05 +3124.0000 6.229529738513e-05 +3124.2500 6.813314424053e-05 +3124.5000 7.449487288802e-05 +3124.7500 8.142525470263e-05 +3125.0000 8.897267841730e-05 +3125.2500 9.718942367261e-05 +3125.5000 1.061319536432e-04 +3125.7500 1.158612279385e-04 +3126.0000 1.264430370412e-04 +3126.2500 1.379483596120e-04 +3126.5000 1.504537440635e-04 +3126.7500 1.640417158740e-04 +3127.0000 1.788012121925e-04 +3127.2500 1.948280453629e-04 +3127.5000 2.122253970761e-04 +3127.7500 2.311043449468e-04 +3128.0000 2.515844233952e-04 +3128.2500 2.737942208091e-04 +3128.5000 2.978720150510e-04 +3128.7500 3.239664494754e-04 +3129.0000 3.522372517192e-04 +3129.2500 3.828559976305e-04 +3129.5000 4.160069228087e-04 +3129.7500 4.518877843344e-04 +3130.0000 4.907107753821e-04 +3130.2500 5.327034955194e-04 +3130.5000 5.781099796166e-04 +3130.7500 6.271917884068e-04 +3131.0000 6.802291638603e-04 +3131.2500 7.375222526593e-04 +3131.5000 7.993924011884e-04 +3131.7500 8.661835255790e-04 +3132.0000 9.382635604810e-04 +3132.2500 1.016025990363e-03 +3132.5000 1.099891467278e-03 +3132.7500 1.190309519157e-03 +3133.0000 1.287760352841e-03 +3133.2500 1.392756756187e-03 +3133.5000 1.505846103713e-03 +3133.7500 1.627612470402e-03 +3134.0000 1.758678858387e-03 +3134.2500 1.899709541411e-03 +3134.5000 2.051412532045e-03 +3134.7500 2.214542176814e-03 +3135.0000 2.389901884468e-03 +3135.2500 2.578346992806e-03 +3135.5000 2.780787779518e-03 +3135.7500 2.998192622695e-03 +3136.0000 3.231591316698e-03 +3136.2500 3.482078549232e-03 +3136.5000 3.750817545536e-03 +3136.7500 4.039043885710e-03 +3137.0000 4.348069501259e-03 +3137.2500 4.679286857027e-03 +3137.5000 5.034173324750e-03 +3137.7500 5.414295754493e-03 +3138.0000 5.821315250295e-03 +3138.2500 6.256992156367e-03 +3138.5000 6.723191260188e-03 +3138.7500 7.221887218866e-03 +3139.0000 7.755170215079e-03 +3139.2500 8.325251848916e-03 +3139.5000 8.934471271842e-03 +3139.7500 9.585301568972e-03 +3140.0000 1.028035639573e-02 +3140.2500 1.102239687486e-02 +3140.5000 1.181433875956e-02 +3140.7500 1.265925986854e-02 +3141.0000 1.356040779827e-02 +3141.2500 1.452120791783e-02 +3141.5000 1.554527165140e-02 +3141.7500 1.663640505293e-02 +3142.0000 1.779861767766e-02 +3142.2500 1.903613175442e-02 +3142.5000 2.035339166263e-02 +3142.7500 2.175507371705e-02 +3143.0000 2.324609626350e-02 +3143.2500 2.483163008770e-02 +3143.5000 2.651710913934e-02 +3143.7500 2.830824157257e-02 +3144.0000 3.021102110384e-02 +3144.2500 3.223173868703e-02 +3144.5000 3.437699450557e-02 +3144.7500 3.665371028009e-02 +3145.0000 3.906914188967e-02 +3145.2500 4.163089230395e-02 +3145.5000 4.434692482229e-02 +3145.7500 4.722557661555e-02 +3146.0000 5.027557256494e-02 +3146.2500 5.350603939153e-02 +3146.5000 5.692652006880e-02 +3146.7500 6.054698850984e-02 +3147.0000 6.437786451936e-02 +3147.2500 6.843002899971e-02 +3147.5000 7.271483939886e-02 +3147.7500 7.724414538709e-02 +3148.0000 8.203030474761e-02 +3148.2500 8.708619946539e-02 +3148.5000 9.242525199674e-02 +3148.7500 9.806144170099e-02 +3149.0000 1.040093214141e-01 +3149.2500 1.102840341422e-01 +3149.5000 1.169013298530e-01 +3149.7500 1.238775823385e-01 +3150.0000 1.312298061240e-01 +3150.2500 1.389756733963e-01 +3150.5000 1.471335309185e-01 +3150.7500 1.557224169038e-01 +3151.0000 1.647620778135e-01 +3151.2500 1.742729850441e-01 +3151.5000 1.842763514696e-01 +3151.7500 1.947941477988e-01 +3152.0000 2.058491187094e-01 +3152.2500 2.174647987172e-01 +3152.5000 2.296655277378e-01 +3152.7500 2.424764662957e-01 +3153.0000 2.559236103354e-01 +3153.2500 2.700338055863e-01 +3153.5000 2.848347614321e-01 +3153.7500 3.003550642344e-01 +3154.0000 3.166241900570e-01 +3154.2500 3.336725167391e-01 +3154.5000 3.515313352603e-01 +3154.7500 3.702328603428e-01 +3155.0000 3.898102402321e-01 +3155.2500 4.102975655980e-01 +3155.5000 4.317298774962e-01 +3155.7500 4.541431743296e-01 +3156.0000 4.775744177488e-01 +3156.2500 5.020615374274e-01 +3156.5000 5.276434346520e-01 +3156.7500 5.543599846619e-01 +3157.0000 5.822520376750e-01 +3157.2500 6.113614185371e-01 +3157.5000 6.417309249293e-01 +3157.7500 6.734043240715e-01 +3158.0000 7.064263478568e-01 +3158.2500 7.408426863553e-01 +3158.5000 7.766999796236e-01 +3158.7500 8.140458077601e-01 +3159.0000 8.529286791439e-01 +3159.2500 8.933980167993e-01 +3159.5000 9.355041428269e-01 +3159.7500 9.792982608468e-01 +3160.0000 1.024832436397e+00 +3160.2500 1.072159575237e+00 +3160.5000 1.121333399507e+00 +3160.7500 1.172408421688e+00 +3161.0000 1.225439916333e+00 +3161.2500 1.280483889511e+00 +3161.5000 1.337597045933e+00 +3161.7500 1.396836753731e+00 +3162.0000 1.458261006844e+00 +3162.2500 1.521928384992e+00 +3162.5000 1.587898011224e+00 +3162.7500 1.656229506996e+00 +3163.0000 1.726982944789e+00 +3163.2500 1.800218798248e+00 +3163.5000 1.875997889833e+00 +3163.7500 1.954381335987e+00 +3164.0000 2.035430489835e+00 +3164.2500 2.119206881406e+00 +3164.5000 2.205772155416e+00 +3164.7500 2.295188006625e+00 +3165.0000 2.387516112804e+00 +3165.2500 2.482818065336e+00 +3165.5000 2.581155297510e+00 +3165.7500 2.682589010550e+00 +3166.0000 2.787180097432e+00 +3166.2500 2.894989064555e+00 +3166.5000 3.006075951342e+00 +3166.7500 3.120500247839e+00 +3167.0000 3.238320810400e+00 +3167.2500 3.359595775550e+00 +3167.5000 3.484382472128e+00 +3167.7500 3.612737331810e+00 +3168.0000 3.744715798123e+00 +3168.2500 3.880372234083e+00 +3168.5000 4.019759828571e+00 +3168.7500 4.162930501581e+00 +3169.0000 4.309934808498e+00 +3169.2500 4.460821843530e+00 +3169.5000 4.615639142465e+00 +3169.7500 4.774432584907e+00 +3170.0000 4.937246296160e+00 +3170.2500 5.104122548935e+00 +3170.5000 5.275101665047e+00 +3170.7500 5.450221917302e+00 +3171.0000 5.629519431758e+00 +3171.2500 5.813028090541e+00 +3171.5000 6.000779435433e+00 +3171.7500 6.192802572423e+00 +3172.0000 6.389124077436e+00 +3172.2500 6.589767903430e+00 +3172.5000 6.794755289101e+00 +3172.7500 7.004104669390e+00 +3173.0000 7.217831588010e+00 +3173.2500 7.435948612223e+00 +3173.5000 7.658465250075e+00 +3173.7500 7.885387870305e+00 +3174.0000 8.116719625161e+00 +3174.2500 8.352460376324e+00 +3174.5000 8.592606624170e+00 +3174.7500 8.837151440574e+00 +3175.0000 9.086084405477e+00 +3175.2500 9.339391547413e+00 +3175.5000 9.597055288217e+00 +3175.7500 9.859054392098e+00 +3176.0000 1.012536391928e+01 +3176.2500 1.039595518440e+01 +3176.5000 1.067079571985e+01 +3176.7500 1.094984924422e+01 +3177.0000 1.123307563607e+01 +3177.2500 1.152043091304e+01 +3177.5000 1.181186721672e+01 +3177.7500 1.210733280310e+01 +3178.0000 1.240677203898e+01 +3178.2500 1.271012540434e+01 +3178.5000 1.301732950082e+01 +3178.7500 1.332831706641e+01 +3179.0000 1.364301699638e+01 +3179.2500 1.396135437065e+01 +3179.5000 1.428325048751e+01 +3179.7500 1.460862290380e+01 +3180.0000 1.493738548167e+01 +3180.2500 1.526944844180e+01 +3180.5000 1.560471842310e+01 +3180.7500 1.594309854905e+01 +3181.0000 1.628448850036e+01 +3181.2500 1.662878459424e+01 +3181.5000 1.697587986989e+01 +3181.7500 1.732566418045e+01 +3182.0000 1.767802429103e+01 +3182.2500 1.803284398299e+01 +3182.5000 1.839000416411e+01 +3182.7500 1.874938298465e+01 +3183.0000 1.911085595915e+01 +3183.2500 1.947429609366e+01 +3183.5000 1.983957401841e+01 +3183.7500 2.020655812562e+01 +3184.0000 2.057511471215e+01 +3184.2500 2.094510812695e+01 +3184.5000 2.131640092287e+01 +3184.7500 2.168885401275e+01 +3185.0000 2.206232682938e+01 +3185.2500 2.243667748903e+01 +3185.5000 2.281176295845e+01 +3185.7500 2.318743922475e+01 +3186.0000 2.356356146807e+01 +3186.2500 2.393998423657e+01 +3186.5000 2.431656162340e+01 +3186.7500 2.469314744545e+01 +3187.0000 2.506959542327e+01 +3187.2500 2.544575936200e+01 +3187.5000 2.582149333284e+01 +3187.7500 2.619665185468e+01 +3188.0000 2.657109007557e+01 +3188.2500 2.694466395346e+01 +3188.5000 2.731723043611e+01 +3188.7500 2.768864763948e+01 +3189.0000 2.805877502436e+01 +3189.2500 2.842747357084e+01 +3189.5000 2.879460595016e+01 +3189.7500 2.916003669361e+01 +3190.0000 2.952363235798e+01 +3190.2500 2.988526168741e+01 +3190.5000 3.024479577092e+01 +3190.7500 3.060210819553e+01 +3191.0000 3.095707519450e+01 +3191.2500 3.130957579028e+01 +3191.5000 3.165949193189e+01 +3191.7500 3.200670862640e+01 +3192.0000 3.235111406411e+01 +3192.2500 3.269259973716e+01 +3192.5000 3.303106055133e+01 +3192.7500 3.336639493057e+01 +3193.0000 3.369850491423e+01 +3193.2500 3.402729624647e+01 +3193.5000 3.435267845789e+01 +3193.7500 3.467456493886e+01 +3194.0000 3.499287300467e+01 +3194.2500 3.530752395202e+01 +3194.5000 3.561844310688e+01 +3194.7500 3.592555986355e+01 +3195.0000 3.622880771471e+01 +3195.2500 3.652812427246e+01 +3195.5000 3.682345128025e+01 +3195.7500 3.711473461560e+01 +3196.0000 3.740192428366e+01 +3196.2500 3.768497440148e+01 +3196.5000 3.796384317322e+01 +3196.7500 3.823849285605e+01 +3197.0000 3.850888971705e+01 +3197.2500 3.877500398113e+01 +3197.5000 3.903680976996e+01 +3197.7500 3.929428503222e+01 +3198.0000 3.954741146521e+01 +3198.2500 3.979617442809e+01 +3198.5000 4.004056284682e+01 +3198.7500 4.028056911119e+01 +3199.0000 4.051618896406e+01 +3199.2500 4.074742138316e+01 +3199.5000 4.097426845565e+01 +3199.7500 4.119673524589e+01 +3200.0000 4.141482965658e+01 +3200.2500 4.162856228380e+01 +3200.5000 4.183794626611e+01 +3200.7500 4.204299712831e+01 +3201.0000 4.224373262010e+01 +3201.2500 4.244017255014e+01 +3201.5000 4.263233861587e+01 +3201.7500 4.282025422962e+01 +3202.0000 4.300394434140e+01 +3202.2500 4.318343525884e+01 +3202.5000 4.335875446480e+01 +3202.7500 4.352993043306e+01 +3203.0000 4.369699244267e+01 +3203.2500 4.385997039139e+01 +3203.5000 4.401889460870e+01 +3203.7500 4.417379566902e+01 +3204.0000 4.432470420548e+01 +3204.2500 4.447165072482e+01 +3204.5000 4.461466542396e+01 +3204.7500 4.475377800874e+01 +3205.0000 4.488901751518e+01 +3205.2500 4.502041213407e+01 +3205.5000 4.514798903897e+01 +3205.7500 4.527177421854e+01 +3206.0000 4.539179231329e+01 +3206.2500 4.550806645745e+01 +3206.5000 4.562061812637e+01 +3206.7500 4.572946698978e+01 +3207.0000 4.583463077151e+01 +3207.2500 4.593612511590e+01 +3207.5000 4.603396346147e+01 +3207.7500 4.612815692203e+01 +3208.0000 4.621871417582e+01 +3208.2500 4.630564136277e+01 +3208.5000 4.638894199043e+01 +3208.7500 4.646861684866e+01 +3209.0000 4.654466393352e+01 +3209.2500 4.661707838052e+01 +3209.5000 4.668585240744e+01 +3209.7500 4.675097526700e+01 +3210.0000 4.681243320952e+01 +3210.2500 4.687020945564e+01 +3210.5000 4.692428417938e+01 +3210.7500 4.697463450151e+01 +3211.0000 4.702123449331e+01 +3211.2500 4.706405519086e+01 +3211.5000 4.710306461976e+01 +3211.7500 4.713822783030e+01 +3212.0000 4.716950694309e+01 +3212.2500 4.719686120498e+01 +3212.5000 4.722024705528e+01 +3212.7500 4.723961820208e+01 +3213.0000 4.725492570853e+01 +3213.2500 4.726611808893e+01 +3213.5000 4.727314141438e+01 +3213.7500 4.727593942781e+01 +3214.0000 4.727445366802e+01 +3214.2500 4.726862360265e+01 +3214.5000 4.725838676953e+01 +3214.7500 4.724367892624e+01 +3215.0000 4.722443420751e+01 +3215.2500 4.720058528999e+01 +3215.5000 4.717206356409e+01 +3215.7500 4.713879931245e+01 +3216.0000 4.710072189455e+01 +3216.2500 4.705775993711e+01 +3216.5000 4.700984152967e+01 +3216.7500 4.695689442503e+01 +3217.0000 4.689884624388e+01 +3217.2500 4.683562468327e+01 +3217.5000 4.676715772828e+01 +3217.7500 4.669337386638e+01 +3218.0000 4.661420230402e+01 +3218.2500 4.652957318478e+01 +3218.5000 4.643941780862e+01 +3218.7500 4.634366885164e+01 +3219.0000 4.624226058580e+01 +3219.2500 4.613512909797e+01 +3219.5000 4.602221250792e+01 +3219.7500 4.590345118449e+01 +3220.0000 4.577878795954e+01 +3220.2500 4.564816833905e+01 +3220.5000 4.551154071083e+01 +3220.7500 4.536885654839e+01 +3221.0000 4.522007061031e+01 +3221.2500 4.506514113473e+01 +3221.5000 4.490403002835e+01 +3221.7500 4.473670304957e+01 +3222.0000 4.456312998512e+01 +3222.2500 4.438328481994e+01 +3222.5000 4.419714589973e+01 +3222.7500 4.400469608573e+01 +3223.0000 4.380592290147e+01 +3223.2500 4.360081867096e+01 +3223.5000 4.338938064805e+01 +3223.7500 4.317161113662e+01 +3224.0000 4.294751760119e+01 +3224.2500 4.271711276787e+01 +3224.5000 4.248041471512e+01 +3224.7500 4.223744695432e+01 +3225.0000 4.198823849981e+01 +3225.2500 4.173282392823e+01 +3225.5000 4.147124342703e+01 +3225.7500 4.120354283202e+01 +3226.0000 4.092977365385e+01 +3226.2500 4.064999309334e+01 +3226.5000 4.036426404560e+01 +3226.7500 4.007265509296e+01 +3227.0000 3.977524048673e+01 +3227.2500 3.947210011773e+01 +3227.5000 3.916331947580e+01 +3227.7500 3.884898959824e+01 +3228.0000 3.852920700741e+01 +3228.2500 3.820407363761e+01 +3228.5000 3.787369675130e+01 +3228.7500 3.753818884507e+01 +3229.0000 3.719766754539e+01 +3229.2500 3.685225549447e+01 +3229.5000 3.650208022649e+01 +3229.7500 3.614727403451e+01 +3230.0000 3.578797382826e+01 +3230.2500 3.542432098339e+01 +3230.5000 3.505646118219e+01 +3230.7500 3.468454424644e+01 +3231.0000 3.430872396267e+01 +3231.2500 3.392915790018e+01 +3231.5000 3.354600722229e+01 +3231.7500 3.315943649127e+01 +3232.0000 3.276961346738e+01 +3232.2500 3.237670890245e+01 +3232.5000 3.198089632840e+01 +3232.7500 3.158235184142e+01 +3233.0000 3.118125388193e+01 +3233.2500 3.077778301110e+01 +3233.5000 3.037212168429e+01 +3233.7500 2.996445402189e+01 +3234.0000 2.955496557813e+01 +3234.2500 2.914384310825e+01 +3234.5000 2.873127433462e+01 +3234.7500 2.831744771227e+01 +3235.0000 2.790255219424e+01 +3235.2500 2.748677699739e+01 +3235.5000 2.707031136898e+01 +3235.7500 2.665334435461e+01 +3236.0000 2.623606456788e+01 +3236.2500 2.581865996235e+01 +3236.5000 2.540131760614e+01 +3236.7500 2.498422345954e+01 +3237.0000 2.456756215630e+01 +3237.2500 2.415151678870e+01 +3237.5000 2.373626869694e+01 +3237.7500 2.332199726331e+01 +3238.0000 2.290887971128e+01 +3238.2500 2.249709091004e+01 +3238.5000 2.208680318474e+01 +3238.7500 2.167818613270e+01 +3239.0000 2.127140644599e+01 +3239.2500 2.086662774052e+01 +3239.5000 2.046401039199e+01 +3239.7500 2.006371137891e+01 +3240.0000 1.966588413283e+01 +3240.2500 1.927067839606e+01 +3240.5000 1.887824008707e+01 +3240.7500 1.848871117356e+01 +3241.0000 1.810222955357e+01 +3241.2500 1.771892894449e+01 +3241.5000 1.733893878032e+01 +3241.7500 1.696238411697e+01 +3242.0000 1.658938554591e+01 +3242.2500 1.622005911606e+01 +3242.5000 1.585451626389e+01 +3242.7500 1.549286375190e+01 +3243.0000 1.513520361528e+01 +3243.2500 1.478163311678e+01 +3243.5000 1.443224470972e+01 +3243.7500 1.408712600911e+01 +3244.0000 1.374635977064e+01 +3244.2500 1.341002387765e+01 +3244.5000 1.307819133571e+01 +3244.7500 1.275093027488e+01 +3245.0000 1.242830395936e+01 +3245.2500 1.211037080437e+01 +3245.5000 1.179718440023e+01 +3245.7500 1.148879354317e+01 +3246.0000 1.118524227298e+01 +3246.2500 1.088656991702e+01 +3246.5000 1.059281114051e+01 +3246.7500 1.030399600289e+01 +3247.0000 1.002015001985e+01 +3247.2500 9.741294230987e+00 +3247.5000 9.467445272650e+00 +3247.7500 9.198615455868e+00 +3248.0000 8.934812848976e+00 +3248.2500 8.676041364748e+00 +3248.5000 8.422300851724e+00 +3248.7500 8.173587189478e+00 +3249.0000 7.929892387548e+00 +3249.2500 7.691204687742e+00 +3249.5000 7.457508669559e+00 +3249.7500 7.228785358431e+00 +3250.0000 7.005012336530e+00 +3250.2500 6.786163855855e+00 +3250.5000 6.572210953332e+00 +3250.7500 6.363121567663e+00 +3251.0000 6.158860657651e+00 +3251.2500 5.959390321758e+00 +3251.5000 5.764669918623e+00 +3251.7500 5.574656188311e+00 +3252.0000 5.389303374025e+00 +3252.2500 5.208563344069e+00 +3252.5000 5.032385713815e+00 +3252.7500 4.860717967459e+00 +3253.0000 4.693505579338e+00 +3253.2500 4.530692134619e+00 +3253.5000 4.372219449135e+00 +3253.7500 4.218027688200e+00 +3254.0000 4.068055484195e+00 +3254.2500 3.922240052771e+00 +3254.5000 3.780517307482e+00 +3254.7500 3.642821972707e+00 +3255.0000 3.509087694700e+00 +3255.2500 3.379247150632e+00 +3255.5000 3.253232155494e+00 +3255.7500 3.130973766738e+00 +3256.0000 3.012402386540e+00 +3256.2500 2.897447861590e+00 +3256.5000 2.786039580300e+00 +3256.7500 2.678106567356e+00 +3257.0000 2.573577575527e+00 +3257.2500 2.472381174673e+00 +3257.5000 2.374445837877e+00 +3257.7500 2.279700024662e+00 +3258.0000 2.188072261240e+00 +3258.2500 2.099491217762e+00 +3258.5000 2.013885782545e+00 +3258.7500 1.931185133234e+00 +3259.0000 1.851318804919e+00 +3259.2500 1.774216755173e+00 +3259.5000 1.699809426015e+00 +3259.7500 1.628027802827e+00 +3260.0000 1.558803470205e+00 +3260.2500 1.492068664789e+00 +3260.5000 1.427756325086e+00 +3260.7500 1.365800138314e+00 +3261.0000 1.306134584309e+00 +3261.2500 1.248694976533e+00 +3261.5000 1.193417500218e+00 +3261.7500 1.140239247716e+00 +3262.0000 1.089098251081e+00 +3262.2500 1.039933511960e+00 +3262.5000 9.926850288487e-01 +3262.7500 9.472938217595e-01 +3263.0000 9.037019543911e-01 +3263.2500 8.618525538479e-01 +3263.5000 8.216898279893e-01 +3263.7500 7.831590804779e-01 +3264.0000 7.462067236005e-01 +3264.2500 7.107802889376e-01 +3264.5000 6.768284359573e-01 +3264.7500 6.443009586105e-01 +3265.0000 6.131487900063e-01 +3265.2500 5.833240052457e-01 +3265.5000 5.547798224910e-01 +3265.7500 5.274706023526e-01 +3266.0000 5.013518456688e-01 +3266.2500 4.763801897592e-01 +3266.5000 4.525134032281e-01 +3266.7500 4.297103793967e-01 +3267.0000 4.079311284388e-01 +3267.2500 3.871367682968e-01 +3267.5000 3.672895144521e-01 +3267.7500 3.483526686231e-01 +3268.0000 3.302906064620e-01 +3268.2500 3.130687643225e-01 +3268.5000 2.966536251650e-01 +3268.7500 2.810127036689e-01 +3269.0000 2.661145306163e-01 +3269.2500 2.519286366104e-01 +3269.5000 2.384255351926e-01 +3269.7500 2.255767054158e-01 +3270.0000 2.133545739338e-01 +3270.2500 2.017324966628e-01 +3270.5000 1.906847400679e-01 +3270.7500 1.801864621285e-01 +3271.0000 1.702136930304e-01 +3271.2500 1.607433156353e-01 +3271.5000 1.517530457708e-01 +3271.7500 1.432214123868e-01 +3272.0000 1.351277376189e-01 +3272.2500 1.274521167990e-01 +3272.5000 1.201753984503e-01 +3272.7500 1.132791643034e-01 +3273.0000 1.067457093650e-01 +3273.2500 1.005580220741e-01 +3273.5000 9.469976457167e-02 +3273.7500 8.915525311515e-02 +3274.0000 8.390943866133e-02 +3274.2500 7.894788764297e-02 +3274.5000 7.425676296140e-02 +3274.7500 6.982280521552e-02 +3275.0000 6.563331418669e-02 +3275.2500 6.167613059645e-02 +3275.5000 5.793961815339e-02 +3275.7500 5.441264590312e-02 +3276.0000 5.108457089448e-02 +3276.2500 4.794522117338e-02 +3276.5000 4.498487911434e-02 +3276.7500 4.219426509869e-02 +3277.0000 3.956452154695e-02 +3277.2500 3.708719731179e-02 +3277.5000 3.475423243698e-02 +3277.7500 3.255794328639e-02 +3278.0000 3.049100804638e-02 +3278.2500 2.854645260382e-02 +3278.5000 2.671763680100e-02 +3278.7500 2.499824106801e-02 +3279.0000 2.338225343222e-02 +3279.2500 2.186395690387e-02 +3279.5000 2.043791723587e-02 +3279.7500 1.909897105558e-02 +3280.0000 1.784221436538e-02 +3280.2500 1.666299140855e-02 +3280.5000 1.555688389625e-02 +3280.7500 1.451970059119e-02 +3281.0000 1.354746724277e-02 +3281.2500 1.263641686853e-02 +3281.5000 1.178298037588e-02 +3281.7500 1.098377751831e-02 +3282.0000 1.023560817945e-02 +3282.2500 9.535443978679e-03 +3282.5000 8.880420191128e-03 +3282.7500 8.267827975340e-03 +3283.0000 7.695106901255e-03 +3283.2500 7.159837771286e-03 +3283.5000 6.659735727068e-03 +3283.7500 6.192643634387e-03 +3284.0000 5.756525738763e-03 +3284.2500 5.349461584094e-03 +3284.5000 4.969640186779e-03 +3284.7500 4.615354457725e-03 +3285.0000 4.284995864679e-03 +3285.2500 3.977049327342e-03 +3285.5000 3.690088337791e-03 +3285.7500 3.422770298812e-03 +3286.0000 3.173832072780e-03 +3286.2500 2.942085733882e-03 +3286.5000 2.726414516505e-03 +3286.7500 2.525768952788e-03 +3287.0000 2.339163192408e-03 +3287.2500 2.165671497826e-03 +3287.5000 2.004424908333e-03 +3287.7500 1.854608066395e-03 +3288.0000 1.715456199924e-03 +3288.2500 1.586252254250e-03 +3288.5000 1.466324167748e-03 +3288.7500 1.355042285188e-03 +3289.0000 1.251816903069e-03 +3289.2500 1.156095941337e-03 +3289.5000 1.067362736069e-03 +3289.7500 9.851339478215e-04 +3290.0000 9.089575805767e-04 +3290.2500 8.384111062985e-04 +3290.5000 7.730996903372e-04 +3290.7500 7.126545130445e-04 +3291.0000 6.567311831321e-04 +3291.2500 6.050082384598e-04 +3291.5000 5.571857300976e-04 +3291.7500 5.129838856541e-04 +3292.0000 4.721418480156e-04 +3292.2500 4.344164857894e-04 +3292.5000 3.995812718844e-04 +3292.7500 3.674252268102e-04 +3293.0000 3.377519234062e-04 +3293.2500 3.103785498563e-04 +3293.5000 2.851350279672e-04 +3293.7500 2.618631838249e-04 +3294.0000 2.404159680629e-04 +3294.2500 2.206567230993e-04 +3294.5000 2.024584948175e-04 +3294.7500 1.857033862793e-04 +3295.0000 1.702819511687e-04 +3295.2500 1.560926247719e-04 +3295.5000 1.430411904036e-04 +3295.7500 1.310402792868e-04 +3296.0000 1.200089019915e-04 +3296.2500 1.098720096292e-04 +3296.5000 1.005600830894e-04 +3296.7500 9.200874869075e-05 +3297.0000 8.415841869996e-05 +3297.2500 7.695395525344e-05 +3297.5000 7.034435628964e-05 +3297.7500 6.428246217487e-05 +3298.0000 5.872468177381e-05 +3298.2500 5.363073678314e-05 +3298.5000 4.896342321012e-05 +3298.7500 4.468838893902e-05 +3299.0000 4.077392638625e-05 +3299.2500 3.719077930065e-05 +3299.5000 3.391196281817e-05 +3299.7500 3.091259593046e-05 +3300.0000 2.816974557514e-05 +3300.2500 2.566228160056e-05 +3300.5000 2.337074190200e-05 +3300.7500 2.127720706660e-05 +3301.0000 1.936518390423e-05 +3301.2500 1.761949727785e-05 +3301.5000 1.602618968287e-05 +3301.7500 1.457242805763e-05 +3302.0000 1.324641733924e-05 +3302.2500 1.203732030850e-05 +3302.5000 1.093518329628e-05 +3302.7500 9.930867350009e-06 +3303.0000 9.015984484429e-06 +3303.2500 8.182838664594e-06 +3303.5000 7.424371191382e-06 +3303.7500 6.734110181134e-06 +3304.0000 6.106123850932e-06 +3304.2500 5.534977339859e-06 +3304.5000 5.015692814251e-06 +3304.7500 4.543712621646e-06 +3305.0000 4.114865273756e-06 +3305.2500 3.725334053515e-06 +3305.5000 3.371628055081e-06 +3305.7500 3.050555478616e-06 +3306.0000 2.759199013862e-06 +3306.2500 2.494893157920e-06 +3306.5000 2.255203323341e-06 +3306.7500 2.037906602643e-06 +3307.0000 1.840974064760e-06 +3307.2500 1.662554467666e-06 +3307.5000 1.500959279667e-06 +3307.7500 1.354648909467e-06 +3308.0000 1.222220052326e-06 +3308.2500 1.102394066274e-06 +3308.5000 9.940062986110e-07 +3308.7500 8.959962887361e-07 +3309.0000 8.073987787707e-07 +3309.2500 7.273354685045e-07 +3309.5000 6.550074558993e-07 +3309.7500 5.896883087700e-07 +3310.0000 5.307177173408e-07 +3310.2500 4.774956811704e-07 +3310.5000 4.294771874622e-07 +3310.7500 3.861673410567e-07 +3311.0000 3.471169094404e-07 +3311.2500 3.119182489340e-07 +3311.5000 2.802015808375e-07 +3311.7500 2.516315887452e-07 +3312.0000 2.259043104892e-07 +3312.2500 2.027443002594e-07 +3312.5000 1.819020383801e-07 +3312.7500 1.631515680076e-07 +3313.0000 1.462883396721e-07 +3313.2500 1.311272461117e-07 +3313.5000 1.175008312633e-07 +3313.7500 1.052576585801e-07 +3314.0000 9.426082505103e-08 +3314.2500 8.438660841106e-08 +3314.5000 7.552323605766e-08 +3314.7500 6.756976513691e-08 +3315.0000 6.043506413444e-08 +3315.2500 5.403688711130e-08 +3315.5000 4.830103246549e-08 +3315.7500 4.316057878170e-08 +3316.0000 3.855519095902e-08 +3316.2500 3.443049038362e-08 +3316.5000 3.073748344357e-08 +3316.7500 2.743204317071e-08 +3317.0000 2.447443924179e-08 +3317.2500 2.182891198248e-08 +3317.5000 1.946328639480e-08 +3317.7500 1.734862257470e-08 +3318.0000 1.545889920366e-08 +3318.2500 1.377072708900e-08 +3318.5000 1.226308999402e-08 +3318.7500 1.091711024286e-08 +3319.0000 9.715836808463e-09 +3319.2500 8.644053796206e-09 +3319.5000 7.688107422475e-09 +3319.7500 6.835749758545e-09 +3320.0000 6.075997665941e-09 +3320.2500 5.399005492130e-09 +3320.5000 4.795950225538e-09 +3320.7500 4.258927927664e-09 +3321.0000 3.780860368406e-09 +3321.2500 3.355410889576e-09 +3321.5000 2.976908611588e-09 +3321.7500 2.640280180416e-09 +3322.0000 2.340988326621e-09 +3322.2500 2.074976576298e-09 +3322.5000 1.838619515717e-09 +3322.7500 1.628678067713e-09 +3323.0000 1.442259289140e-09 +3323.2500 1.276780245187e-09 +3323.5000 1.129935558675e-09 +3323.7500 9.996682708429e-10 +3324.0000 8.841436849560e-10 +3324.2500 7.817258957484e-10 +3324.5000 6.909567363490e-10 +3324.7500 6.105369003802e-10 +3325.0000 5.393090204757e-10 +3325.2500 4.762425058238e-10 +3325.5000 4.204199606774e-10 +3325.7500 3.710250232779e-10 +3326.0000 3.273314804777e-10 +3326.2500 2.886935276732e-10 +3326.5000 2.545370566110e-10 +3326.7500 2.243518653365e-10 +3327.0000 1.976846951291e-10 +3327.2500 1.741330088177e-10 +3327.5000 1.533394334897e-10 +3327.7500 1.349867983876e-10 +3328.0000 1.187937057992e-10 +3328.2500 1.045105790774e-10 +3328.5000 9.191613762349e-11 +3328.7500 8.081425380650e-11 +3329.0000 7.103115141381e-11 +3329.2500 6.241290939545e-11 +3329.5000 5.482323840882e-11 +3329.7500 4.814150104233e-11 +3330.0000 4.226094962641e-11 +3330.2500 3.708715826447e-11 +3330.5000 3.253662816350e-11 +3330.7500 2.853554754207e-11 +3331.0000 2.501868936658e-11 +3331.2500 2.192843193752e-11 +3331.5000 1.921388893610e-11 +3331.7500 1.683013696585e-11 +3332.0000 1.473752990121e-11 +3332.2500 1.290109049865e-11 +3332.5000 1.128997075119e-11 +3332.7500 9.876973384496e-12 +3333.0000 8.638127714168e-12 +3333.2500 7.552313818304e-12 +3333.5000 6.600929636847e-12 +3333.7500 5.767596196453e-12 +3334.0000 5.037896684674e-12 +3334.2500 4.399145566214e-12 +3334.5000 3.840184352765e-12 +3334.7500 3.351201011776e-12 +3335.0000 2.923570333033e-12 +3335.2500 2.549712869459e-12 +3335.5000 2.222970333830e-12 +3335.7500 1.937495569504e-12 +3336.0000 1.688155423952e-12 +3336.2500 1.470445041473e-12 +3336.5000 1.280412258513e-12 +3336.7500 1.114590933638e-12 +3337.0000 9.699421764904e-13 +3337.2500 8.438025576140e-13 +3337.5000 7.338384856022e-13 +3337.7500 6.380060309156e-13 +3338.0000 5.545155582310e-13 +3338.2500 4.818006024627e-13 +3338.5000 4.184904886379e-13 +3338.7500 3.633862535185e-13 +3339.0000 3.154394780501e-13 +3339.2500 2.737336851064e-13 +3339.5000 2.374679972207e-13 +3339.7500 2.059427846387e-13 +3340.0000 1.785470655909e-13 +3340.2500 1.547474486286e-13 +3340.5000 1.340784315990e-13 +3340.7500 1.161338937158e-13 +3341.0000 1.005596365313e-13 +3341.2500 8.704684672106e-14 +3341.5000 7.532636870944e-14 +3341.7500 6.516368851844e-14 +3342.0000 5.635454201248e-14 +3342.2500 4.872107112332e-14 +3342.5000 4.210846082307e-14 +3342.7500 3.638199771612e-14 +3343.0000 3.142449826508e-14 +3343.2500 2.713406096290e-14 +3343.5000 2.342210231252e-14 +3343.7500 2.021164136228e-14 +3344.0000 1.743580184884e-14 +3344.2500 1.503650478698e-14 +3344.5000 1.296332767769e-14 +3344.7500 1.117250943753e-14 +3345.0000 9.626082728626e-15 +3345.2500 8.291117633868e-15 +3345.5000 7.139062611523e-15 +3345.7500 6.145170411049e-15 +3346.0000 5.287998166197e-15 +3346.2500 4.548972227885e-15 +3346.5000 3.912009480659e-15 +3346.7500 3.363187922446e-15 +3347.0000 2.890460195535e-15 +3347.2500 2.483404552581e-15 +3347.5000 2.133008438670e-15 +3347.7500 1.831480481052e-15 +3348.0000 1.572087212662e-15 +3348.2500 1.349011323293e-15 +3348.5000 1.157228641439e-15 +3348.7500 9.924014076673e-16 +3349.0000 8.507857131193e-16 +3349.2500 7.291512500818e-16 +3349.5000 6.247117603195e-16 +3349.7500 5.350647753328e-16 +3350.0000 4.581394246969e-16 +3350.2500 3.921512474328e-16 +3350.5000 3.355630798812e-16 +3350.7500 2.870512143301e-16 +3351.0000 2.454761279308e-16 +3351.2500 2.098571731747e-16 +3351.5000 1.793507011080e-16 +3351.7500 1.532311580416e-16 +3352.0000 1.308747570754e-16 +3352.2500 1.117453784503e-16 +3352.5000 9.538239857781e-17 +3352.7500 8.139018745168e-17 +3353.0000 6.942904878519e-17 +3353.2500 5.920740731693e-17 +3353.5000 5.047507387189e-17 +3353.7500 4.301744146325e-17 +3354.0000 3.665048542385e-17 +3354.2500 3.121645765107e-17 +3354.5000 2.658017987776e-17 +3354.7500 2.262585373842e-17 +3355.0000 1.925431654498e-17 +3355.2500 1.638068134268e-17 +3355.5000 1.393230818181e-17 +3355.7500 1.184706078434e-17 +3356.0000 1.007180905529e-17 +3356.2500 8.561143315704e-18 +3356.5000 7.276270829460e-18 +3356.7500 6.184069258521e-18 +3357.0000 5.256275193953e-18 +3357.2500 4.468788948640e-18 +3357.5000 3.801079425052e-18 +3357.7500 3.235675144005e-18 +3358.0000 2.757729486543e-18 +3358.2500 2.354649902896e-18 +3358.5000 2.015782316796e-18 +3358.7500 1.732143232122e-18 +3359.0000 1.496193159861e-18 +3359.2500 1.301645951001e-18 +3359.5000 1.143309466632e-18 +3359.7500 1.016953758991e-18 +3360.0000 9.192035929452e-19 +3360.2500 8.474527213684e-19 +3360.5000 7.997978531064e-19 +3360.7500 7.749907307974e-19 +3361.0000 7.724071787072e-19 +3361.2500 7.920323981497e-19 +3361.5000 8.344621897287e-19 +3361.7500 9.009201769335e-19 +3362.0000 9.932915038216e-19 +3362.2500 1.114173890000e-18 +3362.5000 1.266947358540e-18 +3362.7500 1.455864417000e-18 +3363.0000 1.686162979355e-18 +3363.2500 1.964204879144e-18 +3363.5000 2.297643454851e-18 +3363.7500 2.695624401925e-18 +3364.0000 3.169024898644e-18 +3364.2500 3.730736943808e-18 +3364.5000 4.396001914521e-18 +3364.7500 5.182804586416e-18 +3365.0000 6.112336284747e-18 +3365.2500 7.209538484955e-18 +3365.5000 8.503740092874e-18 +3365.7500 1.002940385032e-17 +3366.0000 1.182699988097e-17 +3366.2500 1.394402737088e-17 +3366.5000 1.643620883383e-17 +3366.7500 1.936888541935e-17 +3367.0000 2.281864636865e-17 +3367.2500 2.687523111180e-17 +3367.5000 3.164374874470e-17 +3367.7500 3.724726686143e-17 +3368.0000 4.382983010136e-17 +3368.2500 5.155997847962e-17 +3368.5000 6.063484681057e-17 +3368.7500 7.128493954355e-17 +3369.0000 8.377969038218e-17 +3369.2500 9.843393346768e-17 +3369.5000 1.156154330344e-16 +3369.7500 1.357536417097e-16 +3370.0000 1.593498845097e-16 +3370.2500 1.869891966252e-16 +3370.5000 2.193540789398e-16 +3370.7500 2.572404765866e-16 +3371.0000 3.015763335866e-16 +3371.2500 3.534431316620e-16 +3371.5000 4.141008847885e-16 +3371.7500 4.850171342101e-16 +3372.0000 5.679005729224e-16 +3372.2500 6.647400257074e-16 +3372.5000 7.778496225669e-16 +3372.7500 9.099211320362e-16 +3373.0000 1.064084568851e-15 +3373.2500 1.243978360650e-15 +3373.5000 1.453830554085e-15 +3373.7500 1.698552765604e-15 +3374.0000 1.983848840564e-15 +3374.2500 2.316340481069e-15 +3374.5000 2.703712443608e-15 +3374.7500 3.154880298557e-15 +3375.0000 3.680184192137e-15 +3375.2500 4.291612565859e-15 +3375.5000 5.003060378178e-15 +3375.7500 5.830627048947e-15 +3376.0000 6.792960121462e-15 +3376.2500 7.911651523568e-15 +3376.5000 9.211694324266e-15 +3376.7500 1.072200904386e-14 +3377.0000 1.247604990436e-14 +3377.2500 1.451250292651e-14 +3377.5000 1.687608951650e-14 +3377.7500 1.961849117080e-14 +3378.0000 2.279941319435e-14 +3378.2500 2.648780791692e-14 +3378.5000 3.076328084779e-14 +3378.7500 3.571770658106e-14 +3379.0000 4.145708511100e-14 +3379.2500 4.810367360292e-14 +3379.5000 5.579843366495e-14 +3379.7500 6.470383986247e-14 +3380.0000 7.500710170613e-14 +3380.2500 8.692385873211e-14 +3380.5000 1.007024167024e-13 +3380.7500 1.166286025202e-13 +3381.0000 1.350313263379e-13 +3381.2500 1.562889517060e-13 +3381.5000 1.808365886738e-13 +3381.7500 2.091744407266e-13 +3382.0000 2.418773545882e-13 +3382.2500 2.796057425143e-13 +3382.5000 3.231180700793e-13 +3382.7500 3.732851289760e-13 +3383.0000 4.311063444238e-13 +3383.2500 4.977284008699e-13 +3383.5000 5.744665083064e-13 +3383.7500 6.628286752844e-13 +3384.0000 7.645434042711e-13 +3384.2500 8.815912810868e-13 +3384.5000 1.016240993641e-12 +3384.7500 1.171090386983e-12 +3385.0000 1.349113242876e-12 +3385.2500 1.553712563863e-12 +3385.5000 1.788781245461e-12 +3385.7500 2.058771137276e-12 +3386.0000 2.368771625965e-12 +3386.2500 2.724599022287e-12 +3386.5000 3.132898202760e-12 +3386.7500 3.601258146360e-12 +3387.0000 4.138343220718e-12 +3387.2500 4.754042313507e-12 +3387.5000 5.459638176451e-12 +3387.7500 6.267999655385e-12 +3388.0000 7.193799824284e-12 +3388.2500 8.253763428789e-12 +3388.5000 9.466947480764e-12 +3388.7500 1.085505933568e-11 +3389.0000 1.244281713567e-11 +3389.2500 1.425835812029e-11 +3389.5000 1.633370100223e-11 +3389.7500 1.870526938635e-11 +3390.0000 2.141448408607e-11 +3390.2500 2.450843317478e-11 +3390.5000 2.804062971189e-11 +3390.7500 3.207186831922e-11 +3391.0000 3.667119316829e-11 +3391.2500 4.191699149028e-11 +3391.5000 4.789822845796e-11 +3391.7500 5.471584123265e-11 +3392.0000 6.248431214562e-11 +3392.2500 7.133344341615e-11 +3392.5000 8.141035852949e-11 +3392.7500 9.288175843842e-11 +3393.0000 1.059364641492e-10 +3393.2500 1.207882810464e-10 +3393.5000 1.376792245461e-10 +3393.7500 1.568831513921e-10 +3394.0000 1.787098461842e-10 +3394.2500 2.035096186002e-10 +3394.5000 2.316784733320e-10 +3394.7500 2.636639220504e-10 +3395.0000 2.999715148463e-10 +3395.2500 3.411721776482e-10 +3395.5000 3.879104521863e-10 +3395.7500 4.409137462845e-10 +3396.0000 5.010027147184e-10 +3396.2500 5.691029047338e-10 +3396.5000 6.462578157086e-10 +3396.7500 7.336435395405e-10 +3397.0000 8.325851673213e-10 +3397.2500 9.445751689273e-10 +3397.5000 1.071293975525e-09 +3397.7500 1.214633020909e-09 +3398.0000 1.376720526325e-09 +3398.2500 1.559950345257e-09 +3398.5000 1.767014219934e-09 +3398.7500 2.000937840340e-09 +3399.0000 2.265121139748e-09 +3399.2500 2.563383308579e-09 +3399.5000 2.900013061279e-09 +3399.7500 3.279824749342e-09 +3400.0000 3.708220978190e-09 +3400.2500 4.191262456962e-09 +3400.5000 4.735745889011e-09 +3400.7500 5.349290797856e-09 +3401.0000 6.040436279211e-09 +3401.2500 6.818748775494e-09 +3401.5000 7.694942085759e-09 +3401.7500 8.681010952498e-09 +3402.0000 9.790379708182e-09 +3402.2500 1.103806762023e-08 +3402.5000 1.244087274449e-08 +3402.7500 1.401757628592e-08 +3403.0000 1.578916967245e-08 +3403.2500 1.777910677614e-08 +3403.5000 2.001358396590e-08 +3403.7500 2.252185095130e-08 +3404.0000 2.533655567883e-08 +3404.2500 2.849412687339e-08 +3404.5000 3.203519818111e-08 +3404.7500 3.600507826815e-08 +3405.0000 4.045427166692e-08 +3405.2500 4.543905563936e-08 +3405.5000 5.102211885115e-08 +3405.7500 5.727326822395e-08 +3406.0000 6.427021096011e-08 +3406.2500 7.209941942090e-08 +3406.5000 8.085708728897e-08 +3406.7500 9.065018626564e-08 +3407.0000 1.015976334490e-07 +3407.2500 1.138315805161e-07 +3407.5000 1.274988368997e-07 +3407.7500 1.427624403120e-07 +3408.0000 1.598033892401e-07 +3408.2500 1.788225534163e-07 +3408.5000 2.000427797759e-07 +3408.7500 2.237112130550e-07 +3409.0000 2.501018519657e-07 +3409.2500 2.795183638289e-07 +3409.5000 3.122971826579e-07 +3409.7500 3.488109179822e-07 +3410.0000 3.894721041964e-07 +3410.2500 4.347373229276e-07 +3410.5000 4.851117338582e-07 +3410.7500 5.411540526314e-07 +3411.0000 6.034820179298e-07 +3411.2500 6.727783935687e-07 +3411.5000 7.497975555140e-07 +3411.7500 8.353727181388e-07 +3412.0000 9.304238587987e-07 +3412.2500 1.035966404971e-06 +3412.5000 1.153120753775e-06 +3412.7500 1.283122699738e-06 +3413.0000 1.427334853169e-06 +3413.2500 1.587259138568e-06 +3413.5000 1.764550470089e-06 +3413.7500 1.961031709267e-06 +3414.0000 2.178710019092e-06 +3414.2500 2.419794738025e-06 +3414.5000 2.686716907841e-06 +3414.7500 2.982150600250e-06 +3415.0000 3.309036199167e-06 +3415.2500 3.670605808294e-06 +3415.5000 4.070410967509e-06 +3415.7500 4.512352876323e-06 +3416.0000 5.000715338636e-06 +3416.2500 5.540200660067e-06 +3416.5000 6.135968747531e-06 +3416.7500 6.793679680374e-06 +3417.0000 7.519540043506e-06 +3417.2500 8.320353335587e-06 +3417.5000 9.203574789517e-06 +3417.7500 1.017737096845e-05 +3418.0000 1.125068452828e-05 +3418.2500 1.243330456715e-05 +3418.5000 1.373594301447e-05 +3418.7500 1.517031754549e-05 +3419.0000 1.674924154386e-05 +3419.2500 1.848672167330e-05 +3419.5000 2.039806366033e-05 +3419.7500 2.249998693429e-05 +3420.0000 2.481074881739e-05 +3420.2500 2.735027900738e-05 +3420.5000 3.014032514846e-05 +3420.7500 3.320461034242e-05 +3421.0000 3.656900351178e-05 +3421.2500 4.026170359045e-05 +3421.5000 4.431343858503e-05 +3421.7500 4.875768062152e-05 +3422.0000 5.363087816822e-05 +3422.2500 5.897270670624e-05 +3422.5000 6.482633920455e-05 +3422.7500 7.123873784656e-05 +3423.0000 7.826096855117e-05 +3423.2500 8.594853993212e-05 +3423.5000 9.436176844630e-05 +3423.7500 1.035661715946e-04 +3424.0000 1.136328911578e-04 +3424.2500 1.246391485754e-04 +3424.5000 1.366687347079e-04 +3424.7500 1.498125363620e-04 +3425.0000 1.641691021053e-04 +3425.2500 1.798452500504e-04 +3425.5000 1.969567204514e-04 +3425.7500 2.156288761254e-04 +3426.0000 2.359974538907e-04 +3426.2500 2.582093703998e-04 +3426.5000 2.824235859426e-04 +3426.7500 3.088120300008e-04 +3427.0000 3.375605925491e-04 +3427.2500 3.688701853229e-04 +3427.5000 4.029578775105e-04 +3427.7500 4.400581105673e-04 +3428.0000 4.804239971127e-04 +3428.2500 5.243287091292e-04 +3428.5000 5.720669609672e-04 +3428.7500 6.239565929443e-04 +3429.0000 6.803402616280e-04 +3429.2500 7.415872432045e-04 +3429.5000 8.080953566572e-04 +3429.7500 8.802930138143e-04 +3430.0000 9.586414036737e-04 +3430.2500 1.043636818768e-03 +3430.5000 1.135813131707e-03 +3430.7500 1.235744430416e-03 +3431.0000 1.344047820983e-03 +3431.2500 1.461386407433e-03 +3431.5000 1.588472458167e-03 +3431.7500 1.726070769225e-03 +3432.0000 1.875002234997e-03 +3432.2500 2.036147637409e-03 +3432.5000 2.210451665132e-03 +3432.7500 2.398927174785e-03 +3433.0000 2.602659706599e-03 +3433.2500 2.822812267519e-03 +3433.5000 3.060630395182e-03 +3433.7500 3.317447516740e-03 +3434.0000 3.594690617002e-03 +3434.2500 3.893886230885e-03 +3434.5000 4.216666775676e-03 +3434.7500 4.564777239158e-03 +3435.0000 4.940082240149e-03 +3435.2500 5.344573478548e-03 +3435.5000 5.780377592518e-03 +3435.7500 6.249764440930e-03 +3436.0000 6.755155829748e-03 +3436.2500 7.299134701527e-03 +3436.5000 7.884454807711e-03 +3436.7500 8.514050883912e-03 +3437.0000 9.191049348845e-03 +3437.2500 9.918779548049e-03 +3437.5000 1.070078556399e-02 +3437.7500 1.154083861455e-02 +3438.0000 1.244295006240e-02 +3438.2500 1.341138505799e-02 +3438.5000 1.445067683935e-02 +3438.7500 1.556564171229e-02 +3439.0000 1.676139473466e-02 +3439.2500 1.804336612876e-02 +3439.5000 1.941731844615e-02 +3439.7500 2.088936450922e-02 +3440.0000 2.246598615409e-02 +3440.2500 2.415405379930e-02 +3440.5000 2.596084686491e-02 +3440.7500 2.789407506644e-02 +3441.0000 2.996190060804e-02 +3441.2500 3.217296129896e-02 +3441.5000 3.453639461713e-02 +3441.7500 3.706186274336e-02 +3442.0000 3.975957858910e-02 +3442.2500 4.264033284016e-02 +3442.5000 4.571552203824e-02 +3442.7500 4.899717772117e-02 +3443.0000 5.249799664206e-02 +3443.2500 5.623137208645e-02 +3443.5000 6.021142630553e-02 +3443.7500 6.445304408224e-02 +3444.0000 6.897190744558e-02 +3444.2500 7.378453154715e-02 +3444.5000 7.890830171226e-02 +3444.7500 8.436151167583e-02 +3445.0000 9.016340301195e-02 +3445.2500 9.633420576333e-02 +3445.5000 1.028951802748e-01 +3445.7500 1.098686602327e-01 +3446.0000 1.172780969093e-01 +3446.2500 1.251481046084e-01 +3446.5000 1.335045073054e-01 +3446.7500 1.423743864732e-01 +3447.0000 1.517861300783e-01 +3447.2500 1.617694827342e-01 +3447.5000 1.723555969876e-01 +3447.7500 1.835770857165e-01 +3448.0000 1.954680756107e-01 +3448.2500 2.080642617005e-01 +3448.5000 2.214029629000e-01 +3448.7500 2.355231785192e-01 +3449.0000 2.504656457008e-01 +3449.2500 2.662728977296e-01 +3449.5000 2.829893231562e-01 +3449.7500 3.006612256730e-01 +3450.0000 3.193368846758e-01 +3450.2500 3.390666164339e-01 +3450.5000 3.599028357920e-01 +3450.7500 3.819001183150e-01 +3451.0000 4.051152627849e-01 +3451.2500 4.296073539499e-01 +3451.5000 4.554378254203e-01 +3451.7500 4.826705225988e-01 +3452.0000 5.113717655261e-01 +3452.2500 5.416104115147e-01 +3452.5000 5.734579174386e-01 +3452.7500 6.069884015377e-01 +3453.0000 6.422787045891e-01 +3453.2500 6.794084502908e-01 +3453.5000 7.184601046948e-01 +3453.7500 7.595190345201e-01 +3454.0000 8.026735641690e-01 +3454.2500 8.480150312622e-01 +3454.5000 8.956378405009e-01 +3454.7500 9.456395156585e-01 +3455.0000 9.981207494947e-01 +3455.2500 1.053185451381e+00 +3455.5000 1.110940792416e+00 +3455.7500 1.171497247813e+00 +3456.0000 1.234968636308e+00 +3456.2500 1.301472156382e+00 +3456.5000 1.371128419014e+00 +3456.7500 1.444061476760e+00 +3457.0000 1.520398848854e+00 +3457.2500 1.600271542122e+00 +3457.5000 1.683814067405e+00 +3457.7500 1.771164451244e+00 +3458.0000 1.862464242557e+00 +3458.2500 1.957858514018e+00 +3458.5000 2.057495857887e+00 +3458.7500 2.161528375987e+00 +3459.0000 2.270111663567e+00 +3459.2500 2.383404786763e+00 +3459.5000 2.501570253389e+00 +3459.7500 2.624773976756e+00 +3460.0000 2.753185232275e+00 +3460.2500 2.886976606543e+00 +3460.5000 3.026323938653e+00 +3460.7500 3.171406253467e+00 +3461.0000 3.322405686577e+00 +3461.2500 3.479507400710e+00 +3461.5000 3.642899493330e+00 +3461.7500 3.812772895183e+00 +3462.0000 3.989321259576e+00 +3462.2500 4.172740842147e+00 +3462.5000 4.363230370931e+00 +3462.7500 4.560990906520e+00 +3463.0000 4.766225692132e+00 +3463.2500 4.979139993412e+00 +3463.5000 5.199940927833e+00 +3463.7500 5.428837283525e+00 +3464.0000 5.666039327440e+00 +3464.2500 5.911758602740e+00 +3464.5000 6.166207715325e+00 +3464.7500 6.429600109435e+00 +3465.0000 6.702149832309e+00 +3465.2500 6.984071287851e+00 +3465.5000 7.275578979342e+00 +3465.7500 7.576887241215e+00 +3466.0000 7.888209959955e+00 +3466.2500 8.209760284209e+00 +3466.5000 8.541750324234e+00 +3466.7500 8.884390840804e+00 +3467.0000 9.237890923764e+00 +3467.2500 9.602457660441e+00 +3467.5000 9.978295794126e+00 +3467.7500 1.036560737291e+01 +3468.0000 1.076459138920e+01 +3468.2500 1.117544341013e+01 +3468.5000 1.159835519946e+01 +3468.7500 1.203351433111e+01 +3469.0000 1.248110379492e+01 +3469.2500 1.294130159508e+01 +3469.5000 1.341428034169e+01 +3469.7500 1.390020683609e+01 +3470.0000 1.439924165032e+01 +3470.2500 1.491153870164e+01 +3470.5000 1.543724482246e+01 +3470.7500 1.597649932647e+01 +3471.0000 1.652943357175e+01 +3471.2500 1.709617052148e+01 +3471.5000 1.767682430310e+01 +3471.7500 1.827149976670e+01 +3472.0000 1.888029204348e+01 +3472.2500 1.950328610521e+01 +3472.5000 2.014055632538e+01 +3472.7500 2.079216604328e+01 +3473.0000 2.145816713169e+01 +3473.2500 2.213859956924e+01 +3473.5000 2.283349101848e+01 +3473.7500 2.354285641059e+01 +3474.0000 2.426669753789e+01 +3474.2500 2.500500265498e+01 +3474.5000 2.575774608986e+01 +3474.7500 2.652488786583e+01 +3475.0000 2.730637333550e+01 +3475.2500 2.810213282776e+01 +3475.5000 2.891208130908e+01 +3475.7500 2.973611805996e+01 +3476.0000 3.057412636789e+01 +3476.2500 3.142597323774e+01 +3476.5000 3.229150912073e+01 +3476.7500 3.317056766307e+01 +3477.0000 3.406296547541e+01 +3477.2500 3.496850192396e+01 +3477.5000 3.588695894457e+01 +3477.7500 3.681810088062e+01 +3478.0000 3.776167434571e+01 +3478.2500 3.871740811230e+01 +3478.5000 3.968501302696e+01 +3478.7500 4.066418195339e+01 +3479.0000 4.165458974393e+01 +3479.2500 4.265589324042e+01 +3479.5000 4.366773130523e+01 +3479.7500 4.468972488309e+01 +3480.0000 4.572147709463e+01 +3480.2500 4.676257336199e+01 +3480.5000 4.781258156726e+01 +3480.7500 4.887105224428e+01 +3481.0000 4.993751880413e+01 +3481.2500 5.101149779488e+01 +3481.5000 5.209248919579e+01 +3481.7500 5.317997674630e+01 +3482.0000 5.427342831003e+01 +3482.2500 5.537229627383e+01 +3482.5000 5.647601798201e+01 +3482.7500 5.758401620567e+01 +3483.0000 5.869569964709e+01 +3483.2500 5.981046347890e+01 +3483.5000 6.092768991786e+01 +3483.7500 6.204674883286e+01 +3484.0000 6.316699838672e+01 +3484.2500 6.428778571124e+01 +3484.5000 6.540844761503e+01 +3484.7500 6.652831132326e+01 +3485.0000 6.764669524872e+01 +3485.2500 6.876290979328e+01 +3485.5000 6.987625817879e+01 +3485.7500 7.098603730654e+01 +3486.0000 7.209153864397e+01 +3486.2500 7.319204913766e+01 +3486.5000 7.428685215126e+01 +3486.7500 7.537522842700e+01 +3487.0000 7.645645706946e+01 +3487.2500 7.752981654999e+01 +3487.5000 7.859458573042e+01 +3487.7500 7.965004490422e+01 +3488.0000 8.069547685356e+01 +3488.2500 8.173016792055e+01 +3488.5000 8.275340909069e+01 +3488.7500 8.376449708685e+01 +3489.0000 8.476273547171e+01 +3489.2500 8.574743575678e+01 +3489.5000 8.671791851594e+01 +3489.7500 8.767351450151e+01 +3490.0000 8.861356576060e+01 +3490.2500 8.953742674986e+01 +3490.5000 9.044446544619e+01 +3490.7500 9.133406445149e+01 +3491.0000 9.220562208906e+01 +3491.2500 9.305855348954e+01 +3491.5000 9.389229166417e+01 +3491.7500 9.470628856304e+01 +3492.0000 9.550001611628e+01 +3492.2500 9.627296725583e+01 +3492.5000 9.702465691557e+01 +3492.7500 9.775462300780e+01 +3493.0000 9.846242737365e+01 +3493.2500 9.914765670551e+01 +3493.5000 9.980992343922e+01 +3493.7500 1.004488666140e+02 +3494.0000 1.010641526979e+02 +3494.2500 1.016554763777e+02 +3494.5000 1.022225613092e+02 +3494.7500 1.027651608289e+02 +3495.0000 1.032830586232e+02 +3495.2500 1.037760693534e+02 +3495.5000 1.042440392361e+02 +3495.7500 1.046868465768e+02 +3496.0000 1.051044022543e+02 +3496.2500 1.054966501554e+02 +3496.5000 1.058635675595e+02 +3496.7500 1.062051654686e+02 +3497.0000 1.065214888859e+02 +3497.2500 1.068126170377e+02 +3497.5000 1.070786635410e+02 +3497.7500 1.073197765137e+02 +3498.0000 1.075361386279e+02 +3498.2500 1.077279671051e+02 +3498.5000 1.078955136524e+02 +3498.7500 1.080390643405e+02 +3499.0000 1.081589394220e+02 +3499.2500 1.082554930898e+02 +3499.5000 1.083291131768e+02 +3499.7500 1.083802207951e+02 +3500.0000 1.084092699167e+02 +3500.2500 1.084167468937e+02 +3500.5000 1.084031699212e+02 +3500.7500 1.083690884408e+02 +3501.0000 1.083150824869e+02 +3501.2500 1.082417619756e+02 +3501.5000 1.081497659379e+02 +3501.7500 1.080397616973e+02 +3502.0000 1.079124439937e+02 +3502.2500 1.077685340534e+02 +3502.5000 1.076087786085e+02 +3502.7500 1.074339488652e+02 +3503.0000 1.072448394236e+02 +3503.2500 1.070422671497e+02 +3503.5000 1.068270700028e+02 +3503.7500 1.066001058176e+02 +3504.0000 1.063622510460e+02 +3504.2500 1.061143994576e+02 +3504.5000 1.058574608025e+02 +3504.7500 1.055923594388e+02 +3505.0000 1.053200329256e+02 +3505.2500 1.050414305852e+02 +3505.5000 1.047575120360e+02 +3505.7500 1.044692456983e+02 +3506.0000 1.041776072767e+02 +3506.2500 1.038835782198e+02 +3506.5000 1.035881441614e+02 +3506.7500 1.032922933449e+02 +3507.0000 1.029970150337e+02 +3507.2500 1.027032979102e+02 +3507.5000 1.024121284666e+02 +3507.7500 1.021244893895e+02 +3508.0000 1.018413579418e+02 +3508.2500 1.015637043436e+02 +3508.5000 1.012924901567e+02 +3508.7500 1.010286666733e+02 +3509.0000 1.007731733133e+02 +3509.2500 1.005269360323e+02 +3509.5000 1.002908657431e+02 +3509.7500 1.000658567541e+02 +3510.0000 9.985278522606e+01 +3510.2500 9.965250765115e+01 +3510.5000 9.946585935658e+01 +3510.7500 9.929365303517e+01 +3511.0000 9.913667730593e+01 +3511.2500 9.899569530692e+01 +3511.5000 9.887144332306e+01 +3511.7500 9.876462945137e+01 +3512.0000 9.867593230596e+01 +3512.2500 9.860599976527e+01 +3512.5000 9.855544776376e+01 +3512.7500 9.852485913030e+01 +3513.0000 9.851478247547e+01 +3513.2500 9.852573112975e+01 +3513.5000 9.855818213470e+01 +3513.7500 9.861257528898e+01 +3514.0000 9.868931225112e+01 +3514.2500 9.878875570062e+01 +3514.5000 9.891122855922e+01 +3514.7500 9.905701327375e+01 +3515.0000 9.922635116205e+01 +3515.2500 9.941944182331e+01 +3515.5000 9.963644261407e+01 +3515.7500 9.987746819099e+01 +3516.0000 1.001425901214e+02 +3516.2500 1.004318365626e+02 +3516.5000 1.007451920107e+02 +3516.7500 1.010825971195e+02 +3517.0000 1.014439485900e+02 +3517.2500 1.018290991317e+02 +3517.5000 1.022378574946e+02 +3517.7500 1.026699885733e+02 +3518.0000 1.031252135827e+02 +3518.2500 1.036032103055e+02 +3518.5000 1.041036134115e+02 +3518.7500 1.046260148471e+02 +3519.0000 1.051699642969e+02 +3519.2500 1.057349697147e+02 +3519.5000 1.063204979243e+02 +3519.7500 1.069259752889e+02 +3520.0000 1.075507884486e+02 +3520.2500 1.081942851247e+02 +3520.5000 1.088557749889e+02 +3520.7500 1.095345305982e+02 +3521.0000 1.102297883911e+02 +3521.2500 1.109407497468e+02 +3521.5000 1.116665821026e+02 +3521.7500 1.124064201307e+02 +3522.0000 1.131593669702e+02 +3522.2500 1.139244955138e+02 +3522.5000 1.147008497463e+02 +3522.7500 1.154874461331e+02 +3523.0000 1.162832750570e+02 +3523.2500 1.170873022991e+02 +3523.5000 1.178984705635e+02 +3523.7500 1.187157010424e+02 +3524.0000 1.195378950180e+02 +3524.2500 1.203639355007e+02 +3524.5000 1.211926888981e+02 +3524.7500 1.220230067148e+02 +3525.0000 1.228537272777e+02 +3525.2500 1.236836774853e+02 +3525.5000 1.245116745778e+02 +3525.7500 1.253365279241e+02 +3526.0000 1.261570408234e+02 +3526.2500 1.269720123188e+02 +3526.5000 1.277802390177e+02 +3526.7500 1.285805169186e+02 +3527.0000 1.293716432383e+02 +3527.2500 1.301524182388e+02 +3527.5000 1.309216470488e+02 +3527.7500 1.316781414777e+02 +3528.0000 1.324207218185e+02 +3528.2500 1.331482186361e+02 +3528.5000 1.338594745391e+02 +3528.7500 1.345533459299e+02 +3529.0000 1.352287047324e+02 +3529.2500 1.358844400917e+02 +3529.5000 1.365194600457e+02 +3529.7500 1.371326931627e+02 +3530.0000 1.377230901443e+02 +3530.2500 1.382896253899e+02 +3530.5000 1.388312985195e+02 +3530.7500 1.393471358540e+02 +3531.0000 1.398361918478e+02 +3531.2500 1.402975504738e+02 +3531.5000 1.407303265565e+02 +3531.7500 1.411336670517e+02 +3532.0000 1.415067522708e+02 +3532.2500 1.418487970471e+02 +3532.5000 1.421590518429e+02 +3532.7500 1.424368037941e+02 +3533.0000 1.426813776926e+02 +3533.2500 1.428921369035e+02 +3533.5000 1.430684842155e+02 +3533.7500 1.432098626247e+02 +3534.0000 1.433157560488e+02 +3534.2500 1.433856899719e+02 +3534.5000 1.434192320185e+02 +3534.7500 1.434159924561e+02 +3535.0000 1.433756246260e+02 +3535.2500 1.432978253005e+02 +3535.5000 1.431823349693e+02 +3535.7500 1.430289380505e+02 +3536.0000 1.428374630310e+02 +3536.2500 1.426077825319e+02 +3536.5000 1.423398133032e+02 +3536.7500 1.420335161450e+02 +3537.0000 1.416888957581e+02 +3537.2500 1.413060005227e+02 +3537.5000 1.408849222087e+02 +3537.7500 1.404257956155e+02 +3538.0000 1.399287981445e+02 +3538.2500 1.393941493059e+02 +3538.5000 1.388221101587e+02 +3538.7500 1.382129826885e+02 +3539.0000 1.375671091228e+02 +3539.2500 1.368848711856e+02 +3539.5000 1.361666892942e+02 +3539.7500 1.354130217001e+02 +3540.0000 1.346243635739e+02 +3540.2500 1.338012460402e+02 +3540.5000 1.329442351612e+02 +3540.7500 1.320539308731e+02 +3541.0000 1.311309658780e+02 +3541.2500 1.301760044924e+02 +3541.5000 1.291897414567e+02 +3541.7500 1.281729007061e+02 +3542.0000 1.271262341082e+02 +3542.2500 1.260505201676e+02 +3542.5000 1.249465627020e+02 +3542.7500 1.238151894912e+02 +3543.0000 1.226572509036e+02 +3543.2500 1.214736185009e+02 +3543.5000 1.202651836258e+02 +3543.7500 1.190328559742e+02 +3544.0000 1.177775621553e+02 +3544.2500 1.165002442431e+02 +3544.5000 1.152018583202e+02 +3544.7500 1.138833730192e+02 +3545.0000 1.125457680625e+02 +3545.2500 1.111900328043e+02 +3545.5000 1.098171647773e+02 +3545.7500 1.084281682459e+02 +3546.0000 1.070240527709e+02 +3546.2500 1.056058317843e+02 +3546.5000 1.041745211815e+02 +3546.7500 1.027311379289e+02 +3547.0000 1.012766986921e+02 +3547.2500 9.981221848587e+01 +3547.5000 9.833870934809e+01 +3547.7500 9.685717904019e+01 +3548.0000 9.536862977552e+01 +3548.2500 9.387405697805e+01 +3548.5000 9.237444807295e+01 +3548.7500 9.087078131091e+01 +3549.0000 8.936402462769e+01 +3549.2500 8.785513454052e+01 +3549.5000 8.634505508275e+01 +3549.7500 8.483471677791e+01 +3550.0000 8.332503565466e+01 +3550.2500 8.181691230331e+01 +3550.5000 8.031123097530e+01 +3550.7500 7.880885872621e+01 +3551.0000 7.731064460311e+01 +3551.2500 7.581741887704e+01 +3551.5000 7.432999232093e+01 +3551.7500 7.284915553352e+01 +3552.0000 7.137567830961e+01 +3552.2500 6.991030905671e+01 +3552.5000 6.845377425836e+01 +3552.7500 6.700677798400e+01 +3553.0000 6.557000144535e+01 +3553.2500 6.414410259909e+01 +3553.5000 6.272971579553e+01 +3553.7500 6.132745147287e+01 +3554.0000 5.993789589669e+01 +3554.2500 5.856161094389e+01 +3554.5000 5.719913393070e+01 +3554.7500 5.585097748379e+01 +3555.0000 5.451762945382e+01 +3555.2500 5.319955287057e+01 +3555.5000 5.189718593861e+01 +3555.7500 5.061094207257e+01 +3556.0000 4.934120997097e+01 +3556.2500 4.808835372739e+01 +3556.5000 4.685271297791e+01 +3556.7500 4.563460308357e+01 +3557.0000 4.443431534649e+01 +3557.2500 4.325211725855e+01 +3557.5000 4.208825278106e+01 +3557.7500 4.094294265420e+01 +3558.0000 3.981638473479e+01 +3558.2500 3.870875436096e+01 +3558.5000 3.762020474228e+01 +3558.7500 3.655086737395e+01 +3559.0000 3.550085247350e+01 +3559.2500 3.447024943857e+01 +3559.5000 3.345912732437e+01 +3559.7500 3.246753533923e+01 +3560.0000 3.149550335680e+01 +3560.2500 3.054304244353e+01 +3560.5000 2.961014539992e+01 +3560.7500 2.869678731402e+01 +3561.0000 2.780292612596e+01 +3561.2500 2.692850320196e+01 +3561.5000 2.607344391649e+01 +3561.7500 2.523765824126e+01 +3562.0000 2.442104133973e+01 +3562.2500 2.362347416577e+01 +3562.5000 2.284482406535e+01 +3562.7500 2.208494537992e+01 +3563.0000 2.134368005043e+01 +3563.2500 2.062085822063e+01 +3563.5000 1.991629883890e+01 +3563.7500 1.922981025712e+01 +3564.0000 1.856119082598e+01 +3564.2500 1.791022948542e+01 +3564.5000 1.727670634950e+01 +3564.7500 1.666039328470e+01 +3565.0000 1.606105448084e+01 +3565.2500 1.547844701389e+01 +3565.5000 1.491232139977e+01 +3565.7500 1.436242213868e+01 +3566.0000 1.382848824906e+01 +3566.2500 1.331025379077e+01 +3566.5000 1.280744837683e+01 +3566.7500 1.231979767326e+01 +3567.0000 1.184702388655e+01 +3567.2500 1.138884623831e+01 +3567.5000 1.094498142674e+01 +3567.7500 1.051514407467e+01 +3568.0000 1.009904716376e+01 +3568.2500 9.696402454694e+00 +3568.5000 9.306920893143e+00 +3568.7500 8.930313001382e+00 +3569.0000 8.566289255354e+00 +3569.2500 8.214560447167e+00 +3569.5000 7.874838032960e+00 +3569.7500 7.546834466106e+00 +3570.0000 7.230263515806e+00 +3570.2500 6.924840571106e+00 +3570.5000 6.630282930430e+00 +3570.7500 6.346310076756e+00 +3571.0000 6.072643938567e+00 +3571.2500 5.809009136750e+00 +3571.5000 5.555133217655e+00 +3571.7500 5.310746872518e+00 +3572.0000 5.075584143503e+00 +3572.2500 4.849382616630e+00 +3572.5000 4.631883601869e+00 +3572.7500 4.422832300705e+00 +3573.0000 4.221977961494e+00 +3573.2500 4.029074022960e+00 +3573.5000 3.843878246152e+00 +3573.7500 3.666152835267e+00 +3574.0000 3.495664547667e+00 +3574.2500 3.332184793520e+00 +3574.5000 3.175489725422e+00 +3574.7500 3.025360318420e+00 +3575.0000 2.881582440846e+00 +3575.2500 2.743946916361e+00 +3575.5000 2.612249577644e+00 +3575.7500 2.486291312128e+00 +3576.0000 2.365878100223e+00 +3576.2500 2.250821046442e+00 +3576.5000 2.140936403851e+00 +3576.7500 2.036045592278e+00 +3577.0000 1.935975210689e+00 +3577.2500 1.840557044162e+00 +3577.5000 1.749628065878e+00 +3577.7500 1.663030434527e+00 +3578.0000 1.580611487558e+00 +3578.2500 1.502223730660e+00 +3578.5000 1.427724823888e+00 +3578.7500 1.356977564806e+00 +3579.0000 1.289849869060e+00 +3579.2500 1.226214748731e+00 +3579.5000 1.165950288861e+00 +3579.7500 1.108939622499e+00 +3580.0000 1.055070904635e+00 +3580.2500 1.004237285354e+00 +3580.5000 9.563368825623e-01 +3580.7500 9.112727545960e-01 +3581.0000 8.689528730440e-01 +3581.2500 8.292900960850e-01 +3581.5000 7.922021426397e-01 +3581.7500 7.576115676242e-01 +3582.0000 7.254457385813e-01 +3582.2500 6.956368139572e-01 +3582.5000 6.681217232782e-01 +3582.7500 6.428421494712e-01 +3583.0000 6.197445135624e-01 +3583.2500 5.987799619761e-01 +3583.5000 5.799043566428e-01 +3583.7500 5.630782681181e-01 +3584.0000 5.482669718980e-01 +3584.2500 5.354404481067e-01 +3584.5000 5.245733847227e-01 +3584.7500 5.156451844917e-01 +3585.0000 5.086399756703e-01 +3585.2500 5.035466267244e-01 +3585.5000 5.003587651006e-01 +3585.7500 4.990748001720e-01 +3586.0000 4.996979504487e-01 +3586.2500 5.022362751314e-01 +3586.5000 5.067027100721e-01 +3586.7500 5.131151081936e-01 +3587.0000 5.214962844064e-01 +3587.2500 5.318740650475e-01 +3587.5000 5.442813418536e-01 +3587.7500 5.587561304646e-01 +3588.0000 5.753416334421e-01 +3588.2500 5.940863077728e-01 +3588.5000 6.150439368097e-01 +3588.7500 6.382737065938e-01 +3589.0000 6.638402864803e-01 +3589.2500 6.918139139798e-01 +3589.5000 7.222704837094e-01 +3589.7500 7.552916403337e-01 +3590.0000 7.909648753582e-01 +3590.2500 8.293836276230e-01 +3590.5000 8.706473873270e-01 +3590.7500 9.148618033987e-01 +3591.0000 9.621387940093e-01 +3591.2500 1.012596660009e+00 +3591.5000 1.066360201051e+00 +3591.7500 1.123560834145e+00 +3592.0000 1.184336714377e+00 +3592.2500 1.248832857489e+00 +3592.5000 1.317201264033e+00 +3592.7500 1.389601044749e+00 +3593.0000 1.466198546845e+00 +3593.2500 1.547167480797e+00 +3593.5000 1.632689047297e+00 +3593.7500 1.722952063950e+00 +3594.0000 1.818153091301e+00 +3594.2500 1.918496557742e+00 +3594.5000 2.024194882866e+00 +3594.7500 2.135468598773e+00 +3595.0000 2.252546468853e+00 +3595.2500 2.375665603518e+00 +3595.5000 2.505071572371e+00 +3595.7500 2.641018512262e+00 +3596.0000 2.783769230665e+00 +3596.2500 2.933595303796e+00 +3596.5000 3.090777168893e+00 +3596.7500 3.255604210023e+00 +3597.0000 3.428374836814e+00 +3597.2500 3.609396555456e+00 +3597.5000 3.798986031333e+00 +3597.7500 3.997469142609e+00 +3598.0000 4.205181024091e+00 +3598.2500 4.422466100704e+00 +3598.5000 4.649678109842e+00 +3598.7500 4.887180111933e+00 +3599.0000 5.135344488473e+00 +3599.2500 5.394552926828e+00 +3599.5000 5.665196391081e+00 +3599.7500 5.947675078194e+00 +3600.0000 6.242398358760e+00 +3600.2500 6.549784701627e+00 +3600.5000 6.870261581661e+00 +3600.7500 7.204265369935e+00 +3601.0000 7.552241205626e+00 +3601.2500 7.914642848925e+00 +3601.5000 8.291932514250e+00 +3601.7500 8.684580683088e+00 +3602.0000 9.093065895803e+00 +3602.2500 9.517874521738e+00 +3602.5000 9.959500507004e+00 +3602.7500 1.041844509932e+01 +3603.0000 1.089521654933e+01 +3603.2500 1.139032978784e+01 +3603.5000 1.190430607841e+01 +3603.7500 1.243767264487e+01 +3604.0000 1.299096227317e+01 +3604.2500 1.356471288730e+01 +3604.5000 1.415946709871e+01 +3604.7500 1.477577172903e+01 +3605.0000 1.541417730571e+01 +3605.2500 1.607523753027e+01 +3605.5000 1.675950871913e+01 +3605.7500 1.746754921663e+01 +3606.0000 1.819991878034e+01 +3606.2500 1.895717793852e+01 +3606.5000 1.973988731971e+01 +3606.7500 2.054860695465e+01 +3607.0000 2.138389555055e+01 +3607.2500 2.224630973801e+01 +3607.5000 2.313640329084e+01 +3607.7500 2.405472631907e+01 +3608.0000 2.500182443569e+01 +3608.2500 2.597823789756e+01 +3608.5000 2.698450072101e+01 +3608.7500 2.802113977290e+01 +3609.0000 2.908867383779e+01 +3609.2500 3.018761266209e+01 +3609.5000 3.131845597599e+01 +3609.7500 3.248169249428e+01 +3610.0000 3.367779889705e+01 +3610.2500 3.490723879143e+01 +3610.5000 3.617046165556e+01 +3610.7500 3.746790176619e+01 +3611.0000 3.879997711123e+01 +3611.2500 4.016708828880e+01 +3611.5000 4.156961739429e+01 +3611.7500 4.300792689707e+01 +3612.0000 4.448235850866e+01 +3612.2500 4.599323204408e+01 +3612.5000 4.754084427824e+01 +3612.7500 4.912546779952e+01 +3613.0000 5.074734986227e+01 +3613.2500 5.240671124059e+01 +3613.5000 5.410374508545e+01 +3613.7500 5.583861578735e+01 +3614.0000 5.761145784691e+01 +3614.2500 5.942237475564e+01 +3614.5000 6.127143788936e+01 +3614.7500 6.315868541670e+01 +3615.0000 6.508412122515e+01 +3615.2500 6.704771386725e+01 +3615.5000 6.904939552944e+01 +3615.7500 7.108906102614e+01 +3616.0000 7.316656682181e+01 +3616.2500 7.528173008349e+01 +3616.5000 7.743432776647e+01 +3616.7500 7.962409573589e+01 +3617.0000 8.185072792676e+01 +3617.2500 8.411387554512e+01 +3617.5000 8.641314631296e+01 +3617.7500 8.874810375954e+01 +3618.0000 9.111826656158e+01 +3618.2500 9.352310793501e+01 +3618.5000 9.596205508073e+01 +3618.7500 9.843448868668e+01 +3619.0000 1.009397424889e+02 +3619.2500 1.034771028938e+02 +3619.5000 1.060458086634e+02 +3619.7500 1.086450506669e+02 +3620.0000 1.112739716992e+02 +3620.2500 1.139316663696e+02 +3620.5000 1.166171810620e+02 +3620.7500 1.193295139680e+02 +3621.0000 1.220676151956e+02 +3621.2500 1.248303869541e+02 +3621.5000 1.276166838171e+02 +3621.7500 1.304253130648e+02 +3622.0000 1.332550351063e+02 +3622.2500 1.361045639841e+02 +3622.5000 1.389725679597e+02 +3622.7500 1.418576701832e+02 +3623.0000 1.447584494452e+02 +3623.2500 1.476734410135e+02 +3623.5000 1.506011375528e+02 +3623.7500 1.535399901290e+02 +3624.0000 1.564884092968e+02 +3624.2500 1.594447662705e+02 +3624.5000 1.624073941780e+02 +3624.7500 1.653745893968e+02 +3625.0000 1.683446129706e+02 +3625.2500 1.713156921064e+02 +3625.5000 1.742860217497e+02 +3625.7500 1.772537662378e+02 +3626.0000 1.802170610272e+02 +3626.2500 1.831740144955e+02 +3626.5000 1.861227098145e+02 +3626.7500 1.890612068924e+02 +3627.0000 1.919875443823e+02 +3627.2500 1.948997417560e+02 +3627.5000 1.977958014372e+02 +3627.7500 2.006737109948e+02 +3628.0000 2.035314453902e+02 +3628.2500 2.063669692765e+02 +3628.5000 2.091782393461e+02 +3628.7500 2.119632067230e+02 +3629.0000 2.147198193961e+02 +3629.2500 2.174460246886e+02 +3629.5000 2.201397717616e+02 +3629.7500 2.227990141452e+02 +3630.0000 2.254217122944e+02 +3630.2500 2.280058361657e+02 +3630.5000 2.305493678080e+02 +3630.7500 2.330503039654e+02 +3631.0000 2.355066586860e+02 +3631.2500 2.379164659319e+02 +3631.5000 2.402777821873e+02 +3631.7500 2.425886890568e+02 +3632.0000 2.448472958522e+02 +3632.2500 2.470517421615e+02 +3632.5000 2.492002003948e+02 +3632.7500 2.512908783033e+02 +3633.0000 2.533220214654e+02 +3633.2500 2.552919157371e+02 +3633.5000 2.571988896586e+02 +3633.7500 2.590413168160e+02 +3634.0000 2.608176181512e+02 +3634.2500 2.625262642152e+02 +3634.5000 2.641657773627e+02 +3634.7500 2.657347338801e+02 +3635.0000 2.672317660460e+02 +3635.2500 2.686555641178e+02 +3635.5000 2.700048782410e+02 +3635.7500 2.712785202775e+02 +3636.0000 2.724753655493e+02 +3636.2500 2.735943544932e+02 +3636.5000 2.746344942241e+02 +3636.7500 2.755948600030e+02 +3637.0000 2.764745966066e+02 +3637.2500 2.772729195968e+02 +3637.5000 2.779891164854e+02 +3637.7500 2.786225477936e+02 +3638.0000 2.791726480030e+02 +3638.2500 2.796389263966e+02 +3638.5000 2.800209677872e+02 +3638.7500 2.803184331333e+02 +3639.0000 2.805310600393e+02 +3639.2500 2.806586631404e+02 +3639.5000 2.807011343710e+02 +3639.7500 2.806584431159e+02 +3640.0000 2.805306362435e+02 +3640.2500 2.803178380229e+02 +3640.5000 2.800202499221e+02 +3640.7500 2.796381502909e+02 +3641.0000 2.791718939265e+02 +3641.2500 2.786219115251e+02 +3641.5000 2.779887090182e+02 +3641.7500 2.772728667979e+02 +3642.0000 2.764750388300e+02 +3642.2500 2.755959516589e+02 +3642.5000 2.746364033055e+02 +3642.7500 2.735972620604e+02 +3643.0000 2.724794651754e+02 +3643.2500 2.712840174554e+02 +3643.5000 2.700119897549e+02 +3643.7500 2.686645173802e+02 +3644.0000 2.672427984028e+02 +3644.2500 2.657480918866e+02 +3644.5000 2.641817160313e+02 +3644.7500 2.625450462387e+02 +3645.0000 2.608395131029e+02 +3645.2500 2.590666003306e+02 +3645.5000 2.572278425946e+02 +3645.7500 2.553248233249e+02 +3646.0000 2.533591724428e+02 +3646.2500 2.513325640415e+02 +3646.5000 2.492467140175e+02 +3646.7500 2.471033776595e+02 +3647.0000 2.449043471969e+02 +3647.2500 2.426514493142e+02 +3647.5000 2.403465426366e+02 +3647.7500 2.379915151892e+02 +3648.0000 2.355882818384e+02 +3648.2500 2.331387817159e+02 +3648.5000 2.306449756343e+02 +3648.7500 2.281088434956e+02 +3649.0000 2.255323817002e+02 +3649.2500 2.229176005589e+02 +3649.5000 2.202665217135e+02 +3649.7500 2.175811755708e+02 +3650.0000 2.148635987542e+02 +3650.2500 2.121158315762e+02 +3650.5000 2.093399155388e+02 +3650.7500 2.065378908625e+02 +3651.0000 2.037117940510e+02 +3651.2500 2.008636554937e+02 +3651.5000 1.979954971105e+02 +3651.7500 1.951093300422e+02 +3652.0000 1.922071523906e+02 +3652.2500 1.892909470108e+02 +3652.5000 1.863626793598e+02 +3652.7500 1.834242954039e+02 +3653.0000 1.804777195873e+02 +3653.2500 1.775248528660e+02 +3653.5000 1.745675708082e+02 +3653.7500 1.716077217636e+02 +3654.0000 1.686471251048e+02 +3654.2500 1.656875695415e+02 +3654.5000 1.627308115103e+02 +3654.7500 1.597785736407e+02 +3655.0000 1.568325432995e+02 +3655.2500 1.538943712145e+02 +3655.5000 1.509656701783e+02 +3655.7500 1.480480138335e+02 +3656.0000 1.451429355393e+02 +3656.2500 1.422519273209e+02 +3656.5000 1.393764389009e+02 +3656.7500 1.365178768135e+02 +3657.0000 1.336776036012e+02 +3657.2500 1.308569370939e+02 +3657.5000 1.280571497695e+02 +3657.7500 1.252794681965e+02 +3658.0000 1.225250725563e+02 +3658.2500 1.197950962460e+02 +3658.5000 1.170906255590e+02 +3658.7500 1.144126994437e+02 +3659.0000 1.117623093382e+02 +3659.2500 1.091403990796e+02 +3659.5000 1.065478648864e+02 +3659.7500 1.039855554125e+02 +3660.0000 1.014542718709e+02 +3660.2500 9.895476822494e+01 +3660.5000 9.648775144572e+01 +3660.7500 9.405388183289e+01 +3661.0000 9.165377339715e+01 +3661.2500 8.928799430208e+01 +3661.5000 8.695706736299e+01 +3661.7500 8.466147060042e+01 +3662.0000 8.240163784592e+01 +3662.2500 8.017795939760e+01 +3662.5000 7.799078272305e+01 +3662.7500 7.584041320693e+01 +3663.0000 7.372711494087e+01 +3663.2500 7.165111155302e+01 +3663.5000 6.961258707459e+01 +3663.7500 6.761168684096e+01 +3664.0000 6.564851842465e+01 +3664.2500 6.372315259762e+01 +3664.5000 6.183562432028e+01 +3664.7500 5.998593375476e+01 +3665.0000 5.817404729988e+01 +3665.2500 5.639989864523e+01 +3665.5000 5.466338984208e+01 +3665.7500 5.296439238855e+01 +3666.0000 5.130274832677e+01 +3666.2500 4.967827134963e+01 +3666.5000 4.809074791491e+01 +3666.7500 4.653993836450e+01 +3667.0000 4.502557804669e+01 +3667.2500 4.354737843925e+01 +3667.5000 4.210502827142e+01 +3667.7500 4.069819464277e+01 +3668.0000 3.932652413715e+01 +3668.2500 3.798964392973e+01 +3668.5000 3.668716288555e+01 +3668.7500 3.541867264791e+01 +3669.0000 3.418374871486e+01 +3669.2500 3.298195150251e+01 +3669.5000 3.181282739350e+01 +3669.7500 3.067590976952e+01 +3670.0000 2.957072002635e+01 +3670.2500 2.849676857054e+01 +3670.5000 2.745355579627e+01 +3670.7500 2.644057304177e+01 +3671.0000 2.545730352395e+01 +3671.2500 2.450322325068e+01 +3671.5000 2.357780190983e+01 +3671.7500 2.268050373428e+01 +3672.0000 2.181078834238e+01 +3672.2500 2.096811155332e+01 +3672.5000 2.015192617673e+01 +3672.7500 1.936168277640e+01 +3673.0000 1.859683040748e+01 +3673.2500 1.785681732711e+01 +3673.5000 1.714109167807e+01 +3673.7500 1.644910214558e+01 +3674.0000 1.578029858679e+01 +3674.2500 1.513413263332e+01 +3674.5000 1.451005826661e+01 +3674.7500 1.390753236628e+01 +3675.0000 1.332601523164e+01 +3675.2500 1.276497107650e+01 +3675.5000 1.222386849754e+01 +3675.7500 1.170218091655e+01 +3676.0000 1.119938699675e+01 +3676.2500 1.071497103371e+01 +3676.5000 1.024842332117e+01 +3676.7500 9.799240492177e+00 +3677.0000 9.366925836112e+00 +3677.2500 8.950989591971e+00 +3677.5000 8.550949218517e+00 +3677.7500 8.166329641815e+00 +3678.0000 7.796663480717e+00 +3678.2500 7.441491250902e+00 +3678.5000 7.100361548058e+00 +3678.7500 6.772831210849e+00 +3679.0000 6.458465464291e+00 +3679.2500 6.156838044183e+00 +3679.5000 5.867531303258e+00 +3679.7500 5.590136299707e+00 +3680.0000 5.324252868754e+00 +3680.2500 5.069489677951e+00 +3680.5000 4.825464266856e+00 +3680.7500 4.591803071790e+00 +3681.0000 4.368141436325e+00 +3681.2500 4.154123608182e+00 +3681.5000 3.949402723205e+00 +3681.7500 3.753640777058e+00 +3682.0000 3.566508585319e+00 +3682.2500 3.387685732589e+00 +3682.5000 3.216860511274e+00 +3682.7500 3.053729850644e+00 +3683.0000 2.897999236793e+00 +3683.2500 2.749382624104e+00 +3683.5000 2.607602338796e+00 +3683.7500 2.472388975124e+00 +3684.0000 2.343481284818e+00 +3684.2500 2.220626060266e+00 +3684.5000 2.103578012003e+00 +3684.7500 1.992099641004e+00 +3685.0000 1.885961106280e+00 +3685.2500 1.784940088259e+00 +3685.5000 1.688821648415e+00 +3685.7500 1.597398085591e+00 +3686.0000 1.510468789450e+00 +3686.2500 1.427840091458e+00 +3686.5000 1.349325113804e+00 +3686.7500 1.274743616623e+00 +3687.0000 1.203921843899e+00 +3687.2500 1.136692368375e+00 +3687.5000 1.072893935804e+00 +3687.7500 1.012371308858e+00 +3688.0000 9.549751109728e-01 +3688.2500 9.005616704169e-01 +3688.5000 8.489928648458e-01 +3688.7500 8.001359665800e-01 +3689.0000 7.538634888409e-01 +3689.2500 7.100530331601e-01 +3689.5000 6.685871381585e-01 +3689.7500 6.293531298844e-01 +3690.0000 5.922429738803e-01 +3690.2500 5.571531291365e-01 +3690.5000 5.239844040776e-01 +3690.7500 4.926418147130e-01 +3691.0000 4.630344450727e-01 +3691.2500 4.350753100353e-01 +3691.5000 4.086812206467e-01 +3691.7500 3.837726520140e-01 +3692.0000 3.602736138511e-01 +3692.2500 3.381115237416e-01 +3692.5000 3.172170831749e-01 +3692.7500 2.975241564021e-01 +3693.0000 2.789696521509e-01 +3693.2500 2.614934082286e-01 +3693.5000 2.450380790371e-01 +3693.7500 2.295490260131e-01 +3694.0000 2.149742110033e-01 +3694.2500 2.012640925753e-01 +3694.5000 1.883715252604e-01 +3694.7500 1.762516617174e-01 +3695.0000 1.648618578033e-01 +3695.2500 1.541615805286e-01 +3695.5000 1.441123188749e-01 +3695.7500 1.346774974429e-01 +3696.0000 1.258223928994e-01 +3696.2500 1.175140531874e-01 +3696.5000 1.097212194570e-01 +3696.7500 1.024142506769e-01 +3697.0000 9.556505088025e-02 +3697.2500 8.914699899610e-02 +3697.5000 8.313488121863e-02 +3697.7500 7.750482586075e-02 +3698.0000 7.223424063985e-02 +3698.2500 6.730175234064e-02 +3698.5000 6.268714879958e-02 +3698.7500 5.837132315401e-02 +3699.0000 5.433622029877e-02 +3699.2500 5.056478549210e-02 +3699.5000 4.704091505265e-02 +3699.7500 4.374940908889e-02 +3700.0000 4.067592620235e-02 +3700.2500 3.780694010591e-02 +3700.5000 3.512969809904e-02 +3700.7500 3.263218134164e-02 +3701.0000 3.030306686902e-02 +3701.2500 2.813169129080e-02 +3701.5000 2.610801611739e-02 +3701.7500 2.422259465814e-02 +3702.0000 2.246654043637e-02 +3702.2500 2.083149706703e-02 +3702.5000 1.930960954397e-02 +3702.7500 1.789349688449e-02 +3703.0000 1.657622608023e-02 +3703.2500 1.535128730407e-02 +3703.5000 1.421257032437e-02 +3703.7500 1.315434207849e-02 +3704.0000 1.217122535918e-02 +3704.2500 1.125817856822e-02 +3704.5000 1.041047649323e-02 +3704.7500 9.623692064508e-03 +3705.0000 8.893679050282e-03 +3705.2500 8.216555649687e-03 +3705.5000 7.588688944274e-03 +3705.7500 7.006680169941e-03 +3706.0000 6.467350772453e-03 +3706.2500 5.967729210945e-03 +3706.5000 5.505038475001e-03 +3706.7500 5.076684282091e-03 +3707.0000 4.680243923339e-03 +3707.2500 4.313455726771e-03 +3707.5000 3.974209108305e-03 +3707.7500 3.660535181908e-03 +3708.0000 3.370597901408e-03 +3708.2500 3.102685707576e-03 +3708.5000 2.855203655102e-03 +3708.7500 2.626665995160e-03 +3709.0000 2.415689190235e-03 +3709.2500 2.220985338888e-03 +3709.5000 2.041355989070e-03 +3709.7500 1.875686319531e-03 +3710.0000 1.722939669784e-03 +3710.2500 1.582152399919e-03 +3710.5000 1.452429062450e-03 +3710.7500 1.332937869174e-03 +3711.0000 1.222906436803e-03 +3711.2500 1.121617795918e-03 +3711.5000 1.028406648511e-03 +3711.7500 9.426558600940e-04 +3712.0000 8.637931730550e-04 +3712.2500 7.912881285689e-04 +3712.5000 7.246491850332e-04 +3712.7500 6.634210215885e-04 +3713.0000 6.071820158727e-04 +3713.2500 5.555418857193e-04 +3713.5000 5.081394850412e-04 +3713.7500 4.646407446610e-04 +3714.0000 4.247367493348e-04 +3714.2500 3.881419426889e-04 +3714.5000 3.545924522376e-04 +3714.7500 3.238445270779e-04 +3715.0000 2.956730812662e-04 +3715.2500 2.698703362711e-04 +3715.5000 2.462445562693e-04 +3715.7500 2.246188704033e-04 +3716.0000 2.048301764572e-04 +3716.2500 1.867281207258e-04 +3716.5000 1.701741491576e-04 +3716.7500 1.550406251386e-04 +3717.0000 1.412100095594e-04 +3717.2500 1.285740990681e-04 +3717.5000 1.170333186554e-04 +3717.7500 1.064960649538e-04 +3718.0000 9.687809685309e-05 +3718.2500 8.810197024164e-05 +3718.5000 8.009651388212e-05 +3718.7500 7.279634361646e-05 +3719.0000 6.614141227048e-05 +3719.2500 6.007659279559e-05 +3719.5000 5.455129234151e-05 +3719.7500 4.951909510202e-05 +3720.0000 4.493743191510e-05 +3720.2500 4.076727473010e-05 +3720.5000 3.697285417810e-05 +3720.7500 3.352139859789e-05 +3721.0000 3.038289297913e-05 +3721.2500 2.752985638733e-05 +3721.5000 2.493713653112e-05 +3721.7500 2.258172022347e-05 +3722.0000 2.044255857296e-05 +3722.2500 1.850040582111e-05 +3722.5000 1.673767081636e-05 +3722.7500 1.513828018530e-05 +3723.0000 1.368755232695e-05 +3723.2500 1.237208141768e-05 +3723.5000 1.117963067103e-05 +3723.7500 1.009903415091e-05 +3724.0000 9.120106486126e-06 +3724.2500 8.233559881460e-06 +3724.5000 7.430927863794e-06 +3724.7500 6.704495242704e-06 +3725.0000 6.047233802835e-06 +3725.2500 5.452743280819e-06 +3725.5000 4.915197212434e-06 +3725.7500 4.429293266460e-06 +3726.0000 3.990207710232e-06 +3726.2500 3.593553678524e-06 +3726.5000 3.235342942107e-06 +3726.7500 2.911950895318e-06 +3727.0000 2.620084503338e-06 +3727.2500 2.356752969706e-06 +3727.5000 2.119240902992e-06 +3727.7500 1.905083778660e-06 +3728.0000 1.712045507955e-06 +3728.2500 1.538097940342e-06 +3728.5000 1.381402139634e-06 +3728.7500 1.240291286520e-06 +3729.0000 1.113255071882e-06 +3729.2500 9.989254560587e-07 +3729.5000 8.960636792091e-07 +3729.7500 8.035484171248e-07 +3730.0000 7.203649853878e-07 +3730.2500 6.455955026197e-07 +3730.5000 5.784099308440e-07 +3730.7500 5.180579176824e-07 +3731.0000 4.638613712919e-07 +3731.2500 4.152077046503e-07 +3731.5000 3.715436910506e-07 +3731.7500 3.323698775067e-07 +3732.0000 2.972355072274e-07 +3732.2500 2.657339064189e-07 +3732.5000 2.374982944478e-07 +3732.7500 2.121979798697e-07 +3733.0000 1.895349080146e-07 +3733.2500 1.692405287532e-07 +3733.5000 1.510729557612e-07 +3733.7500 1.348143910659e-07 +3734.0000 1.202687909318e-07 +3734.2500 1.072597512175e-07 +3734.5000 9.562859224700e-08 +3734.7500 8.523262498451e-08 +3735.0000 7.594358190266e-08 +3735.2500 6.764619740266e-08 +3735.5000 6.023692398509e-08 +3735.7500 5.362277159909e-08 +3736.0000 4.772025872107e-08 +3736.2500 4.245446474079e-08 +3736.5000 3.775817417119e-08 +3736.7500 3.357110405578e-08 +3737.0000 2.983920673009e-08 +3737.2500 2.651404080831e-08 +3737.5000 2.355220391801e-08 +3737.7500 2.091482130052e-08 +3738.0000 1.856708493645e-08 +3738.2500 1.647783834981e-08 +3738.5000 1.461920269402e-08 +3738.7500 1.296624013281e-08 +3739.0000 1.149665090189e-08 +3739.2500 1.019050077638e-08 +3739.5000 9.029975977668e-09 +3739.7500 7.999162833642e-09 +3740.0000 7.083849761303e-09 +3740.2500 6.271349372069e-09 +3740.5000 5.550338710451e-09 +3740.7500 4.910715827482e-09 +3741.0000 4.343471063436e-09 +3741.2500 3.840571571334e-09 +3741.5000 3.394857755094e-09 +3741.7500 2.999950425146e-09 +3742.0000 2.650167591160e-09 +3742.2500 2.340449917369e-09 +3742.5000 2.066293961697e-09 +3742.7500 1.823692406582e-09 +3743.0000 1.609080567716e-09 +3743.2500 1.419288537835e-09 +3743.5000 1.251498386660e-09 +3743.7500 1.103205896001e-09 +3744.0000 9.721863612346e-10 +3744.2500 8.564640375444e-10 +3744.5000 7.542848518687e-10 +3744.7500 6.640920398743e-10 +3745.0000 5.845044018942e-10 +3745.2500 5.142969029594e-10 +3745.5000 4.523833701587e-10 +3745.7500 3.978010658791e-10 +3746.0000 3.496969382632e-10 +3746.2500 3.073153707331e-10 +3746.5000 2.699872708789e-10 +3746.7500 2.371203556027e-10 +3747.0000 2.081905043219e-10 +3747.2500 1.827340654402e-10 +3747.5000 1.603410133316e-10 +3747.7500 1.406488638919e-10 +3748.0000 1.233372664144e-10 +3748.2500 1.081231982533e-10 +3748.5000 9.475669654251e-11 +3748.7500 8.301706824074e-11 +3749.0000 7.270952604405e-11 +3749.2500 6.366220333004e-11 +3749.5000 5.572350632890e-11 +3749.7500 4.875976622334e-11 +3750.0000 4.265315791114e-11 +3750.2500 3.729985577126e-11 +3750.5000 3.260839999927e-11 +3750.7500 2.849824996148e-11 +3751.0000 2.489850359284e-11 +3751.2500 2.174676416495e-11 +3751.5000 1.898813780507e-11 +3751.7500 1.657434698075e-11 +3752.0000 1.446294680098e-11 +3752.2500 1.261663244396e-11 +3752.5000 1.100262732263e-11 +3752.7500 9.592142758858e-12 +3753.0000 8.359900969821e-12 +3753.2500 7.283714090615e-12 +3753.5000 6.344112775752e-12 +3753.7500 5.524018651345e-12 +3754.0000 4.808455538099e-12 +3754.2500 4.184294941864e-12 +3754.5000 3.640031821091e-12 +3754.7500 3.165587096029e-12 +3755.0000 2.752133769109e-12 +3755.2500 2.391943885256e-12 +3755.5000 2.078253879787e-12 +3755.7500 1.805146144539e-12 +3756.0000 1.567444893878e-12 +3756.2500 1.360624634824e-12 +3756.5000 1.180729742768e-12 +3756.7500 1.024303819084e-12 +3757.0000 8.883276617287e-13 +3757.2500 7.701648170020e-13 +3757.5000 6.675138019667e-13 +3757.7500 5.783661943547e-13 +3758.0000 5.009698817248e-13 +3758.2500 4.337968455675e-13 +3758.5000 3.755149302313e-13 +3758.7500 3.249631120787e-13 +3759.0000 2.811298421587e-13 +3759.2500 2.431340867789e-13 +3759.5000 2.102087354549e-13 +3759.7500 1.816860854952e-13 +3760.0000 1.569851475652e-13 +3760.2500 1.356005475015e-13 +3760.5000 1.170928269030e-13 +3760.7500 1.010799690386e-13 +3761.0000 8.722999775204e-14 +3761.2500 7.525451566239e-14 +3761.5000 6.490306433558e-14 +3761.7500 5.595820351310e-14 +3762.0000 4.823121915447e-14 +3762.2500 4.155838118881e-14 +3762.5000 3.579768165821e-14 +3762.7500 3.082599253390e-14 +3763.0000 2.653659003576e-14 +3763.2500 2.283699891331e-14 +3763.5000 1.964711596142e-14 +3763.7500 1.689757714536e-14 +3764.0000 1.452833718268e-14 +3764.2500 1.248743435024e-14 +3764.5000 1.072991672042e-14 +3764.7500 9.216909039784e-15 +3765.0000 7.914802098681e-15 +3765.2500 6.794548746611e-15 +3765.5000 5.831052726564e-15 +3765.7500 5.002638266752e-15 +3766.0000 4.290589911762e-15 +3766.2500 3.678753424354e-15 +3766.5000 3.153189768013e-15 +3766.7500 2.701875210079e-15 +3767.0000 2.314441484376e-15 +3767.2500 1.981950737048e-15 +3767.5000 1.696700664023e-15 +3767.7500 1.452055845827e-15 +3768.0000 1.242301806193e-15 +3768.2500 1.062518774847e-15 +3768.5000 9.084725303232e-16 +3768.7500 7.765200431690e-16 +3769.0000 6.635279398074e-16 +3769.2500 5.668020684153e-16 +3769.5000 4.840266753130e-16 +3769.7500 4.132118979395e-16 +3770.0000 3.526484522720e-16 +3770.2500 3.008685418612e-16 +3770.5000 2.566121453912e-16 +3770.7500 2.187979523507e-16 +3771.0000 1.864983142482e-16 +3771.2500 1.589176637198e-16 +3771.5000 1.353739275651e-16 +3771.7500 1.152825236532e-16 +3772.0000 9.814258705649e-17 +3772.2500 8.352511879946e-17 +3772.5000 7.106279222308e-17 +3772.7500 6.044118801448e-17 +3773.0000 5.139126015854e-17 +3773.2500 4.368286208367e-17 +3773.5000 3.711918564688e-17 +3773.7500 3.153198582090e-17 +3774.0000 2.677748142632e-17 +3774.2500 2.273283736148e-17 +3774.5000 1.929314683795e-17 +3774.7500 1.636884340585e-17 +3775.0000 1.388348229025e-17 +3775.2500 1.177183896374e-17 +3775.5000 9.978280132213e-18 +3775.7500 8.455368565634e-18 +3776.0000 7.162668599013e-18 +3776.2500 6.065723777546e-18 +3776.5000 5.135182125681e-18 +3776.7500 4.346047970222e-18 +3777.0000 3.677042218556e-18 +3777.2500 3.110055550455e-18 +3777.5000 2.629681182433e-18 +3777.7500 2.222815756433e-18 +3778.0000 1.878318532264e-18 +3778.2500 1.586720462257e-18 +3778.5000 1.339975928772e-18 +3778.7500 1.131250957916e-18 +3779.0000 9.547426095339e-19 +3779.2500 8.055250047533e-19 +3779.5000 6.794181055186e-19 +3779.7500 5.728759208744e-19 +3780.0000 4.828912952085e-19 +3780.2500 4.069148455442e-19 +3780.5000 3.427859679022e-19 +3780.7500 2.886741351011e-19 +3781.0000 2.430289672636e-19 +3781.2500 2.045377779350e-19 +3781.5000 1.720894883830e-19 +3781.7500 1.447439648988e-19 +3782.0000 1.217059726694e-19 +3782.2500 1.023030584064e-19 +3782.5000 8.596677528183e-20 +3782.7500 7.221675031637e-20 +3783.0000 6.064716831851e-20 +3783.2500 5.091530960574e-20 +3783.5000 4.273183261826e-20 +3783.7500 3.585253850032e-20 +3784.0000 3.007139392537e-20 +3784.2500 2.521462186060e-20 +3784.5000 2.113569844899e-20 +3784.7500 1.771111845217e-20 +3785.0000 1.483681236393e-20 +3785.2500 1.242511589856e-20 +3785.5000 1.040220753302e-20 +3785.7500 8.705942522404e-21 +3786.0000 7.284022643528e-21 +3786.2500 6.092450134787e-21 +3786.5000 5.094222130161e-21 +3786.7500 4.258228538358e-21 +3787.0000 3.558321968588e-21 +3787.2500 2.972533102175e-21 +3787.5000 2.482408981418e-21 +3787.7500 2.072455142243e-21 +3788.0000 1.729665447885e-21 +3788.2500 1.443125965790e-21 +3788.5000 1.203681336181e-21 +3788.7500 1.003653865499e-21 +3789.0000 8.366070896675e-22 +3789.2500 6.971468322132e-22 +3789.5000 5.807538658385e-22 +3789.7500 4.836432029449e-22 +3790.0000 4.026458161896e-22 +3790.2500 3.351092460226e-22 +3790.5000 2.788141065654e-22 +3790.7500 2.319039696864e-22 +3791.0000 1.928265029042e-22 +3791.2500 1.602840709577e-22 +3791.5000 1.331922930227e-22 +3791.7500 1.106452856507e-22 +3792.0000 9.188652236254e-23 +3792.2500 7.628441022447e-23 +3792.5000 6.331182653547e-23 +3792.7500 5.252897910498e-23 +3793.0000 4.356905499102e-23 +3793.2500 3.612620795893e-23 +3793.5000 2.994550681187e-23 +3793.7500 2.481452724885e-23 +3794.0000 2.055632081106e-23 +3794.2500 1.702353729089e-23 +3794.5000 1.409351297481e-23 +3794.7500 1.166416734592e-23 +3795.0000 9.650576291888e-24 +3795.2500 7.982111215283e-24 +3795.5000 6.600051369880e-24 +3795.7500 5.455591794132e-24 +3796.0000 4.508181838394e-24 +3796.2500 3.724139872947e-24 +3796.5000 3.075498643929e-24 +3796.7500 2.539043187804e-24 +3797.0000 2.095509452304e-24 +3797.2500 1.728916996502e-24 +3797.5000 1.426013517827e-24 +3797.7500 1.175812616204e-24 +3798.0000 9.692092703408e-25 +3798.2500 7.986600649510e-25 +3798.5000 6.579173517604e-25 +3798.7500 5.418083194688e-25 +3799.0000 4.460514457147e-25 +3799.2500 3.671040554341e-25 +3799.5000 3.020357550459e-25 +3799.7500 2.484233843612e-25 +3800.0000 2.042638562547e-25 +3800.2500 1.679018616200e-25 +3800.5000 1.379699237870e-25 +3800.7500 1.133387089952e-25 +3801.0000 9.307585159128e-26 +3801.2500 7.641184594991e-26 +3801.5000 6.271180144542e-26 +3801.7500 5.145206022530e-26 +3802.0000 4.220084686238e-26 +3802.2500 3.460225984908e-26 +3802.5000 2.836303208708e-26 +3802.7500 2.324158496944e-26 +3803.0000 1.903898165155e-26 +3803.2500 1.559145241339e-26 +3803.5000 1.276422092600e-26 +3803.7500 1.044640666258e-26 +3804.0000 8.546817235668e-27 +3804.2500 6.990476424556e-27 +3804.5000 5.715760189518e-27 +3804.7500 4.672034972007e-27 +3805.0000 3.817710820940e-27 +3805.2500 3.118637001947e-27 +3805.5000 2.546780270216e-27 +3805.7500 2.079136359602e-27 +3806.0000 1.696833827764e-27 +3806.2500 1.384396504082e-27 +3806.5000 1.129136667181e-27 +3806.7500 9.206559421336e-28 +3807.0000 7.504349284739e-28 +3807.2500 6.114958936093e-28 +3807.5000 4.981256123273e-28 +3807.7500 4.056477012766e-28 +3808.0000 3.302356701927e-28 +3808.2500 2.687594575723e-28 +3808.5000 2.186594941490e-28 +3808.7500 1.778433897787e-28 +3809.0000 1.446012070533e-28 +3809.2500 1.175360002379e-28 +3809.5000 9.550688756576e-29 +3809.7500 7.758241049675e-29 +3810.0000 6.300233341656e-29 +3810.2500 5.114636645243e-29 +3810.5000 4.150856499372e-29 +3810.7500 3.367638238841e-29 +3811.0000 2.731353558868e-29 +3811.2500 2.214599422048e-29 +3811.5000 1.795052741035e-29 +3811.7500 1.454534446512e-29 +3812.0000 1.178244908060e-29 +3812.2500 9.541395379816e-30 +3812.5000 7.724190407629e-30 +3812.7500 6.251133924687e-30 +3813.0000 5.057424252296e-30 +3813.2500 4.090390003719e-30 +3813.5000 3.307233016825e-30 +3813.7500 2.673188681506e-30 +3814.0000 2.160026958110e-30 +3814.2500 1.744831388254e-30 +3814.5000 1.409004864265e-30 +3814.7500 1.137460305607e-30 +3815.0000 9.179620659530e-31 +3815.2500 7.405901713830e-31 +3815.5000 5.973046216918e-31 +3815.7500 4.815911805731e-31 +3816.0000 3.881735066994e-31 +3816.2500 3.127792760192e-31 +3816.5000 2.519502302547e-31 +3816.7500 2.028879512823e-31 +3817.0000 1.633286824978e-31 +3817.2500 1.314417592029e-31 +3817.5000 1.057472218674e-31 +3817.7500 8.504901085602e-32 +3818.0000 6.838081322952e-32 +3818.2500 5.496217963003e-32 +3818.5000 4.416297500722e-32 +3818.7500 3.547458978954e-32 +3819.0000 2.848663337407e-32 +3819.2500 2.286807200699e-32 +3819.5000 1.835196845968e-32 +3819.7500 1.472313970243e-32 +3820.0000 1.180817782835e-32 +3820.2500 9.467384323331e-33 +3820.5000 7.588252925593e-33 +3820.7500 6.080205447797e-33 +3821.0000 4.870341041439e-33 +3821.2500 3.900004904474e-33 +3821.5000 3.122019354654e-33 +3821.7500 2.498450127231e-33 +3822.0000 1.998805020228e-33 +3822.2500 1.598581671362e-33 +3822.5000 1.278097176240e-33 +3822.7500 1.021545152965e-33 +3823.0000 8.162362968551e-34 +3823.2500 6.519869160194e-34 +3823.5000 5.206267715954e-34 +3823.7500 4.156030722714e-34 +3824.0000 3.316619397734e-34 +3824.2500 2.645922720454e-34 +3824.5000 2.110198473239e-34 +3824.7500 1.682418676760e-34 +3825.0000 1.340940421740e-34 +3825.2500 1.068438446237e-34 +3825.5000 8.510481901603e-35 +3825.7500 6.776780458670e-35 +3826.0000 5.394575761448e-35 +3826.2500 4.292949613485e-35 +3826.5000 3.415221671525e-35 +3826.7500 2.716105368681e-35 +3827.0000 2.159429042615e-35 +3827.2500 1.716310532342e-35 +3827.5000 1.363695478831e-35 +3827.7500 1.083187239269e-35 +3828.0000 8.601105382261e-36 +3828.2500 6.827624051854e-36 +3828.5000 5.418131304450e-36 +3828.7500 4.298273484571e-36 +3829.0000 3.408812822690e-36 +3829.2500 2.702569392958e-36 +3829.5000 2.141978662026e-36 +3829.7500 1.697141335834e-36 +3830.0000 1.344266777536e-36 +3830.2500 1.064430966971e-36 +3830.5000 8.425857600095e-37 +3830.7500 6.667688565826e-37 +3831.0000 5.274740192654e-37 +3831.2500 4.171491983400e-37 +3831.5000 3.297967144073e-37 +3831.7500 2.606548471682e-37 +3832.0000 2.059443368215e-37 +3832.2500 1.626666295296e-37 +3832.5000 1.284433565189e-37 +3832.7500 1.013886606826e-37 +3833.0000 8.000768167827e-38 +3833.2500 6.311586591985e-38 +3833.5000 4.977485000512e-38 +3833.7500 3.924152980817e-38 +3834.0000 3.092761656923e-38 +3834.2500 2.436753094961e-38 +3834.5000 1.919292426527e-38 +3834.7500 1.511246543190e-38 +3835.0000 1.189581049881e-38 +3835.2500 9.360893367895e-39 +3835.5000 7.363852848595e-39 +3835.7500 5.791051744273e-39 +3836.0000 4.552755508350e-39 +3836.2500 3.578126981297e-39 +3836.5000 2.811264476369e-39 +3836.7500 2.208066733463e-39 +3837.0000 1.733752965814e-39 +3837.2500 1.360901741740e-39 +3837.5000 1.067900652404e-39 +3837.7500 8.377211131769e-40 +3838.0000 6.569504224598e-40 +3838.2500 5.150273062443e-40 +3838.5000 4.036383641077e-40 +3838.7500 3.162417030997e-40 +3839.0000 2.476910775297e-40 +3839.2500 1.939394245128e-40 +3839.5000 1.518050988602e-40 +3839.7500 1.187876060868e-40 +3840.0000 9.292239920323e-41 +3840.2500 7.266649460923e-41 +3840.5000 5.680839466493e-41 +3840.7500 4.439717448744e-41 +3841.0000 3.468667361567e-41 +3841.2500 2.709158920151e-41 +3841.5000 2.115294370738e-41 +3841.7500 1.651093426713e-41 +3842.0000 1.288359263510e-41 +3842.2500 1.005001755466e-41 +3842.5000 7.837204057568e-42 +3842.7500 6.109701406927e-42 +3843.0000 4.761494782515e-42 +3843.2500 3.709634601475e-42 +3843.5000 2.889238860406e-42 +3843.7500 2.249573837866e-42 +3844.0000 1.750981460090e-42 +3844.2500 1.362471201352e-42 +3844.5000 1.059833400762e-42 +3844.7500 8.241615683888e-43 +3845.0000 6.406953917513e-43 +3845.2500 4.979151317750e-43 +3845.5000 3.868330136419e-43 +3845.7500 3.004389379288e-43 +3846.0000 2.332670430488e-43 +3846.2500 1.810568783101e-43 +3846.5000 1.404886207691e-43 +3846.7500 1.089762213068e-43 +3847.0000 8.450585788387e-44 +3847.2500 6.550981271377e-44 +3847.5000 5.076803711035e-44 +3847.7500 3.933135032529e-44 +3848.0000 3.046153684487e-44 +3848.2500 2.358463894451e-44 +3848.5000 1.825454952237e-44 +3848.7500 1.412464279267e-44 +3849.0000 1.092567533525e-44 +3849.2500 8.448577094033e-45 +3849.5000 6.531054585725e-45 +3849.7500 5.047165156640e-45 +3850.0000 3.899205983316e-45 +3850.2500 3.011405910578e-45 +3850.5000 2.325020977597e-45 +3850.7500 1.794522503272e-45 +3851.0000 1.384635290925e-45 +3851.2500 1.068037097404e-45 +3851.5000 8.235723007702e-46 +3851.7500 6.348652798236e-46 +3852.0000 4.892444094982e-46 +3852.2500 3.769073581306e-46 +3852.5000 2.902737798343e-46 +3852.7500 2.234834912164e-46 +3853.0000 1.720075587092e-46 +3853.2500 1.323469878513e-46 +3853.5000 1.017993569094e-46 +3853.7500 7.827813141459e-47 +3854.0000 6.017281194196e-47 +3854.2500 4.624072177784e-47 +3854.5000 3.552330307861e-47 +3854.7500 2.728139139221e-47 +3855.0000 2.094518152202e-47 +3855.2500 1.607556245668e-47 +3855.5000 1.233424755929e-47 +3855.7500 9.460706701758e-48 +3856.0000 7.254357096454e-48 +3856.2500 5.560818409794e-48 +3856.5000 4.261308023723e-48 +3856.7500 3.264461661486e-48 +3857.0000 2.500026697379e-48 +3857.2500 1.914000948353e-48 +3857.5000 1.464886841961e-48 +3857.7500 1.120805965453e-48 +3858.0000 8.572770843850e-49 +3858.2500 6.555056213375e-49 +3858.5000 5.010672861413e-49 +3858.7500 3.828953575492e-49 +3859.0000 2.925018207179e-49 +3859.2500 2.233785499547e-49 +3859.5000 1.705370636107e-49 +3859.7500 1.301548970639e-49 +3860.0000 9.930398188528e-50 +3860.2500 7.574208050778e-50 +3860.5000 5.775268946279e-50 +3860.7500 4.402218676707e-50 +3861.0000 3.354558923727e-50 +3861.2500 2.555428011461e-50 +3861.5000 1.946060285687e-50 +3861.7500 1.481539859929e-50 +3862.0000 1.127547384252e-50 +3862.2500 8.578684049931e-51 +3862.5000 6.524856334609e-51 +3862.7500 4.961187520529e-51 +3863.0000 3.771071258151e-51 +3863.2500 2.865551657070e-51 +3863.5000 2.176788080026e-51 +3863.7500 1.653059418338e-51 +3864.0000 1.254946414918e-51 +3864.2500 9.524151684146e-52 +3864.5000 7.225898007456e-52 +3864.7500 5.480519821474e-52 +3865.0000 4.155431037815e-52 +3865.2500 3.149740726432e-52 +3865.5000 2.386700543266e-52 +3865.7500 1.807946007588e-52 +3866.0000 1.369106962443e-52 +3866.2500 1.036462750345e-52 +3866.5000 7.843942732436e-53 +3866.7500 5.934437025309e-53 +3867.0000 4.488373934969e-53 +3867.2500 3.393617820599e-53 +3867.5000 2.565081834738e-53 +3867.7500 1.938223750657e-53 +3868.0000 1.464100836466e-53 +3868.2500 1.105611271349e-53 +3868.5000 8.346383132347e-54 +3868.7500 6.298810828938e-54 +3869.0000 4.752074089931e-54 +3869.2500 3.584034891939e-54 +3869.5000 2.702250727405e-54 +3869.7500 2.036776814623e-54 +3870.0000 1.534707547362e-54 +3870.2500 1.156038241212e-54 +3870.5000 8.705288268516e-55 +3870.7500 6.553276576680e-55 +3871.0000 4.931717840753e-55 +3871.2500 3.710242772597e-55 +3871.5000 2.790427968973e-55 +3871.7500 2.097991315657e-55 +3872.0000 1.576888321290e-55 +3872.2500 1.184847802271e-55 +3872.5000 8.899970708728e-56 +3872.7500 6.683115487925e-56 +3873.0000 5.016880227594e-56 +3873.2500 3.764895074229e-56 +3873.5000 2.824466305805e-56 +3873.7500 2.118284534780e-56 +3874.0000 1.588168465161e-56 +3874.2500 1.190345998017e-56 +3874.5000 8.918960453959e-57 +3874.7500 6.680664067893e-57 +3875.0000 5.002526559475e-57 +3875.2500 3.744756165749e-57 +3875.5000 2.802347949510e-57 +3875.7500 2.096452092486e-57 +3876.0000 1.567877752905e-57 +3876.2500 1.172205684916e-57 +3876.5000 8.761123820915e-58 +3876.7500 6.546063022676e-58 +3877.0000 4.889505224302e-58 +3877.2500 3.651018340587e-58 +3877.5000 2.725382619164e-58 +3877.7500 2.033786292516e-58 +3878.0000 1.517216356463e-58 +3878.2500 1.131498758108e-58 +3878.5000 8.435775477197e-59 +3878.7500 6.287243886783e-59 +3879.0000 4.684464652027e-59 +3879.2500 3.489184933287e-59 +3879.5000 2.598079125487e-59 +3879.7500 1.933949461868e-59 +3880.0000 1.439137301425e-59 +3880.2500 1.070591276261e-59 +3880.5000 7.961768233337e-60 +3880.7500 5.919155130892e-60 +3881.0000 4.399205736200e-60 +3881.2500 3.268535323457e-60 +3881.5000 2.427708010059e-60 +3881.7500 1.802619554023e-60 +3882.0000 1.338061459906e-60 +3882.2500 9.929157579065e-61 +3882.5000 7.365684305199e-61 +3882.7500 5.462332778432e-61 +3883.0000 4.049557448301e-61 +3883.2500 3.001244167054e-61 +3883.5000 2.223614248566e-61 +3883.7500 1.646955715326e-61 +3884.0000 1.219463339510e-61 +3884.2500 9.026511275630e-62 +3884.5000 6.679369390057e-62 +3884.7500 4.941005612472e-62 +3885.0000 3.653924624596e-62 +3885.2500 2.701271101920e-62 +3885.5000 1.996370352842e-62 +3885.7500 1.474953746403e-62 +3886.0000 1.089381613166e-62 +3886.2500 8.043517849756e-63 +3886.5000 5.937127397394e-63 +3886.7500 4.380977822675e-63 +3887.0000 3.231692940624e-63 +3887.2500 2.383161488555e-63 +3887.5000 1.756876371639e-63 +3887.7500 1.294771939522e-63 +3888.0000 9.539150525236e-64 +3888.2500 7.025714069754e-64 +3888.5000 5.172917900410e-64 +3888.7500 3.807545007196e-64 +3889.0000 2.801682066560e-64 +3889.2500 2.060900379202e-64 +3889.5000 1.515512392440e-64 +3889.7500 1.114105525832e-64 +3890.0000 8.187616785574e-65 +3890.2500 6.015240969159e-65 +3890.5000 4.417869612605e-65 +3890.7500 3.243673257985e-65 +3891.0000 2.380814988889e-65 +3891.2500 1.746942203513e-65 +3891.5000 1.281432594058e-65 +3891.7500 9.396742719758e-66 +3892.0000 6.888477526563e-66 +3892.2500 5.048164461613e-66 +3892.5000 3.698350634682e-66 +3892.7500 2.708613325497e-66 +3893.0000 1.983125853269e-66 +3893.2500 1.451502806612e-66 +3893.5000 1.062061879887e-66 +3893.7500 7.768659732082e-67 +3894.0000 5.680763578201e-67 +3894.2500 4.152710607614e-67 +3894.5000 3.034736271571e-67 +3894.7500 2.217045364010e-67 +3895.0000 1.619170337134e-67 +3895.2500 1.182156116759e-67 +3895.5000 8.628225027484e-68 +3895.7500 6.295531872895e-68 +3896.0000 4.592061808276e-68 +3896.2500 3.348477280805e-68 +3896.5000 2.440907499265e-68 +3896.7500 1.778769277481e-68 +3897.0000 1.295842592928e-68 +3897.2500 9.437331571517e-69 +3897.5000 6.870850659361e-69 +3897.7500 5.000761427403e-69 +3898.0000 3.638531125361e-69 +3898.2500 2.646551709183e-69 +3898.5000 1.924416198839e-69 +3898.7500 1.398884810438e-69 +3899.0000 1.016551147945e-69 +3899.2500 7.384835837662e-70 +3899.5000 5.363110997380e-70 +3899.7500 3.893651292806e-70 +3900.0000 2.825931642151e-70 +3900.2500 2.050362161999e-70 +3900.5000 1.487181016841e-70 +3900.7500 1.078354154223e-70 +3901.0000 7.816697867360e-71 +3901.2500 5.664343253036e-71 +3901.5000 4.103364791094e-71 +3901.7500 2.971631947995e-71 +3902.0000 2.151365680735e-71 +3902.2500 1.557032866757e-71 +3902.5000 1.126537490855e-71 +3902.7500 8.148128033120e-72 +3903.0000 5.891615076169e-72 +3903.2500 4.258681980346e-72 +3903.5000 3.077374707238e-72 +3903.7500 2.223053294295e-72 +3904.0000 1.605401605038e-72 +3904.2500 1.158995727926e-72 +3904.5000 8.364583117551e-73 +3904.7500 6.034914064097e-73 +3905.0000 4.352734747964e-73 +3905.2500 3.138467511902e-73 +3905.5000 2.262233320415e-73 +3905.7500 1.630127126577e-73 +3906.0000 1.174275165265e-73 +3906.2500 8.456343179108e-74 +3906.5000 6.087789736576e-74 +3906.7500 4.381280009557e-74 +3907.0000 3.152148700331e-74 +3907.2500 2.267131464159e-74 +3907.5000 1.630087931732e-74 +3907.7500 1.171681789715e-74 +3908.0000 8.419235314815e-75 +3908.2500 6.047835022413e-75 +3908.5000 4.343017132458e-75 +3908.7500 3.117794371508e-75 +3909.0000 2.237524058675e-75 +3909.2500 1.605285479711e-75 +3909.5000 1.151333548023e-75 +3909.7500 8.254948340445e-76 +3910.0000 5.916867964065e-76 +3910.2500 4.239686204551e-76 +3910.5000 3.036965563349e-76 +3910.7500 2.174755000378e-76 +3911.0000 1.556844102192e-76 +3911.2500 1.114151451062e-76 +3911.5000 7.970905333466e-77 +3911.7500 5.700794534097e-77 +3912.0000 4.075936806422e-77 +3912.2500 2.913290625717e-77 +3912.5000 2.081634592548e-77 +3912.7500 1.486926483812e-77 +3913.0000 1.061790444018e-77 +3913.2500 7.579707438488e-78 +3913.5000 5.409166982901e-78 +3913.7500 3.858981072517e-78 +3914.0000 2.752195134781e-78 +3914.2500 1.962230903754e-78 +3914.5000 1.398573560042e-78 +3914.7500 9.965172704917e-79 +3915.0000 7.098206987161e-79 +3915.2500 5.054483723707e-79 +3915.5000 3.598067101901e-79 +3915.7500 2.560507353252e-79 +3916.0000 1.821575217257e-79 +3916.2500 1.295485341140e-79 +3916.5000 9.210478849396e-80 +3916.7500 6.546304885367e-80 +3917.0000 4.651302216719e-80 +3917.2500 3.303826259347e-80 +3917.5000 2.345979184369e-80 +3917.7500 1.665311262957e-80 +3918.0000 1.181764651565e-80 +3918.2500 8.383606436912e-81 +3918.5000 5.945591679613e-81 +3918.7500 4.215252440972e-81 +3919.0000 2.987558425815e-81 +3919.2500 2.116769338745e-81 +3919.5000 1.499322212297e-81 +3919.7500 1.061648434767e-81 +3920.0000 7.515031099214e-82 +3920.2500 5.317961023607e-82 +3920.5000 3.762043622559e-82 +3920.7500 2.660521747642e-82 +3921.0000 1.880936388717e-82 +3921.2500 1.329369505682e-82 +3921.5000 9.392509105490e-83 +3921.7500 6.634097433569e-83 +3922.0000 4.684318051352e-83 +3922.2500 3.306550895302e-83 +3922.5000 2.333288050605e-83 +3922.7500 1.645984759503e-83 +3923.0000 1.160773727792e-83 +3923.2500 8.183397323215e-84 +3923.5000 5.767452317102e-84 +3923.7500 4.063485315347e-84 +3924.0000 2.862053077010e-84 +3924.2500 2.015213106947e-84 +3924.5000 1.418497521657e-84 +3924.7500 9.981607536018e-85 +3925.0000 7.021610015769e-85 +3925.2500 4.937842414404e-85 +3925.5000 3.471379166506e-85 +3925.7500 2.439670559500e-85 +3926.0000 1.714054488687e-85 +3926.2500 1.203877693556e-85 +3926.5000 8.452874415414e-86 +3926.7500 5.933224358320e-86 +3927.0000 4.163335698310e-86 +3927.2500 2.920494512631e-86 +3927.5000 2.048026932525e-86 +3927.7500 1.435751362360e-86 +3928.0000 1.006206491917e-86 +3928.2500 7.049515946312e-87 +3928.5000 4.937371247959e-87 +3928.7500 3.456977668406e-87 +3929.0000 2.419700801466e-87 +3929.2500 1.693132968449e-87 +3929.5000 1.184362826810e-87 +3929.7500 8.282143917178e-88 +3930.0000 5.789820253964e-88 +3930.2500 4.046240499085e-88 +3930.5000 2.826848977021e-88 +3930.7500 1.974321270874e-88 +3931.0000 1.378470081868e-88 +3931.2500 9.621464181974e-89 +3931.5000 6.713504628900e-89 +3931.7500 4.682973716783e-89 +3932.0000 3.265565883338e-89 +3932.2500 2.276457161201e-89 +3932.5000 1.586444253787e-89 +3932.7500 1.105234547675e-89 +3933.0000 7.697476809970e-90 +3933.2500 5.359282227606e-90 +3933.5000 3.730174670569e-90 +3933.7500 2.595469982938e-90 +3934.0000 1.805373874844e-90 +3934.2500 1.255401368449e-90 +3934.5000 8.726947087684e-91 +3934.7500 6.064659029263e-91 +3935.0000 4.213225804178e-91 +3935.2500 2.926087997010e-91 +3935.5000 2.031535100407e-91 +3935.7500 1.410020992344e-91 +3936.0000 9.783429657756e-92 +3936.2500 6.786111252801e-92 +3936.5000 4.705601263278e-92 +3936.7500 3.261922002077e-92 +3937.0000 2.260457365896e-92 +3937.2500 1.565969748667e-92 +3937.5000 1.084512883282e-92 +3937.7500 7.508451197451e-93 +3938.0000 5.196731856879e-93 +3938.2500 3.595626345429e-93 +3938.5000 2.487041879027e-93 +3938.7500 1.719712871632e-93 +3939.0000 1.188756991665e-93 +3939.2500 8.214753298167e-94 +3939.5000 5.674926816685e-94 +3939.7500 3.919135722838e-94 +3940.0000 2.705731144195e-94 +3940.2500 1.867425461230e-94 +3940.5000 1.288445963800e-94 +3940.7500 8.886964412147e-95 +3941.0000 6.127805481208e-95 +3941.2500 4.223969741222e-95 +3941.5000 2.910723310541e-95 +3941.7500 2.005142984974e-95 +3942.0000 1.380874049668e-95 +3942.2500 9.506640839539e-96 +3942.5000 6.542811412000e-96 +3942.7500 4.501590812465e-96 +3943.0000 3.096220817436e-96 +3943.2500 2.128933686626e-96 +3943.5000 1.463378394305e-96 +3943.7500 1.005577252378e-96 +3944.0000 6.907780657746e-97 +3944.2500 4.743795233094e-97 +3944.5000 3.256699041869e-97 +3944.7500 2.235082792551e-97 +3945.0000 1.533465113390e-97 +3945.2500 1.051764436121e-97 +3945.5000 7.211529087168e-98 +3945.7500 4.943112943611e-98 +3946.0000 3.387177874771e-98 +3946.2500 2.320276653037e-98 +3946.5000 1.588933905510e-98 +3946.7500 1.087767779251e-98 +3947.0000 7.444419607554e-99 +3947.2500 5.093189017142e-99 +3947.5000 3.483477735403e-99 +3947.7500 2.381774162985e-99 +3948.0000 1.627992560575e-99 +3948.2500 1.112419382984e-99 +3948.5000 7.598869291659e-100 +3948.7500 5.189119787726e-100 +3949.0000 3.542441714486e-100 +3949.2500 2.417553119856e-100 +3949.5000 1.649353067358e-100 +3949.7500 1.124904189898e-100 +3950.0000 7.669759235961e-101 +3950.2500 5.227718844730e-101 +3950.5000 3.562107390817e-101 +3950.7500 2.426420625807e-101 +3951.0000 1.652302135135e-101 +3951.2500 1.124804728732e-101 +3951.5000 7.654716260067e-102 +3951.7500 5.207692772560e-102 +3952.0000 3.541815280204e-102 +3952.2500 2.408079127861e-102 +3952.5000 1.636740744138e-102 +3952.7500 1.112124293720e-102 +3953.0000 7.554244825213e-103 +3953.2500 5.129713116623e-103 +3953.5000 3.482245557438e-103 +3953.7500 2.363142996635e-103 +3954.0000 1.603189666048e-103 +3954.2500 1.087286763373e-103 +3954.5000 7.371698943832e-104 +3954.7500 4.996378990511e-104 +3955.0000 3.385380199273e-104 +3955.2500 2.293104355231e-104 +3955.5000 1.552760525254e-104 +3955.7500 1.051113072618e-104 +3956.0000 7.113096261947e-105 +3956.2500 4.812073228528e-105 +3956.5000 3.254393487306e-105 +3956.7500 2.200250809274e-105 +3957.0000 1.487094643853e-105 +3957.2500 1.004776159840e-105 +3957.5000 6.786788688900e-106 +3957.7500 4.582723187974e-106 +3958.0000 3.093479308421e-106 +3958.2500 2.087541404934e-106 +3958.5000 1.408274362988e-106 +3958.7500 9.497378373530e-107 +3959.0000 6.403014718014e-107 +3959.2500 4.315484407768e-107 +3959.5000 2.907628356259e-107 +3959.7500 1.958450194462e-107 +3960.0000 1.318713521414e-107 +3960.2500 8.876723227268e-108 +3960.5000 5.973366892356e-108 +3960.7500 4.018370657286e-108 +3961.0000 2.702371729702e-108 +3961.2500 1.816788933081e-108 +3961.5000 1.221035116022e-108 +3961.7500 8.203820020277e-109 +3962.0000 5.510212979636e-109 +3962.2500 3.699856995291e-109 +3962.5000 2.483509253650e-109 +3962.7500 1.666521489152e-109 +3963.0000 1.117944760624e-109 +3963.2500 7.497113106561e-110 +3963.5000 5.026110959946e-110 +3963.7500 3.368483097263e-110 +3964.0000 2.256841003852e-110 +3964.2500 1.511582467911e-110 +3964.5000 1.012108376858e-110 +3964.7500 6.774644078983e-111 +3965.0000 4.533255931697e-111 +3965.2500 3.032482366921e-111 +3965.5000 2.027919076933e-111 +3965.7500 1.355711399555e-111 +3966.0000 9.060416568965e-112 +3966.2500 6.053316390840e-112 +3966.5000 4.042991914220e-112 +3966.7500 2.699458542366e-112 +3967.0000 1.801833851186e-112 +3967.2500 1.202311806583e-112 +3967.5000 8.020173662318e-113 +3967.7500 5.348287228465e-113 +3968.0000 3.565413986057e-113 +3968.2500 2.376126154946e-113 +3968.5000 1.583045202438e-113 +3968.7500 1.054341805875e-113 +3969.0000 7.019946920990e-114 +3969.2500 4.672513013005e-114 +3969.5000 3.109077162468e-114 +3969.7500 2.068124938991e-114 +3970.0000 1.375264816429e-114 +3970.2500 9.142399251303e-115 +3970.5000 6.075728006818e-115 +3970.7500 4.036460933217e-115 +3971.0000 2.680818878830e-115 +3971.2500 1.779911801112e-115 +3971.5000 1.181391335513e-115 +3971.7500 7.838868331465e-116 +3972.0000 5.199687549306e-116 +3972.2500 3.447985372928e-116 +3972.5000 2.285692858747e-116 +3972.7500 1.514727874039e-116 +3973.0000 1.003496016028e-116 +3973.2500 6.646009797006e-117 +3973.5000 4.400181500967e-117 +3973.7500 2.912356218953e-117 +3974.0000 1.927004308803e-117 +3974.2500 1.274633025654e-117 +3974.5000 8.428531940766e-118 +3974.7500 5.571639338831e-118 +3975.0000 3.681953879312e-118 +3975.2500 2.432416726469e-118 +3975.5000 1.606430373892e-118 +3975.7500 1.060596334345e-118 +3976.0000 7.000073906203e-119 +3976.2500 4.618696418938e-119 +3976.5000 3.046495202513e-119 +3976.7500 2.008842408837e-119 +3977.0000 1.324205924381e-119 +3977.2500 8.726286618460e-120 +3977.5000 5.748674369243e-120 +3977.7500 3.785909541612e-120 +3978.0000 2.492510781004e-120 +3978.2500 1.640469447617e-120 +3978.5000 1.079353081604e-120 +3978.7500 7.099425620939e-121 +3979.0000 4.668175550078e-121 +3979.2500 3.068565754994e-121 +3979.5000 2.016452409789e-121 +3979.7500 1.324661175004e-121 +3980.0000 8.699332424396e-122 +3980.2500 5.711252142147e-122 +3980.5000 3.748357709476e-122 +3980.7500 2.459319836900e-122 +3981.0000 1.613070260492e-122 +3981.2500 1.057683779022e-122 +3981.5000 6.933023806517e-123 +3981.7500 4.543116011768e-123 +3982.0000 2.976111859015e-123 +3982.2500 1.948987087053e-123 +3982.5000 1.275947957078e-123 +3982.7500 8.350668581326e-124 +3983.0000 5.463536171304e-124 +3983.2500 3.573474482238e-124 +3983.5000 2.336532549716e-124 +3983.7500 1.527275107524e-124 +3984.0000 9.979918599862e-125 +3984.2500 6.519300686673e-125 +3984.5000 4.257349586058e-125 +3984.7500 2.779341431655e-125 +3985.0000 1.813880940468e-125 +3985.2500 1.183422823621e-125 +3985.5000 7.718544134368e-126 +3985.7500 5.032631483072e-126 +3986.0000 3.280342237182e-126 +3986.2500 2.137506622953e-126 +3986.5000 1.392387351676e-126 +3986.7500 9.067278544593e-127 +3987.0000 5.902800867963e-127 +3987.2500 3.841524389593e-127 +3987.5000 2.499270968440e-127 +3987.7500 1.625501524954e-127 +3988.0000 1.056880062543e-127 +3988.2500 6.869550435006e-128 +3988.5000 4.463702221696e-128 +3988.7500 2.899521944678e-128 +3989.0000 1.882876661850e-128 +3989.2500 1.222310751542e-128 +3989.5000 7.932419588597e-129 +3989.7500 5.146287110500e-129 +3990.0000 3.337694877201e-129 +3990.2500 2.164031307371e-129 +3990.5000 1.402635200383e-129 +3990.7500 9.088458214063e-130 +3991.0000 5.887080613168e-130 +3991.2500 3.812185608599e-130 +3991.5000 2.467813746603e-130 +3991.7500 1.597037108322e-130 +3992.0000 1.033194111861e-130 +3992.2500 6.682102362505e-131 +3992.5000 4.320247352746e-131 +3992.7500 2.792340580662e-131 +3993.0000 1.804232284437e-131 +3993.2500 1.165415522037e-131 +3993.5000 7.525466609387e-132 +3993.7500 4.857919956405e-132 +3994.0000 3.134956816006e-132 +3994.2500 2.022446571934e-132 +3994.5000 1.304328063671e-132 +3994.7500 8.409320526115e-133 +3995.0000 5.419999671717e-133 +3995.2500 3.492222456486e-133 +3995.5000 2.249411067367e-133 +3995.7500 1.448438436134e-133 +3996.0000 9.323855633176e-134 +3996.2500 6.000056312569e-134 +3996.5000 3.859929732159e-134 +3996.7500 2.482377105619e-134 +3997.0000 1.595954119169e-134 +3997.2500 1.025740097671e-134 +3997.5000 6.590502821832e-135 +3997.7500 4.233153859712e-135 +3998.0000 2.718152653729e-135 +3998.2500 1.744809106396e-135 +3998.5000 1.119660303929e-135 +3998.7500 7.182719872394e-136 +3999.0000 4.606338649360e-136 +3999.2500 2.953160721892e-136 +3999.5000 1.892703519765e-136 +3999.7500 1.212669297065e-136 diff --git a/tests/data/vacf/charges.dat b/tests/data/vacf/charges.dat new file mode 100644 index 00000000..40483e15 --- /dev/null +++ b/tests/data/vacf/charges.dat @@ -0,0 +1,11 @@ +9 +# static charges +X 0.0000000 +O -0.8200000 +O -0.8200000 +H 0.4100000 +H 0.4100000 +H 0.4100000 +H 0.4100000 +C 0.0500000 +C 0.0500000 diff --git a/tests/data/vacf/flux_static_ref.dat b/tests/data/vacf/flux_static_ref.dat new file mode 100644 index 00000000..2f292182 --- /dev/null +++ b/tests/data/vacf/flux_static_ref.dat @@ -0,0 +1,101 @@ + 0.000000 1.00000000 + 0.002000 0.82412692 + 0.004000 0.47719358 + 0.006000 0.23996329 + 0.008000 0.22135139 + 0.010000 0.21354653 + 0.012000 0.00439918 + 0.014000 -0.42368292 + 0.016000 -0.81141167 + 0.018000 -0.88511808 + 0.020000 -0.68350432 + 0.022000 -0.48716758 + 0.024000 -0.50042524 + 0.026000 -0.59175952 + 0.028000 -0.49773862 + 0.030000 -0.10856878 + 0.032000 0.37240208 + 0.034000 0.63134273 + 0.036000 0.61340171 + 0.038000 0.50492199 + 0.040000 0.56495657 + 0.042000 0.75512680 + 0.044000 0.84965799 + 0.046000 0.61909001 + 0.048000 0.16588342 + 0.050000 -0.20371265 + 0.052000 -0.31362030 + 0.054000 -0.26682373 + 0.056000 -0.36496680 + 0.058000 -0.66323682 + 0.060000 -0.93626042 + 0.062000 -0.93042766 + 0.064000 -0.61327396 + 0.066000 -0.25133240 + 0.068000 -0.08924698 + 0.070000 -0.08999718 + 0.072000 -0.02573895 + 0.074000 0.28293612 + 0.076000 0.71620793 + 0.078000 0.94600619 + 0.080000 0.82459300 + 0.082000 0.55983325 + 0.084000 0.41007935 + 0.086000 0.44971263 + 0.088000 0.47103533 + 0.090000 0.21719099 + 0.092000 -0.24633096 + 0.094000 -0.63480071 + 0.096000 -0.75066130 + 0.098000 -0.61132116 + 0.100000 -0.52181252 + 0.102000 -0.61137228 + 0.104000 -0.76963265 + 0.106000 -0.69495554 + 0.108000 -0.31271880 + 0.110000 0.15820444 + 0.112000 0.42218292 + 0.114000 0.40443851 + 0.116000 0.37963676 + 0.118000 0.53706212 + 0.120000 0.81772042 + 0.122000 0.95733211 + 0.124000 0.75610527 + 0.126000 0.34780646 + 0.128000 0.03076777 + 0.130000 -0.05064609 + 0.132000 -0.04364421 + 0.134000 -0.19327398 + 0.136000 -0.57471515 + 0.138000 -0.91631215 + 0.140000 -0.93431851 + 0.142000 -0.69149360 + 0.144000 -0.40683858 + 0.146000 -0.31708385 + 0.148000 -0.36140661 + 0.150000 -0.26096668 + 0.152000 0.09887071 + 0.154000 0.55382120 + 0.156000 0.82266954 + 0.158000 0.75645108 + 0.160000 0.56949623 + 0.162000 0.51240094 + 0.164000 0.63981529 + 0.166000 0.68326019 + 0.168000 0.43999035 + 0.170000 -0.03821212 + 0.172000 -0.44147628 + 0.174000 -0.54257273 + 0.176000 -0.47229134 + 0.178000 -0.47343757 + 0.180000 -0.68102851 + 0.182000 -0.88795081 + 0.184000 -0.84615157 + 0.186000 -0.48734075 + 0.188000 -0.05991184 + 0.190000 0.16498566 + 0.192000 0.17121615 + 0.194000 0.19335230 + 0.196000 0.43912035 + 0.198000 0.80741095 + 0.200000 0.98091921 diff --git a/tests/data/vacf/flux_traj_ref.dat b/tests/data/vacf/flux_traj_ref.dat new file mode 100644 index 00000000..08e48f30 --- /dev/null +++ b/tests/data/vacf/flux_traj_ref.dat @@ -0,0 +1,101 @@ + 0.000000 1.00000000 + 0.002000 0.82284876 + 0.004000 0.47731171 + 0.006000 0.23752056 + 0.008000 0.22166775 + 0.010000 0.21511985 + 0.012000 0.00104825 + 0.014000 -0.42371240 + 0.016000 -0.80820973 + 0.018000 -0.88454047 + 0.020000 -0.67946217 + 0.022000 -0.48451161 + 0.024000 -0.49702567 + 0.026000 -0.58732277 + 0.028000 -0.49529662 + 0.030000 -0.10994597 + 0.032000 0.36972713 + 0.034000 0.62531822 + 0.036000 0.60572347 + 0.038000 0.50357255 + 0.040000 0.55926631 + 0.042000 0.74537331 + 0.044000 0.83801055 + 0.046000 0.61202383 + 0.048000 0.16390606 + 0.050000 -0.19753480 + 0.052000 -0.31172331 + 0.054000 -0.26425625 + 0.056000 -0.35700096 + 0.058000 -0.65638464 + 0.060000 -0.92454846 + 0.062000 -0.91942122 + 0.064000 -0.60825669 + 0.066000 -0.24813862 + 0.068000 -0.08806530 + 0.070000 -0.09048598 + 0.072000 -0.02347981 + 0.074000 0.28053142 + 0.076000 0.70882121 + 0.078000 0.94177513 + 0.080000 0.81992582 + 0.082000 0.55703398 + 0.084000 0.40796572 + 0.086000 0.44572418 + 0.088000 0.47088995 + 0.090000 0.21707176 + 0.092000 -0.24892332 + 0.094000 -0.63447240 + 0.096000 -0.75038983 + 0.098000 -0.61286920 + 0.100000 -0.52209516 + 0.102000 -0.61009529 + 0.104000 -0.77044804 + 0.106000 -0.69404459 + 0.108000 -0.31277102 + 0.110000 0.15694530 + 0.112000 0.42538044 + 0.114000 0.40413543 + 0.116000 0.37649217 + 0.118000 0.53662752 + 0.120000 0.81490837 + 0.122000 0.95507410 + 0.124000 0.75363524 + 0.126000 0.34461408 + 0.128000 0.02835367 + 0.130000 -0.04777220 + 0.132000 -0.04727895 + 0.134000 -0.19345989 + 0.136000 -0.56562884 + 0.138000 -0.90768717 + 0.140000 -0.92422337 + 0.142000 -0.68404514 + 0.144000 -0.40389311 + 0.146000 -0.31193137 + 0.148000 -0.35731266 + 0.150000 -0.25871916 + 0.152000 0.09795201 + 0.154000 0.54490911 + 0.156000 0.81015971 + 0.158000 0.74927329 + 0.160000 0.56454723 + 0.162000 0.50511622 + 0.164000 0.63244592 + 0.166000 0.67452994 + 0.168000 0.43763871 + 0.170000 -0.03691021 + 0.172000 -0.43810527 + 0.174000 -0.53825840 + 0.176000 -0.46819821 + 0.178000 -0.47248780 + 0.180000 -0.67861563 + 0.182000 -0.88401779 + 0.184000 -0.84492322 + 0.186000 -0.48527677 + 0.188000 -0.05749134 + 0.190000 0.16488407 + 0.192000 0.17299099 + 0.194000 0.19254458 + 0.196000 0.43770066 + 0.198000 0.80927609 + 0.200000 0.98311257 diff --git a/tests/data/vacf/spectrum_blackman_ref.dat b/tests/data/vacf/spectrum_blackman_ref.dat new file mode 100644 index 00000000..c8172140 --- /dev/null +++ b/tests/data/vacf/spectrum_blackman_ref.dat @@ -0,0 +1,256 @@ + 32.7023623 0.0018225087 + 65.4047245 0.0185795458 + 98.1070868 0.0269345681 + 130.8094491 0.0097741933 + 163.5118114 0.0245200981 + 196.2141736 0.0517695110 + 228.9165359 0.0529880930 + 261.6188982 0.0324132550 + 294.3212605 0.0159560064 + 327.0236227 0.0297122022 + 359.7259850 0.0766073032 + 392.4283473 0.1336683944 + 425.1307096 0.1765597710 + 457.8330718 0.2121490068 + 490.5354341 0.2847710542 + 523.2377964 0.4334983724 + 555.9401587 0.6135074988 + 588.6425209 0.6320190807 + 621.3448832 0.1594345183 + 654.0472455 1.1555547899 + 686.7496078 3.4994856040 + 719.4519700 6.7244653727 + 752.1543323 10.2959317747 + 784.8566946 13.4126004044 + 817.5590569 15.2689232731 + 850.2614191 15.3524244032 + 882.9637814 13.6416478495 + 915.6661437 10.6127284314 + 948.3685060 7.0528009161 + 981.0708682 3.7686913239 + 1013.7732305 1.3223084076 + 1046.4755928 0.1000385635 + 1079.1779551 0.6511132030 + 1111.8803173 0.6667203033 + 1144.5826796 0.4836345653 + 1177.2850419 0.3170509535 + 1209.9874042 0.2344374566 + 1242.6897664 0.2061660398 + 1275.3921287 0.1805698640 + 1308.0944910 0.1346732172 + 1340.7968532 0.0813106236 + 1373.4992155 0.0455047593 + 1406.2015778 0.0380762931 + 1438.9039401 0.0475228668 + 1471.6063023 0.0521406571 + 1504.3086646 0.0387185613 + 1537.0110269 0.0118796346 + 1569.7133892 0.0118986929 + 1602.4157514 0.0188590969 + 1635.1181137 0.0087385340 + 1667.8204760 0.0061674050 + 1700.5228383 0.0116591923 + 1733.2252005 0.0027847353 + 1765.9275628 0.0131854441 + 1798.6299251 0.0235476162 + 1831.3322874 0.0206702708 + 1864.0346496 0.0077909201 + 1896.7370119 0.0040824234 + 1929.4393742 0.0052194676 + 1962.1417365 0.0051950526 + 1994.8440987 0.0187155431 + 2027.5464610 0.0245507706 + 2060.2488233 0.0180924192 + 2092.9511856 0.0043529966 + 2125.6535478 0.0062520609 + 2158.3559101 0.0063307185 + 2191.0582724 0.0025408952 + 2223.7606347 0.0110773469 + 2256.4629969 0.0098389321 + 2289.1653592 0.0027957750 + 2321.8677215 0.0186040614 + 2354.5700838 0.0253472666 + 2387.2724460 0.0162561814 + 2419.9748083 0.0041277392 + 2452.6771706 0.0226143283 + 2485.3795328 0.0269546927 + 2518.0818951 0.0150702487 + 2550.7842574 0.0038145177 + 2583.4866197 0.0180817327 + 2616.1889819 0.0262686840 + 2648.8913442 0.0420552987 + 2681.5937065 0.0836327979 + 2714.2960688 0.1497432552 + 2746.9984310 0.1961763021 + 2779.7007933 0.1312007309 + 2812.4031556 0.1584373919 + 2845.1055179 0.7556074916 + 2877.8078801 1.6568439736 + 2910.5102424 2.7419301513 + 2943.2126047 3.7907026670 + 2975.9149670 4.5476365988 + 3008.6173292 4.8106801324 + 3041.3196915 4.5066071251 + 3074.0220538 3.7191157090 + 3106.7244161 2.6568047146 + 3139.4267783 1.5756390203 + 3172.1291406 0.6905830397 + 3204.8315029 0.1137683658 + 3237.5338652 0.1587186641 + 3270.2362274 0.2137534762 + 3302.9385897 0.1646134400 + 3335.6409520 0.1004259705 + 3368.3433143 0.0623114135 + 3401.0456765 0.0494378927 + 3433.7480388 0.0426320774 + 3466.4504011 0.0275031910 + 3499.1527634 0.0044530597 + 3531.8551256 0.0158474232 + 3564.5574879 0.0236822997 + 3597.2598502 0.0182451964 + 3629.9622125 0.0071574041 + 3662.6645747 0.0004201298 + 3695.3669370 0.0007489101 + 3728.0692993 0.0027498116 + 3760.7716615 0.0035394352 + 3793.4740238 0.0021109713 + 3826.1763861 0.0121773742 + 3858.8787484 0.0209036407 + 3891.5811106 0.0237115357 + 3924.2834729 0.0208086987 + 3956.9858352 0.0166259792 + 3989.6881975 0.0157008787 + 4022.3905597 0.0184551439 + 4055.0929220 0.0203368374 + 4087.7952843 0.0151060474 + 4120.4976466 0.0002037502 + 4153.2000088 0.0224240306 + 4185.9023711 0.0436918646 + 4218.6047334 0.0562007536 + 4251.3070957 0.0568805421 + 4284.0094579 0.0487810203 + 4316.7118202 0.0384190523 + 4349.4141825 0.0312383152 + 4382.1165448 0.0284933666 + 4414.8189070 0.0275583808 + 4447.5212693 0.0249954369 + 4480.2236316 0.0197545246 + 4512.9259939 0.0140278444 + 4545.6283561 0.0112887858 + 4578.3307184 0.0132720704 + 4611.0330807 0.0183847305 + 4643.7354430 0.0227964701 + 4676.4378052 0.0232978290 + 4709.1401675 0.0196495463 + 4741.8425298 0.0146054703 + 4774.5448921 0.0116534815 + 4807.2472543 0.0122919228 + 4839.9496166 0.0149685744 + 4872.6519789 0.0164571082 + 4905.3543411 0.0145274755 + 4938.0567034 0.0097856287 + 4970.7590657 0.0052518598 + 5003.4614280 0.0040369050 + 5036.1637902 0.0069474370 + 5068.8661525 0.0118743048 + 5101.5685148 0.0154042982 + 5134.2708771 0.0153746464 + 5166.9732393 0.0123960582 + 5199.6756016 0.0092148674 + 5232.3779639 0.0084766978 + 5265.0803262 0.0106650790 + 5297.7826884 0.0137971355 + 5330.4850507 0.0150524822 + 5363.1874130 0.0130134635 + 5395.8897753 0.0087672224 + 5428.5921375 0.0050610226 + 5461.2944998 0.0042366975 + 5493.9968621 0.0065826326 + 5526.6992244 0.0103388285 + 5559.4015866 0.0132326057 + 5592.1039489 0.0142154456 + 5624.8063112 0.0139763194 + 5657.5086735 0.0138770107 + 5690.2110357 0.0143036974 + 5722.9133980 0.0139466913 + 5755.6157603 0.0107676714 + 5788.3181226 0.0039820105 + 5821.0204848 0.0045681079 + 5853.7228471 0.0109407243 + 5886.4252094 0.0113959220 + 5919.1275717 0.0049237720 + 5951.8299339 0.0058576784 + 5984.5322962 0.0161920094 + 6017.2346585 0.0221035152 + 6049.9370208 0.0227349458 + 6082.6393830 0.0205022517 + 6115.3417453 0.0190407491 + 6148.0441076 0.0204908473 + 6180.7464698 0.0240832001 + 6213.4488321 0.0269545804 + 6246.1511944 0.0264565143 + 6278.8535567 0.0221654438 + 6311.5559189 0.0161248315 + 6344.2582812 0.0112493182 + 6376.9606435 0.0092015995 + 6409.6630058 0.0093729036 + 6442.3653680 0.0096624953 + 6475.0677303 0.0083315752 + 6507.7700926 0.0054158005 + 6540.4724549 0.0026047666 + 6573.1748171 0.0017580112 + 6605.8771794 0.0033059254 + 6638.5795417 0.0058346113 + 6671.2819040 0.0071645445 + 6703.9842662 0.0060179366 + 6736.6866285 0.0029089400 + 6769.3889908 0.0004522142 + 6802.0913531 0.0027141425 + 6834.7937153 0.0040633622 + 6867.4960776 0.0059803665 + 6900.1984399 0.0096978055 + 6932.9008022 0.0146089391 + 6965.6031644 0.0180278517 + 6998.3055267 0.0167151401 + 7031.0078890 0.0091881665 + 7063.7102513 0.0028815679 + 7096.4126135 0.0153255147 + 7129.1149758 0.0238745229 + 7161.8173381 0.0266948657 + 7194.5197004 0.0253180811 + 7227.2220626 0.0233374134 + 7259.9244249 0.0238124555 + 7292.6267872 0.0271989744 + 7325.3291494 0.0311841084 + 7358.0315117 0.0324140079 + 7390.7338740 0.0287940147 + 7423.4362363 0.0207560235 + 7456.1385985 0.0107634793 + 7488.8409608 0.0016386218 + 7521.5433231 0.0049516478 + 7554.2456854 0.0088350458 + 7586.9480476 0.0105331264 + 7619.6504099 0.0102561617 + 7652.3527722 0.0076744567 + 7685.0551345 0.0026539909 + 7717.7574967 0.0037878345 + 7750.4598590 0.0093263461 + 7783.1622213 0.0113697218 + 7815.8645836 0.0086715475 + 7848.5669458 0.0023186962 + 7881.2693081 0.0047334087 + 7913.9716704 0.0093506142 + 7946.6740327 0.0099814659 + 7979.3763949 0.0072718993 + 8012.0787572 0.0031753967 + 8044.7811195 0.0006747831 + 8077.4834818 0.0040481803 + 8110.1858440 0.0078597745 + 8142.8882063 0.0128792626 + 8175.5905686 0.0185535693 + 8208.2929309 0.0229995464 + 8240.9952931 0.0242709557 + 8273.6976554 0.0219409286 + 8306.4000177 0.0177179488 + 8339.1023800 0.0145059925 + 8371.8047422 0.0145059925 diff --git a/tests/data/vacf/spectrum_exponential_ref.dat b/tests/data/vacf/spectrum_exponential_ref.dat new file mode 100644 index 00000000..9bb26713 --- /dev/null +++ b/tests/data/vacf/spectrum_exponential_ref.dat @@ -0,0 +1,256 @@ + 32.7023623 0.3848921067 + 65.4047245 0.2362073945 + 98.1070868 0.1225537867 + 130.8094491 0.1315237793 + 163.5118114 0.2504224388 + 196.2141736 0.3731128184 + 228.9165359 0.3816034198 + 261.6188982 0.2400781440 + 294.3212605 0.0270232721 + 327.0236227 0.1232602887 + 359.7259850 0.1282939264 + 392.4283473 0.0313528078 + 425.1307096 0.0200635965 + 457.8330718 0.1181625930 + 490.5354341 0.4721408999 + 523.2377964 0.9217018634 + 555.9401587 1.2948910851 + 588.6425209 1.5297339636 + 621.3448832 1.7863006782 + 654.0472455 2.4096805698 + 686.7496078 3.7367766952 + 719.4519700 5.8491111745 + 752.1543323 8.4260701133 + 784.8566946 10.8080701146 + 817.5590569 12.2596356771 + 850.2614191 12.3010842287 + 882.9637814 10.9307972211 + 915.6661437 8.6183776578 + 948.3685060 6.0771768923 + 981.0708682 3.9447520652 + 1013.7732305 2.5409300362 + 1046.4755928 1.8154592646 + 1079.1779551 1.4817376226 + 1111.8803173 1.2326367278 + 1144.5826796 0.9063931682 + 1177.2850419 0.5227366123 + 1209.9874042 0.2000174573 + 1242.6897664 0.0327862317 + 1275.3921287 0.0171936974 + 1308.0944910 0.0632884457 + 1340.7968532 0.0684580216 + 1373.4992155 0.0104328931 + 1406.2015778 0.1373362131 + 1438.9039401 0.2363603586 + 1471.6063023 0.2541620882 + 1504.3086646 0.1978012640 + 1537.0110269 0.1239096216 + 1569.7133892 0.0927164804 + 1602.4157514 0.1241482722 + 1635.1181137 0.1876819755 + 1667.8204760 0.2299833235 + 1700.5228383 0.2166242090 + 1733.2252005 0.1562040023 + 1765.9275628 0.0908192245 + 1798.6299251 0.0626469050 + 1831.3322874 0.0829585673 + 1864.0346496 0.1260394179 + 1896.7370119 0.1506847232 + 1929.4393742 0.1316980094 + 1962.1417365 0.0777372530 + 1994.8440987 0.0232965676 + 2027.5464610 0.0021315505 + 2060.2488233 0.0224785150 + 2092.9511856 0.0620313014 + 2125.6535478 0.0854525403 + 2158.3559101 0.0707846572 + 2191.0582724 0.0252602509 + 2223.7606347 0.0206489704 + 2256.4629969 0.0361125217 + 2289.1653592 0.0128926163 + 2321.8677215 0.0282145795 + 2354.5700838 0.0520199754 + 2387.2724460 0.0341904202 + 2419.9748083 0.0209106660 + 2452.6771706 0.0827026273 + 2485.3795328 0.1159397227 + 2518.0818951 0.1065961826 + 2550.7842574 0.0737845904 + 2583.4866197 0.0584447826 + 2616.1889819 0.0954523768 + 2648.8913442 0.1881055321 + 2681.5937065 0.3041140536 + 2714.2960688 0.3992120677 + 2746.9984310 0.4558480802 + 2779.7007933 0.5118296521 + 2812.4031556 0.6561894460 + 2845.1055179 0.9871080495 + 2877.8078801 1.5501749185 + 2910.5102424 2.2906891731 + 2943.2126047 3.0507149424 + 2975.9149670 3.6200013087 + 3008.6173292 3.8206307703 + 3041.3196915 3.5848314686 + 3074.0220538 2.9862425912 + 3106.7244161 2.2077986580 + 3139.4267783 1.4621969452 + 3172.1291406 0.9053141350 + 3204.8315029 0.5851087010 + 3237.5338652 0.4474876099 + 3270.2362274 0.3888958784 + 3302.9385897 0.3215636452 + 3335.6409520 0.2146868285 + 3368.3433143 0.0933764729 + 3401.0456765 0.0042620965 + 3433.7480388 0.0248837584 + 3466.4504011 0.0047131755 + 3499.1527634 0.0264016663 + 3531.8551256 0.0315590028 + 3564.5574879 0.0002945835 + 3597.2598502 0.0477744568 + 3629.9622125 0.0809907011 + 3662.6645747 0.0803969154 + 3695.3669370 0.0527891932 + 3728.0692993 0.0236587725 + 3760.7716615 0.0168225675 + 3793.4740238 0.0367386632 + 3826.1763861 0.0664322400 + 3858.8787484 0.0816165315 + 3891.5811106 0.0695442816 + 3924.2834729 0.0382061221 + 3956.9858352 0.0093986277 + 3989.6881975 0.0015551187 + 4022.3905597 0.0156843013 + 4055.0929220 0.0349475631 + 4087.7952843 0.0378136834 + 4120.4976466 0.0145439807 + 4153.2000088 0.0254289083 + 4185.9023711 0.0604942227 + 4218.6047334 0.0726267417 + 4251.3070957 0.0599896833 + 4284.0094579 0.0372212896 + 4316.7118202 0.0237406697 + 4349.4141825 0.0292859380 + 4382.1165448 0.0475471021 + 4414.8189070 0.0622140001 + 4447.5212693 0.0602468156 + 4480.2236316 0.0419632609 + 4512.9259939 0.0203940536 + 4545.6283561 0.0108282263 + 4578.3307184 0.0189268867 + 4611.0330807 0.0365918922 + 4643.7354430 0.0485368823 + 4676.4378052 0.0442070049 + 4709.1401675 0.0257405886 + 4741.8425298 0.0059633826 + 4774.5448921 0.0017733752 + 4807.2472543 0.0061237154 + 4839.9496166 0.0210086531 + 4872.6519789 0.0290355628 + 4905.3543411 0.0220599007 + 4938.0567034 0.0038936819 + 4970.7590657 0.0128203044 + 5003.4614280 0.0165092092 + 5036.1637902 0.0055648938 + 5068.8661525 0.0106120928 + 5101.5685148 0.0190655163 + 5134.2708771 0.0133084946 + 5166.9732393 0.0018678154 + 5199.6756016 0.0144002557 + 5232.3779639 0.0144859371 + 5265.0803262 0.0021458146 + 5297.7826884 0.0129980271 + 5330.4850507 0.0193976858 + 5363.1874130 0.0125985205 + 5395.8897753 0.0014327555 + 5428.5921375 0.0111489825 + 5461.2944998 0.0085069662 + 5493.9968621 0.0048662553 + 5526.6992244 0.0191832011 + 5559.4015866 0.0243546895 + 5592.1039489 0.0179100954 + 5624.8063112 0.0067264924 + 5657.5086735 0.0012664664 + 5690.2110357 0.0069659266 + 5722.9133980 0.0196666000 + 5755.6157603 0.0287913233 + 5788.3181226 0.0258322563 + 5821.0204848 0.0114768749 + 5853.7228471 0.0043253874 + 5886.4252094 0.0095926149 + 5919.1275717 0.0006272819 + 5951.8299339 0.0203252293 + 5984.5322962 0.0368114447 + 6017.2346585 0.0400102597 + 6049.9370208 0.0297386573 + 6082.6393830 0.0154950783 + 6115.3417453 0.0090165152 + 6148.0441076 0.0153483747 + 6180.7464698 0.0292145322 + 6213.4488321 0.0393253647 + 6246.1511944 0.0371634171 + 6278.8535567 0.0234393206 + 6311.5559189 0.0073375329 + 6344.2582812 0.0006953392 + 6376.9606435 0.0030768981 + 6409.6630058 0.0131021419 + 6442.3653680 0.0192121253 + 6475.0677303 0.0147479828 + 6507.7700926 0.0017394296 + 6540.4724549 0.0108467949 + 6573.1748171 0.0142951070 + 6605.8771794 0.0070414506 + 6638.5795417 0.0041365451 + 6671.2819040 0.0095169619 + 6703.9842662 0.0041082405 + 6736.6866285 0.0084687184 + 6769.3889908 0.0189356950 + 6802.0913531 0.0197848654 + 6834.7937153 0.0112796869 + 6867.4960776 0.0012459098 + 6900.1984399 0.0012378572 + 6932.9008022 0.0066922990 + 6965.6031644 0.0189810263 + 6998.3055267 0.0249698552 + 7031.0078890 0.0175222526 + 7063.7102513 0.0012762909 + 7096.4126135 0.0212882243 + 7129.1149758 0.0315725017 + 7161.8173381 0.0282681384 + 7194.5197004 0.0171801162 + 7227.2220626 0.0091734319 + 7259.9244249 0.0119314012 + 7292.6267872 0.0243217945 + 7325.3291494 0.0375234677 + 7358.0315117 0.0418657565 + 7390.7338740 0.0340474126 + 7423.4362363 0.0192844358 + 7456.1385985 0.0069790992 + 7488.8409608 0.0034998358 + 7521.5433231 0.0077412768 + 7554.2456854 0.0127640477 + 7586.9480476 0.0119478245 + 7619.6504099 0.0045848582 + 7652.3527722 0.0035845022 + 7685.0551345 0.0052619506 + 7717.7574967 0.0020986751 + 7750.4598590 0.0137144325 + 7783.1622213 0.0208113791 + 7815.8645836 0.0173377161 + 7848.5669458 0.0047838946 + 7881.2693081 0.0087280071 + 7913.9716704 0.0144524258 + 7946.6740327 0.0094969325 + 7979.3763949 0.0012380351 + 8012.0787572 0.0091181385 + 8044.7811195 0.0086103604 + 8077.4834818 0.0015219022 + 8110.1858440 0.0046612845 + 8142.8882063 0.0029810591 + 8175.5905686 0.0071843973 + 8208.2929309 0.0193479270 + 8240.9952931 0.0248503276 + 8273.6976554 0.0196672419 + 8306.4000177 0.0077312335 + 8339.1023800 0.0018998694 + 8371.8047422 0.0018998694 diff --git a/tests/data/vacf/spectrum_hann_ref.dat b/tests/data/vacf/spectrum_hann_ref.dat new file mode 100644 index 00000000..8dabde52 --- /dev/null +++ b/tests/data/vacf/spectrum_hann_ref.dat @@ -0,0 +1,256 @@ + 32.7023623 0.0209915547 + 65.4047245 0.0096620777 + 98.1070868 0.0367814802 + 130.8094491 0.0418941957 + 163.5118114 0.0226404750 + 196.2141736 0.0038077755 + 228.9165359 0.0112185919 + 261.6188982 0.0165256466 + 294.3212605 0.0698331174 + 327.0236227 0.1140581796 + 359.7259850 0.1108810167 + 392.4283473 0.0512156053 + 425.1307096 0.0211898406 + 457.8330718 0.0176061684 + 490.5354341 0.1472550868 + 523.2377964 0.4805176300 + 555.9401587 0.8465222683 + 588.6425209 0.9557355600 + 621.3448832 0.4342332492 + 654.0472455 1.0353587663 + 686.7496078 3.5507730834 + 719.4519700 6.8772516414 + 752.1543323 10.4478805901 + 784.8566946 13.4977664178 + 817.5590569 15.2945780156 + 850.2614191 15.3810831136 + 882.9637814 13.7334537490 + 915.6661437 10.7701976381 + 948.3685060 7.2076604303 + 981.0708682 3.8212279217 + 1013.7732305 1.2075404304 + 1046.4755928 0.3635608283 + 1079.1779551 0.9629132321 + 1111.8803173 0.8965981946 + 1144.5826796 0.5422347148 + 1177.2850419 0.2016598429 + 1209.9874042 0.0237275017 + 1242.6897664 0.0101435900 + 1275.3921287 0.0786630955 + 1308.0944910 0.1392221205 + 1340.7968532 0.1446553334 + 1373.4992155 0.1004098429 + 1406.2015778 0.0422087706 + 1438.9039401 0.0041904535 + 1471.6063023 0.0016936119 + 1504.3086646 0.0133989335 + 1537.0110269 0.0287447482 + 1569.7133892 0.0298294752 + 1602.4157514 0.0160528431 + 1635.1181137 0.0023783794 + 1667.8204760 0.0137641603 + 1700.5228383 0.0130577909 + 1733.2252005 0.0039074154 + 1765.9275628 0.0053848525 + 1798.6299251 0.0081156768 + 1831.3322874 0.0031921302 + 1864.0346496 0.0052114437 + 1896.7370119 0.0112923766 + 1929.4393742 0.0116428547 + 1962.1417365 0.0070753068 + 1994.8440987 0.0015052848 + 2027.5464610 0.0009460828 + 2060.2488233 0.0013697793 + 2092.9511856 0.0067070251 + 2125.6535478 0.0110929013 + 2158.3559101 0.0107685496 + 2191.0582724 0.0045201623 + 2223.7606347 0.0053545334 + 2256.4629969 0.0140345222 + 2289.1653592 0.0167601632 + 2321.8677215 0.0117433357 + 2354.5700838 0.0016781765 + 2387.2724460 0.0074436589 + 2419.9748083 0.0100928344 + 2452.6771706 0.0055554831 + 2485.3795328 0.0002558447 + 2518.0818951 0.0020471702 + 2550.7842574 0.0176410863 + 2583.4866197 0.0394284834 + 2616.1889819 0.0460078489 + 2648.8913442 0.0106299579 + 2681.5937065 0.0794343446 + 2714.2960688 0.2010075928 + 2746.9984310 0.2834036730 + 2779.7007933 0.2185590634 + 2812.4031556 0.1042414259 + 2845.1055179 0.7488190858 + 2877.8078801 1.6879329876 + 2910.5102424 2.7866882490 + 2943.2126047 3.8267369685 + 2975.9149670 4.5675507093 + 3008.6173292 4.8237753767 + 3041.3196915 4.5286250774 + 3074.0220538 3.7574332326 + 3106.7244161 2.7015018152 + 3139.4267783 1.6030193060 + 3172.1291406 0.6774792314 + 3204.8315029 0.0536386721 + 3237.5338652 0.2485047918 + 3270.2362274 0.2987801516 + 3302.9385897 0.2109343357 + 3335.6409520 0.0924570689 + 3368.3433143 0.0104658141 + 3401.0456765 0.0168439042 + 3433.7480388 0.0066336200 + 3466.4504011 0.0120769408 + 3499.1527634 0.0184280162 + 3531.8551256 0.0081434377 + 3564.5574879 0.0099087510 + 3597.2598502 0.0233467381 + 3629.9622125 0.0249253787 + 3662.6645747 0.0156619564 + 3695.3669370 0.0022322002 + 3728.0692993 0.0082849899 + 3760.7716615 0.0125477111 + 3793.4740238 0.0118472798 + 3826.1763861 0.0100739823 + 3858.8787484 0.0106954252 + 3891.5811106 0.0147555369 + 3924.2834729 0.0207613905 + 3956.9858352 0.0259758842 + 3989.6881975 0.0279565619 + 4022.3905597 0.0254165579 + 4055.0929220 0.0182307688 + 4087.7952843 0.0070304593 + 4120.4976466 0.0070745212 + 4153.2000088 0.0224699877 + 4185.9023711 0.0369645996 + 4218.6047334 0.0480526842 + 4251.3070957 0.0536310451 + 4284.0094579 0.0528678114 + 4316.7118202 0.0466923753 + 4349.4141825 0.0375292740 + 4382.1165448 0.0283384234 + 4414.8189070 0.0214469311 + 4447.5212693 0.0177786729 + 4480.2236316 0.0168350158 + 4512.9259939 0.0173315079 + 4545.6283561 0.0180440427 + 4578.3307184 0.0183710085 + 4611.0330807 0.0183695644 + 4643.7354430 0.0183808928 + 4676.4378052 0.0185848727 + 4709.1401675 0.0187975914 + 4741.8425298 0.0186028330 + 4774.5448921 0.0176665274 + 4807.2472543 0.0159834126 + 4839.9496166 0.0138914018 + 4872.6519789 0.0118735649 + 4905.3543411 0.0103087644 + 4938.0567034 0.0093388912 + 4970.7590657 0.0089090956 + 5003.4614280 0.0089047895 + 5036.1637902 0.0092550247 + 5068.8661525 0.0099256429 + 5101.5685148 0.0108328855 + 5134.2708771 0.0117789589 + 5166.9732393 0.0124906779 + 5199.6756016 0.0127507406 + 5232.3779639 0.0125245233 + 5265.0803262 0.0119754609 + 5297.7826884 0.0113413553 + 5330.4850507 0.0107546939 + 5363.1874130 0.0101469031 + 5395.8897753 0.0093295407 + 5428.5921375 0.0082192118 + 5461.2944998 0.0070526155 + 5493.9968621 0.0064122324 + 5526.6992244 0.0069821175 + 5559.4015866 0.0091247821 + 5592.1039489 0.0125091301 + 5624.8063112 0.0160331454 + 5657.5086735 0.0181522150 + 5690.2110357 0.0175106301 + 5722.9133980 0.0135964988 + 5755.6157603 0.0070995275 + 5788.3181226 0.0002254235 + 5821.0204848 0.0061584466 + 5853.7228471 0.0088301054 + 5886.4252094 0.0074037564 + 5919.1275717 0.0023392254 + 5951.8299339 0.0048558503 + 5984.5322962 0.0122547839 + 6017.2346585 0.0182335346 + 6049.9370208 0.0219800756 + 6082.6393830 0.0236040926 + 6115.3417453 0.0238512099 + 6148.0441076 0.0235997971 + 6180.7464698 0.0233973129 + 6213.4488321 0.0232478062 + 6246.1511944 0.0227219625 + 6278.8535567 0.0212977394 + 6311.5559189 0.0187325074 + 6344.2582812 0.0152658460 + 6376.9606435 0.0115518072 + 6409.6630058 0.0083663400 + 6442.3653680 0.0062528237 + 6475.0677303 0.0052960216 + 6507.7700926 0.0051396605 + 6540.4724549 0.0052269474 + 6573.1748171 0.0051207557 + 6605.8771794 0.0047179745 + 6638.5795417 0.0042344161 + 6671.2819040 0.0039698254 + 6703.9842662 0.0039943449 + 6736.6866285 0.0039545506 + 6769.3889908 0.0031439062 + 6802.0913531 0.0008426942 + 6834.7937153 0.0032226729 + 6867.4960776 0.0085388680 + 6900.1984399 0.0137902668 + 6932.9008022 0.0172334195 + 6965.6031644 0.0173368611 + 6998.3055267 0.0134182129 + 7031.0078890 0.0059868749 + 7063.7102513 0.0033837665 + 7096.4126135 0.0126234816 + 7129.1149758 0.0199365728 + 7161.8173381 0.0244397361 + 7194.5197004 0.0263813811 + 7227.2220626 0.0268467820 + 7259.9244249 0.0270937079 + 7292.6267872 0.0278401945 + 7325.3291494 0.0288522476 + 7358.0315117 0.0290378639 + 7390.7338740 0.0270099941 + 7423.4362363 0.0218521021 + 7456.1385985 0.0137175568 + 7488.8409608 0.0039685987 + 7521.5433231 0.0052247634 + 7554.2456854 0.0116561071 + 7586.9480476 0.0138901329 + 7619.6504099 0.0117676207 + 7652.3527722 0.0064172642 + 7685.0551345 0.0001950095 + 7717.7574967 0.0059628827 + 7750.4598590 0.0092964102 + 7783.1622213 0.0095138773 + 7815.8645836 0.0068874671 + 7848.5669458 0.0024070517 + 7881.2693081 0.0025914523 + 7913.9716704 0.0067883890 + 7946.6740327 0.0091477097 + 7979.3763949 0.0090718296 + 8012.0787572 0.0064647796 + 8044.7811195 0.0017241477 + 8077.4834818 0.0043373395 + 8110.1858440 0.0106501165 + 8142.8882063 0.0161200255 + 8175.5905686 0.0198931672 + 8208.2929309 0.0215794364 + 8240.9952931 0.0213550136 + 8273.6976554 0.0198949392 + 8306.4000177 0.0181445784 + 8339.1023800 0.0169993180 + 8371.8047422 0.0169993180 diff --git a/tests/data/vacf/spectrum_none_ref.dat b/tests/data/vacf/spectrum_none_ref.dat new file mode 100644 index 00000000..b0ab5510 --- /dev/null +++ b/tests/data/vacf/spectrum_none_ref.dat @@ -0,0 +1,256 @@ + 32.7023623 0.0904911818 + 65.4047245 0.4871028398 + 98.1070868 0.2514731339 + 130.8094491 0.4961146502 + 163.5118114 0.5464026181 + 196.2141736 0.3461366778 + 228.9165359 0.9019686777 + 261.6188982 0.1241290475 + 294.3212605 1.0413493855 + 327.0236227 0.8296145092 + 359.7259850 0.7185917687 + 392.4283473 1.4456288182 + 425.1307096 0.0015457467 + 457.8330718 1.8755977554 + 490.5354341 1.3114522227 + 523.2377964 1.4981845605 + 555.9401587 2.7737203261 + 588.6425209 0.0300536387 + 621.3448832 3.8888373985 + 654.0472455 2.9553340544 + 686.7496078 3.5113287595 + 719.4519700 7.7191163553 + 752.1543323 0.4148463923 + 784.8566946 17.9430321360 + 817.5590569 34.7997174462 + 850.2614191 36.3161857010 + 882.9637814 20.9238882978 + 915.6661437 1.1449575863 + 948.3685060 8.5407656434 + 981.0708682 4.9684082965 + 1013.7732305 2.8931379172 + 1046.4755928 5.0862951485 + 1079.1779551 0.6862685081 + 1111.8803173 3.5812144299 + 1144.5826796 2.6372890830 + 1177.2850419 1.4033402653 + 1209.9874042 3.0548638846 + 1242.6897664 0.6332855110 + 1275.3921287 2.2636851975 + 1308.0944910 1.9363149761 + 1340.7968532 0.8004904195 + 1373.4992155 2.1905694896 + 1406.2015778 0.6110172314 + 1438.9039401 1.6021543630 + 1471.6063023 1.5369056286 + 1504.3086646 0.5129157974 + 1537.0110269 1.7215410299 + 1569.7133892 0.5951023998 + 1602.4157514 1.2107853356 + 1635.1181137 1.2905149704 + 1667.8204760 0.3300271490 + 1700.5228383 1.4095329420 + 1733.2252005 0.5728286010 + 1765.9275628 0.9552525436 + 1798.6299251 1.1289820889 + 1831.3322874 0.1868140383 + 1864.0346496 1.1670442268 + 1896.7370119 0.5486322005 + 1929.4393742 0.7479481814 + 1962.1417365 0.9708973583 + 1994.8440987 0.1019037763 + 2027.5464610 0.9677812152 + 2060.2488233 0.4957907448 + 2092.9511856 0.5982784963 + 2125.6535478 0.8184930563 + 2158.3559101 0.0706346472 + 2191.0582724 0.8072462547 + 2223.7606347 0.4134067942 + 2256.4629969 0.5081330526 + 2289.1653592 0.6815751638 + 2321.8677215 0.0740669374 + 2354.5700838 0.6622663136 + 2387.2724460 0.2836426032 + 2419.9748083 0.4746854443 + 2452.6771706 0.5200598092 + 2485.3795328 0.1942102800 + 2518.0818951 0.6431431259 + 2550.7842574 0.2244039537 + 2583.4866197 0.3925355362 + 2616.1889819 0.2827774356 + 2648.8913442 0.3422102942 + 2681.5937065 0.4447518491 + 2714.2960688 0.2170732165 + 2746.9984310 0.5846084681 + 2779.7007933 0.1300987010 + 2812.4031556 0.9700030372 + 2845.1055179 0.3100106746 + 2877.8078801 1.4993224432 + 2910.5102424 1.5899328002 + 2943.2126047 2.3367434287 + 2975.9149670 8.5677231525 + 3008.6173292 12.1065130363 + 3041.3196915 9.5398445820 + 3074.0220538 2.8266229939 + 3106.7244161 2.4736854548 + 3139.4267783 2.7890928095 + 3172.1291406 0.2208758082 + 3204.8315029 2.1798651921 + 3237.5338652 1.0373638486 + 3270.2362274 1.2015726952 + 3302.9385897 1.5761760801 + 3335.6409520 0.1210390336 + 3368.3433143 1.4805829482 + 3401.0456765 0.8061960005 + 3433.7480388 0.8263890920 + 3466.4504011 1.2169317244 + 3499.1527634 0.0379506712 + 3531.8551256 1.1765548576 + 3564.5574879 0.7218976795 + 3597.2598502 0.6171805218 + 3629.9622125 1.0176766798 + 3662.6645747 0.0033432035 + 3695.3669370 1.0008016159 + 3728.0692993 0.6446123683 + 3760.7716615 0.5618869723 + 3793.4740238 0.9962797223 + 3826.1763861 0.1126451091 + 3858.8787484 0.8736648569 + 3891.5811106 0.6540505376 + 3924.2834729 0.4394977943 + 3956.9858352 0.9292073226 + 3989.6881975 0.1878808154 + 4022.3905597 0.7536164145 + 4055.0929220 0.6240136754 + 4087.7952843 0.3862739707 + 4120.4976466 0.9051827911 + 4153.2000088 0.2242824043 + 4185.9023711 0.7711514747 + 4218.6047334 0.7979903581 + 4251.3070957 0.1318424162 + 4284.0094579 0.7663958616 + 4316.7118202 0.2964900849 + 4349.4141825 0.5983999335 + 4382.1165448 0.7015660737 + 4414.8189070 0.1095440940 + 4447.5212693 0.7320076976 + 4480.2236316 0.3389993429 + 4512.9259939 0.5233650395 + 4545.6283561 0.6936160507 + 4578.3307184 0.0433265125 + 4611.0330807 0.6875719092 + 4643.7354430 0.3804927337 + 4676.4378052 0.4529581998 + 4709.1401675 0.6937518600 + 4741.8425298 0.0323653277 + 4774.5448921 0.6336939627 + 4807.2472543 0.4180260761 + 4839.9496166 0.3732297272 + 4872.6519789 0.6709229270 + 4905.3543411 0.0828770322 + 4938.0567034 0.5933802452 + 4970.7590657 0.4541656213 + 5003.4614280 0.3018631076 + 5036.1637902 0.6553733740 + 5068.8661525 0.1398877732 + 5101.5685148 0.5427748708 + 5134.2708771 0.4763187894 + 5166.9732393 0.2425777055 + 5199.6756016 0.6464116804 + 5232.3779639 0.2005444400 + 5265.0803262 0.4883208334 + 5297.7826884 0.4976953620 + 5330.4850507 0.1738156564 + 5363.1874130 0.6167070585 + 5395.8897753 0.2391484721 + 5428.5921375 0.4436691260 + 5461.2944998 0.5112654990 + 5493.9968621 0.1234972221 + 5526.6992244 0.6026199059 + 5559.4015866 0.2791638640 + 5592.1039489 0.4151548314 + 5624.8063112 0.5497811654 + 5657.5086735 0.0611943537 + 5690.2110357 0.6147704860 + 5722.9133980 0.3900007847 + 5755.6157603 0.3033938443 + 5788.3181226 0.5550859874 + 5821.0204848 0.0684862304 + 5853.7228471 0.4675225282 + 5886.4252094 0.3261697708 + 5919.1275717 0.2811628785 + 5951.8299339 0.5076440762 + 5984.5322962 0.0268825283 + 6017.2346585 0.5238388508 + 6049.9370208 0.4052416691 + 6082.6393830 0.2254595554 + 6115.3417453 0.5247797236 + 6148.0441076 0.0954361528 + 6180.7464698 0.4835517439 + 6213.4488321 0.4380848925 + 6246.1511944 0.1628466383 + 6278.8535567 0.5060402749 + 6311.5559189 0.1314325763 + 6344.2582812 0.4501000978 + 6376.9606435 0.4467177061 + 6409.6630058 0.1471876189 + 6442.3653680 0.5411241914 + 6475.0677303 0.2082092027 + 6507.7700926 0.4081754699 + 6540.4724549 0.4873693728 + 6573.1748171 0.0722616220 + 6605.8771794 0.5212750860 + 6638.5795417 0.2639290840 + 6671.2819040 0.3481373103 + 6703.9842662 0.4924443244 + 6736.6866285 0.0216649170 + 6769.3889908 0.5015915501 + 6802.0913531 0.3027194998 + 6834.7937153 0.3086362078 + 6867.4960776 0.5132439463 + 6900.1984399 0.0332728843 + 6932.9008022 0.5010856069 + 6965.6031644 0.3950136094 + 6998.3055267 0.1921277523 + 7031.0078890 0.4756160173 + 7063.7102513 0.1007568358 + 7096.4126135 0.3948015215 + 7129.1149758 0.3209056575 + 7161.8173381 0.2305822795 + 7194.5197004 0.5144049889 + 7227.2220626 0.1421932436 + 7259.9244249 0.3914653989 + 7292.6267872 0.3739294772 + 7325.3291494 0.1686545845 + 7358.0315117 0.5104804125 + 7390.7338740 0.2038370736 + 7423.4362363 0.3244233580 + 7456.1385985 0.3586464682 + 7488.8409608 0.1332607292 + 7521.5433231 0.4571457587 + 7554.2456854 0.1392724734 + 7586.9480476 0.4175858615 + 7619.6504099 0.4630405775 + 7652.3527722 0.0892228705 + 7685.0551345 0.5286902898 + 7717.7574967 0.2843595509 + 7750.4598590 0.3154466313 + 7783.1622213 0.4771176280 + 7815.8645836 0.0056863726 + 7848.5669458 0.4829331056 + 7881.2693081 0.3181579758 + 7913.9716704 0.2664163902 + 7946.6740327 0.4945256722 + 7979.3763949 0.0748753399 + 8012.0787572 0.4180333569 + 8044.7811195 0.3240140076 + 8077.4834818 0.2159841586 + 8110.1858440 0.4566527569 + 8142.8882063 0.0583103340 + 8175.5905686 0.4520653451 + 8208.2929309 0.3892851120 + 8240.9952931 0.1661023518 + 8273.6976554 0.4724801184 + 8306.4000177 0.1214460973 + 8339.1023800 0.4138874761 + 8371.8047422 0.4138874761 diff --git a/tests/data/vacf/traj_1.chrg b/tests/data/vacf/traj_1.chrg new file mode 100644 index 00000000..5bcb3655 --- /dev/null +++ b/tests/data/vacf/traj_1.chrg @@ -0,0 +1,2750 @@ +9 + +X 0.0000000 +O -0.8047906 +O -0.8291013 +H 0.3911500 +H 0.4556563 +H 0.3453604 +H 0.4567975 +C -0.0244636 +C 0.0812516 +9 + +X 0.0000000 +O -0.7854827 +O -0.8137280 +H 0.3447323 +H 0.4820118 +H 0.3981190 +H 0.4726803 +C -0.0129914 +C 0.1156711 +9 + +X 0.0000000 +O -0.7742981 +O -0.8360933 +H 0.3151241 +H 0.4732841 +H 0.3782707 +H 0.4690931 +C 0.0032977 +C 0.1006542 +9 + +X 0.0000000 +O -0.7497307 +O -0.8466359 +H 0.3417196 +H 0.5108938 +H 0.3524859 +H 0.4476658 +C 0.0331437 +C 0.0773127 +9 + +X 0.0000000 +O -0.7581263 +O -0.8271528 +H 0.3059994 +H 0.5121846 +H 0.3459171 +H 0.4274474 +C 0.0381560 +C 0.1048711 +9 + +X 0.0000000 +O -0.7541035 +O -0.7672824 +H 0.3264426 +H 0.5084896 +H 0.3195416 +H 0.4435543 +C 0.0357169 +C 0.1170843 +9 + +X 0.0000000 +O -0.7440002 +O -0.8331810 +H 0.3204697 +H 0.5060100 +H 0.3218177 +H 0.4410433 +C 0.0622297 +C 0.1479226 +9 + +X 0.0000000 +O -0.7717499 +O -0.7870142 +H 0.3775159 +H 0.4704981 +H 0.3089473 +H 0.4374662 +C 0.0817051 +C 0.1265889 +9 + +X 0.0000000 +O -0.7305576 +O -0.7688197 +H 0.3780237 +H 0.4638254 +H 0.3475227 +H 0.4071670 +C 0.0729701 +C 0.1445477 +9 + +X 0.0000000 +O -0.7478502 +O -0.7431711 +H 0.3182513 +H 0.4508423 +H 0.3297378 +H 0.4200622 +C 0.0845436 +C 0.0923673 +9 + +X 0.0000000 +O -0.7626445 +O -0.7488972 +H 0.3084193 +H 0.4442324 +H 0.3362058 +H 0.4157059 +C 0.0818827 +C 0.1275577 +9 + +X 0.0000000 +O -0.7621926 +O -0.7949971 +H 0.3244676 +H 0.4682998 +H 0.3456658 +H 0.4161224 +C 0.0487522 +C 0.1163373 +9 + +X 0.0000000 +O -0.7449027 +O -0.7471450 +H 0.3526074 +H 0.4820302 +H 0.3340731 +H 0.3724121 +C 0.1099990 +C 0.0943479 +9 + +X 0.0000000 +O -0.7688577 +O -0.7478973 +H 0.3599628 +H 0.4509174 +H 0.3616660 +H 0.3617150 +C 0.0960684 +C 0.1149488 +9 + +X 0.0000000 +O -0.7611655 +O -0.7525789 +H 0.3879537 +H 0.4707426 +H 0.3668663 +H 0.3687439 +C 0.1384792 +C 0.0903685 +9 + +X 0.0000000 +O -0.7593166 +O -0.7376987 +H 0.3904144 +H 0.4290728 +H 0.3672347 +H 0.3559563 +C 0.0876872 +C 0.1056912 +9 + +X 0.0000000 +O -0.7676024 +O -0.7640601 +H 0.3858327 +H 0.4259658 +H 0.3021112 +H 0.3561407 +C 0.1055690 +C 0.0959542 +9 + +X 0.0000000 +O -0.7912365 +O -0.7648785 +H 0.3742960 +H 0.4126997 +H 0.3880016 +H 0.3381833 +C 0.1058802 +C 0.0662442 +9 + +X 0.0000000 +O -0.7865999 +O -0.7845320 +H 0.4031615 +H 0.3812262 +H 0.3801800 +H 0.3242557 +C 0.1297765 +C 0.0809982 +9 + +X 0.0000000 +O -0.7898957 +O -0.7482315 +H 0.4129889 +H 0.3978753 +H 0.3867003 +H 0.3191622 +C 0.1132217 +C 0.0630493 +9 + +X 0.0000000 +O -0.7717581 +O -0.7282776 +H 0.4168963 +H 0.3514959 +H 0.3973592 +H 0.3165919 +C 0.1139627 +C 0.0492377 +9 + +X 0.0000000 +O -0.8256822 +O -0.7839034 +H 0.4461202 +H 0.3861385 +H 0.4070658 +H 0.3255375 +C 0.1330744 +C 0.0817392 +9 + +X 0.0000000 +O -0.8250383 +O -0.7659947 +H 0.4795177 +H 0.3626091 +H 0.4096792 +H 0.2706948 +C 0.1323892 +C 0.0382500 +9 + +X 0.0000000 +O -0.8221441 +O -0.7485691 +H 0.4497535 +H 0.3344501 +H 0.4498608 +H 0.3222484 +C 0.1065197 +C 0.0284151 +9 + +X 0.0000000 +O -0.8370188 +O -0.7879602 +H 0.4438425 +H 0.3562500 +H 0.4387057 +H 0.3503162 +C 0.0900967 +C 0.0830435 +9 + +X 0.0000000 +O -0.8665329 +O -0.8014996 +H 0.4899141 +H 0.3498236 +H 0.4281896 +H 0.3467958 +C 0.1021246 +C 0.0332023 +9 + +X 0.0000000 +O -0.8653470 +O -0.7707958 +H 0.4625085 +H 0.3435252 +H 0.4439818 +H 0.3873336 +C 0.0911816 +C -0.0082594 +9 + +X 0.0000000 +O -0.8976361 +O -0.7885707 +H 0.4376609 +H 0.3441093 +H 0.4509890 +H 0.3227769 +C 0.0999114 +C 0.0034969 +9 + +X 0.0000000 +O -0.8904065 +O -0.8097121 +H 0.5096717 +H 0.3472333 +H 0.4811198 +H 0.3467986 +C 0.0674007 +C 0.0116048 +9 + +X 0.0000000 +O -0.8622415 +O -0.8460810 +H 0.4866948 +H 0.3406415 +H 0.4665064 +H 0.3388221 +C 0.0430257 +C -0.0025317 +9 + +X 0.0000000 +O -0.9126716 +O -0.8009433 +H 0.5135154 +H 0.3249766 +H 0.4991120 +H 0.3379598 +C 0.0407885 +C 0.0000436 +9 + +X 0.0000000 +O -0.8704560 +O -0.8345357 +H 0.4595135 +H 0.3269290 +H 0.4749054 +H 0.3780301 +C 0.0309276 +C -0.0422999 +9 + +X 0.0000000 +O -0.9226974 +O -0.8729960 +H 0.4944886 +H 0.3387712 +H 0.4825384 +H 0.3982915 +C 0.0332123 +C -0.0225413 +9 + +X 0.0000000 +O -0.8621040 +O -0.8630198 +H 0.4997998 +H 0.3408645 +H 0.4730044 +H 0.4216521 +C 0.0037404 +C -0.0180689 +9 + +X 0.0000000 +O -0.9093323 +O -0.8763521 +H 0.4961916 +H 0.2850719 +H 0.5028574 +H 0.3682764 +C 0.0127423 +C -0.0011191 +9 + +X 0.0000000 +O -0.9027758 +O -0.8701134 +H 0.4663970 +H 0.3296749 +H 0.4862670 +H 0.4385693 +C -0.0042588 +C 0.0004187 +9 + +X 0.0000000 +O -0.9046179 +O -0.9045758 +H 0.4763225 +H 0.3352734 +H 0.4912551 +H 0.4152631 +C -0.0011527 +C 0.0006181 +9 + +X 0.0000000 +O -0.9077844 +O -0.8874864 +H 0.4620609 +H 0.3487433 +H 0.4973705 +H 0.4401072 +C -0.0053124 +C -0.0593910 +9 + +X 0.0000000 +O -0.8784153 +O -0.8922826 +H 0.4696483 +H 0.3692823 +H 0.4906574 +H 0.4402471 +C -0.0067347 +C -0.0047606 +9 + +X 0.0000000 +O -0.8877152 +O -0.8919984 +H 0.4636709 +H 0.3786884 +H 0.4784489 +H 0.4184627 +C -0.0175945 +C -0.0177751 +9 + +X 0.0000000 +O -0.9188155 +O -0.8847724 +H 0.4306170 +H 0.3997363 +H 0.4593136 +H 0.4606611 +C -0.0147180 +C -0.0314697 +9 + +X 0.0000000 +O -0.8853232 +O -0.9000934 +H 0.4707844 +H 0.3802283 +H 0.4503325 +H 0.4839277 +C -0.0328977 +C -0.0165102 +9 + +X 0.0000000 +O -0.8794959 +O -0.8992223 +H 0.4297674 +H 0.4494606 +H 0.4541769 +H 0.5215891 +C -0.0288801 +C -0.0231255 +9 + +X 0.0000000 +O -0.8427490 +O -0.8938760 +H 0.3589257 +H 0.4000488 +H 0.4286179 +H 0.5004163 +C -0.0377902 +C 0.0233946 +9 + +X 0.0000000 +O -0.8581982 +O -0.9029608 +H 0.3984569 +H 0.4823009 +H 0.4141353 +H 0.5267946 +C -0.0599095 +C 0.0629235 +9 + +X 0.0000000 +O -0.8703527 +O -0.8615609 +H 0.3728751 +H 0.4219422 +H 0.4200671 +H 0.4931932 +C -0.0541557 +C 0.0395266 +9 + +X 0.0000000 +O -0.8393359 +O -0.8886478 +H 0.3631994 +H 0.4741387 +H 0.4329903 +H 0.4588403 +C -0.0296224 +C 0.0313929 +9 + +X 0.0000000 +O -0.8539737 +O -0.8854444 +H 0.3659663 +H 0.4199683 +H 0.4114583 +H 0.5098018 +C -0.0177956 +C 0.0251826 +9 + +X 0.0000000 +O -0.8026943 +O -0.8611680 +H 0.3664600 +H 0.4717546 +H 0.3702592 +H 0.4894861 +C -0.0097888 +C 0.0414871 +9 + +X 0.0000000 +O -0.7880015 +O -0.8829790 +H 0.3626418 +H 0.4519333 +H 0.3707433 +H 0.5214457 +C 0.0142596 +C 0.0696548 +9 + +X 0.0000000 +O -0.8078902 +O -0.8445386 +H 0.3407259 +H 0.4842227 +H 0.4179453 +H 0.5062735 +C 0.0257624 +C 0.1039451 +9 + +X 0.0000000 +O -0.8060930 +O -0.8114415 +H 0.3324058 +H 0.4888470 +H 0.3354163 +H 0.4988057 +C 0.0049124 +C 0.1646433 +9 + +X 0.0000000 +O -0.7952345 +O -0.8507217 +H 0.3315619 +H 0.4504462 +H 0.4091495 +H 0.4970116 +C -0.0237870 +C 0.1035723 +9 + +X 0.0000000 +O -0.7624145 +O -0.8235947 +H 0.3414478 +H 0.4763778 +H 0.3253488 +H 0.4756526 +C 0.0416252 +C 0.1183820 +9 + +X 0.0000000 +O -0.7735932 +O -0.7542389 +H 0.3291320 +H 0.4915025 +H 0.3453957 +H 0.4847998 +C 0.0428898 +C 0.1162424 +9 + +X 0.0000000 +O -0.7533538 +O -0.7819849 +H 0.3246247 +H 0.4640998 +H 0.3220105 +H 0.4791397 +C 0.0462217 +C 0.0904691 +9 + +X 0.0000000 +O -0.7511989 +O -0.8106903 +H 0.3504242 +H 0.4866933 +H 0.3406512 +H 0.4383561 +C 0.0424264 +C 0.1011787 +9 + +X 0.0000000 +O -0.7389304 +O -0.7820900 +H 0.3363970 +H 0.4684199 +H 0.3462452 +H 0.4602085 +C 0.0867036 +C 0.1461386 +9 + +X 0.0000000 +O -0.7693336 +O -0.8101753 +H 0.3478368 +H 0.4695536 +H 0.3136464 +H 0.4129589 +C 0.0850412 +C 0.1013086 +9 + +X 0.0000000 +O -0.7558615 +O -0.7778873 +H 0.3757612 +H 0.4944472 +H 0.2981797 +H 0.3750379 +C 0.0713820 +C 0.0957134 +9 + +X 0.0000000 +O -0.7546183 +O -0.8071265 +H 0.3812143 +H 0.4982657 +H 0.3214699 +H 0.3655678 +C 0.1052847 +C 0.1226771 +9 + +X 0.0000000 +O -0.7511447 +O -0.7503670 +H 0.3454493 +H 0.4700184 +H 0.3416375 +H 0.3896191 +C 0.1073906 +C 0.1491776 +9 + +X 0.0000000 +O -0.7732007 +O -0.7606553 +H 0.3472345 +H 0.4999190 +H 0.3432480 +H 0.4510837 +C 0.1283408 +C 0.1396726 +9 + +X 0.0000000 +O -0.7219784 +O -0.7336285 +H 0.3977919 +H 0.4125689 +H 0.3446604 +H 0.3733791 +C 0.1202653 +C 0.1468915 +9 + +X 0.0000000 +O -0.7372590 +O -0.7875351 +H 0.3496667 +H 0.3918739 +H 0.3218976 +H 0.3799245 +C 0.1321561 +C 0.1291202 +9 + +X 0.0000000 +O -0.7451317 +O -0.7198985 +H 0.3859741 +H 0.4219648 +H 0.3465059 +H 0.3620336 +C 0.1237297 +C 0.1228220 +9 + +X 0.0000000 +O -0.7448459 +O -0.7433475 +H 0.4377394 +H 0.4336823 +H 0.3628561 +H 0.3700538 +C 0.1165169 +C 0.0969007 +9 + +X 0.0000000 +O -0.7591479 +O -0.7187506 +H 0.4079658 +H 0.4383773 +H 0.3844398 +H 0.3223140 +C 0.1503167 +C 0.1100726 +9 + +X 0.0000000 +O -0.7809509 +O -0.7014555 +H 0.4103239 +H 0.4042281 +H 0.4174211 +H 0.3945722 +C 0.1487007 +C 0.0936372 +9 + +X 0.0000000 +O -0.7734525 +O -0.7600920 +H 0.4579437 +H 0.3788601 +H 0.3645577 +H 0.3315849 +C 0.1026157 +C 0.1047043 +9 + +X 0.0000000 +O -0.7905560 +O -0.7554816 +H 0.4630657 +H 0.3858810 +H 0.3824011 +H 0.3493995 +C 0.1307295 +C 0.0756115 +9 + +X 0.0000000 +O -0.8043531 +O -0.7782230 +H 0.4491970 +H 0.3804227 +H 0.3781752 +H 0.3246976 +C 0.1497148 +C 0.0596960 +9 + +X 0.0000000 +O -0.8082211 +O -0.7789070 +H 0.4445423 +H 0.3502583 +H 0.4278778 +H 0.3245876 +C 0.1482560 +C 0.0553590 +9 + +X 0.0000000 +O -0.7965270 +O -0.7643898 +H 0.4642913 +H 0.3677439 +H 0.4432376 +H 0.3391549 +C 0.1501575 +C 0.0258746 +9 + +X 0.0000000 +O -0.8374502 +O -0.7840198 +H 0.5045613 +H 0.3443526 +H 0.4150692 +H 0.3431468 +C 0.1277428 +C 0.0490546 +9 + +X 0.0000000 +O -0.8774925 +O -0.7719631 +H 0.4787954 +H 0.3246941 +H 0.4492409 +H 0.2904950 +C 0.0975671 +C 0.0268634 +9 + +X 0.0000000 +O -0.8349768 +O -0.8172541 +H 0.4554801 +H 0.3262695 +H 0.4490026 +H 0.3483133 +C 0.0895151 +C 0.0451495 +9 + +X 0.0000000 +O -0.8348631 +O -0.8216025 +H 0.5079347 +H 0.3233744 +H 0.4882233 +H 0.3362741 +C 0.0563453 +C 0.0276484 +9 + +X 0.0000000 +O -0.8707823 +O -0.7862249 +H 0.4982154 +H 0.2888543 +H 0.4940137 +H 0.3373348 +C 0.0815607 +C -0.0305544 +9 + +X 0.0000000 +O -0.9025115 +O -0.8409099 +H 0.4838710 +H 0.3017043 +H 0.4827868 +H 0.3498382 +C 0.0762153 +C -0.0340252 +9 + +X 0.0000000 +O -0.8674743 +O -0.8262320 +H 0.4800582 +H 0.3429894 +H 0.4899050 +H 0.3500326 +C 0.0752452 +C -0.0135965 +9 + +X 0.0000000 +O -0.8696528 +O -0.8295200 +H 0.5136320 +H 0.3435105 +H 0.4963162 +H 0.3529207 +C -0.0296426 +C -0.0097903 +9 + +X 0.0000000 +O -0.9253271 +O -0.8524563 +H 0.5090583 +H 0.3732390 +H 0.4995713 +H 0.3636235 +C 0.0235060 +C -0.0096311 +9 + +X 0.0000000 +O -0.9246740 +O -0.8894581 +H 0.4507553 +H 0.3543449 +H 0.4793304 +H 0.4009346 +C -0.0009853 +C -0.0362235 +9 + +X 0.0000000 +O -0.9144838 +O -0.8816732 +H 0.4779629 +H 0.3452242 +H 0.4594843 +H 0.3988176 +C -0.0252967 +C -0.0404295 +9 + +X 0.0000000 +O -0.9361739 +O -0.8743783 +H 0.4668825 +H 0.3421341 +H 0.4718792 +H 0.4385565 +C 0.0279516 +C -0.0319902 +9 + +X 0.0000000 +O -0.8960241 +O -0.9127059 +H 0.4340478 +H 0.3889960 +H 0.4341124 +H 0.4567121 +C -0.0088689 +C -0.0174712 +9 + +X 0.0000000 +O -0.8805448 +O -0.8609431 +H 0.4797322 +H 0.3314503 +H 0.5230893 +H 0.4283851 +C 0.0046149 +C -0.0221689 +9 + +X 0.0000000 +O -0.9270570 +O -0.8448767 +H 0.4298338 +H 0.3758916 +H 0.5122336 +H 0.4207334 +C -0.0166243 +C -0.0285886 +9 + +X 0.0000000 +O -0.8790375 +O -0.9251082 +H 0.4336525 +H 0.3647751 +H 0.4639319 +H 0.4662033 +C 0.0083719 +C -0.0017728 +9 + +X 0.0000000 +O -0.8875535 +O -0.8925113 +H 0.4583284 +H 0.4236846 +H 0.5053089 +H 0.4199267 +C -0.0167253 +C -0.0079239 +9 + +X 0.0000000 +O -0.8495057 +O -0.8902029 +H 0.3914872 +H 0.3792675 +H 0.4360088 +H 0.4843872 +C -0.0057972 +C 0.0100920 +9 + +X 0.0000000 +O -0.8349568 +O -0.9010814 +H 0.4202685 +H 0.4146295 +H 0.4432922 +H 0.4684823 +C -0.0237721 +C 0.0267839 +9 + +X 0.0000000 +O -0.8487827 +O -0.9039600 +H 0.3816503 +H 0.4168932 +H 0.4600199 +H 0.4731476 +C 0.0075755 +C 0.0588914 +9 + +X 0.0000000 +O -0.8658137 +O -0.8628141 +H 0.4126187 +H 0.4208377 +H 0.4643902 +H 0.4707662 +C -0.0188869 +C 0.0130094 +9 + +X 0.0000000 +O -0.8528212 +O -0.9046958 +H 0.3891247 +H 0.4496322 +H 0.4121837 +H 0.4598704 +C -0.0182204 +C 0.0254620 +9 + +X 0.0000000 +O -0.8417156 +O -0.8731651 +H 0.3907220 +H 0.4384034 +H 0.4310621 +H 0.4698945 +C -0.0200812 +C 0.0571098 +9 + +X 0.0000000 +O -0.8177178 +O -0.8982489 +H 0.3457354 +H 0.4867034 +H 0.4084394 +H 0.4808354 +C -0.0076804 +C 0.0373897 +9 + +X 0.0000000 +O -0.8183981 +O -0.8792210 +H 0.3637307 +H 0.4856513 +H 0.3943358 +H 0.4914947 +C -0.0305810 +C 0.0709373 +9 + +X 0.0000000 +O -0.7569207 +O -0.8652457 +H 0.3489897 +H 0.4804320 +H 0.3727854 +H 0.5218391 +C -0.0139566 +C 0.0721967 +9 + +X 0.0000000 +O -0.8079333 +O -0.8639532 +H 0.3922616 +H 0.4592169 +H 0.3757118 +H 0.4669604 +C -0.0259944 +C 0.0940336 +9 + +X 0.0000000 +O -0.8043864 +O -0.8499657 +H 0.3748685 +H 0.5312019 +H 0.3680121 +H 0.4975637 +C 0.0328665 +C 0.0541716 +9 + +X 0.0000000 +O -0.7739905 +O -0.8235668 +H 0.3091608 +H 0.4892236 +H 0.3937180 +H 0.4790339 +C 0.0219000 +C 0.1358383 +9 + +X 0.0000000 +O -0.7306755 +O -0.8287661 +H 0.3096087 +H 0.4861782 +H 0.3898984 +H 0.4633403 +C -0.0067455 +C 0.0915317 +9 + +X 0.0000000 +O -0.7954322 +O -0.7765837 +H 0.3368070 +H 0.4604186 +H 0.3148321 +H 0.4594413 +C 0.0268615 +C 0.1400735 +9 + +X 0.0000000 +O -0.7347037 +O -0.8175879 +H 0.2990664 +H 0.4827615 +H 0.3605678 +H 0.4545061 +C 0.0672112 +C 0.1359761 +9 + +X 0.0000000 +O -0.7386095 +O -0.7722533 +H 0.3376504 +H 0.4864418 +H 0.3720462 +H 0.4441213 +C 0.0381216 +C 0.1255714 +9 + +X 0.0000000 +O -0.6966280 +O -0.8200277 +H 0.3277392 +H 0.4806257 +H 0.3239222 +H 0.4675273 +C 0.0525677 +C 0.1200187 +9 + +X 0.0000000 +O -0.7853439 +O -0.8196996 +H 0.3576275 +H 0.4669891 +H 0.3334139 +H 0.4454349 +C 0.0899114 +C 0.1231208 +9 + +X 0.0000000 +O -0.7292894 +O -0.7572267 +H 0.3341397 +H 0.4760166 +H 0.3361784 +H 0.4243552 +C 0.0830471 +C 0.1352397 +9 + +X 0.0000000 +O -0.7209433 +O -0.7650993 +H 0.3474300 +H 0.4537250 +H 0.3498694 +H 0.3948620 +C 0.0830106 +C 0.1351920 +9 + +X 0.0000000 +O -0.7290834 +O -0.7611845 +H 0.3489059 +H 0.4712851 +H 0.2939121 +H 0.4290716 +C 0.0969748 +C 0.0916611 +9 + +X 0.0000000 +O -0.7262447 +O -0.7678119 +H 0.3975525 +H 0.4683466 +H 0.3459815 +H 0.4079480 +C 0.1127975 +C 0.1090496 +9 + +X 0.0000000 +O -0.7520252 +O -0.7493699 +H 0.4299661 +H 0.4176293 +H 0.3464292 +H 0.3772046 +C 0.1210837 +C 0.1308829 +9 + +X 0.0000000 +O -0.7708350 +O -0.7373402 +H 0.3954857 +H 0.4044586 +H 0.3437489 +H 0.3750990 +C 0.1505861 +C 0.1141233 +9 + +X 0.0000000 +O -0.7491491 +O -0.7262253 +H 0.4083143 +H 0.4158555 +H 0.3718881 +H 0.3749438 +C 0.1163813 +C 0.0757899 +9 + +X 0.0000000 +O -0.6908829 +O -0.7203263 +H 0.3993402 +H 0.3981947 +H 0.3379443 +H 0.3580138 +C 0.1719819 +C 0.0963698 +9 + +X 0.0000000 +O -0.7251058 +O -0.7078501 +H 0.3981162 +H 0.3863732 +H 0.4160594 +H 0.3674901 +C 0.0985988 +C 0.1304366 +9 + +X 0.0000000 +O -0.7653387 +O -0.7489314 +H 0.4210691 +H 0.3849178 +H 0.3548579 +H 0.3560910 +C 0.1268583 +C 0.0824873 +9 + +X 0.0000000 +O -0.8130741 +O -0.7664547 +H 0.4456634 +H 0.3962862 +H 0.4153457 +H 0.3167074 +C 0.1463551 +C 0.0443378 +9 + +X 0.0000000 +O -0.8019695 +O -0.7483352 +H 0.4141253 +H 0.3648351 +H 0.3935254 +H 0.3264556 +C 0.1026108 +C 0.0371185 +9 + +X 0.0000000 +O -0.8139517 +O -0.7535201 +H 0.4780892 +H 0.3739497 +H 0.3766917 +H 0.3467702 +C 0.1512498 +C 0.0566415 +9 + +X 0.0000000 +O -0.7818559 +O -0.7814149 +H 0.4095923 +H 0.3499689 +H 0.4093253 +H 0.3069887 +C 0.1055498 +C 0.0430068 +9 + +X 0.0000000 +O -0.8185703 +O -0.7688746 +H 0.4796306 +H 0.3860253 +H 0.4180969 +H 0.3402191 +C 0.0949400 +C 0.0344886 +9 + +X 0.0000000 +O -0.8582007 +O -0.7668137 +H 0.4606713 +H 0.3767736 +H 0.4557873 +H 0.3429573 +C 0.0967529 +C 0.0223196 +9 + +X 0.0000000 +O -0.8898001 +O -0.7701569 +H 0.4756693 +H 0.3642806 +H 0.4609892 +H 0.3627460 +C 0.0835636 +C 0.0069105 +9 + +X 0.0000000 +O -0.8827699 +O -0.8113355 +H 0.4864849 +H 0.3067625 +H 0.4659271 +H 0.3289176 +C 0.0787683 +C 0.0138138 +9 + +X 0.0000000 +O -0.8272177 +O -0.7761820 +H 0.4937083 +H 0.3100666 +H 0.4711802 +H 0.3455056 +C 0.1009225 +C 0.0016169 +9 + +X 0.0000000 +O -0.8745522 +O -0.7965980 +H 0.5176638 +H 0.3209339 +H 0.4929568 +H 0.3267905 +C 0.0639182 +C -0.0101632 +9 + +X 0.0000000 +O -0.8996626 +O -0.7933140 +H 0.5065439 +H 0.3739106 +H 0.5023968 +H 0.3417370 +C 0.1046249 +C -0.0055117 +9 + +X 0.0000000 +O -0.8428356 +O -0.8539380 +H 0.4957289 +H 0.3304879 +H 0.4797259 +H 0.3672449 +C 0.0434676 +C -0.0082610 +9 + +X 0.0000000 +O -0.8689218 +O -0.8725669 +H 0.4985585 +H 0.2955641 +H 0.4652618 +H 0.3605752 +C 0.0503410 +C -0.0181513 +9 + +X 0.0000000 +O -0.9004403 +O -0.8086033 +H 0.4584068 +H 0.3401618 +H 0.4646231 +H 0.3593623 +C 0.0587132 +C -0.0275932 +9 + +X 0.0000000 +O -0.8997101 +O -0.8983777 +H 0.4993752 +H 0.3534260 +H 0.4879195 +H 0.3998819 +C 0.0109582 +C -0.0220667 +9 + +X 0.0000000 +O -0.9323431 +O -0.8622785 +H 0.4694785 +H 0.3235270 +H 0.5012882 +H 0.3948396 +C 0.0441717 +C -0.0453838 +9 + +X 0.0000000 +O -0.9105171 +O -0.8759546 +H 0.4620185 +H 0.3488287 +H 0.4910829 +H 0.3936252 +C -0.0047139 +C -0.0800616 +9 + +X 0.0000000 +O -0.8978129 +O -0.8850329 +H 0.4639489 +H 0.3369388 +H 0.5151252 +H 0.4371639 +C 0.0324535 +C -0.0475672 +9 + +X 0.0000000 +O -0.8836518 +O -0.8777896 +H 0.4751298 +H 0.3343828 +H 0.4868339 +H 0.4070767 +C 0.0059236 +C -0.0107132 +9 + +X 0.0000000 +O -0.9424538 +O -0.9241149 +H 0.4285201 +H 0.3695636 +H 0.5045848 +H 0.4219516 +C -0.0327872 +C -0.0207184 +9 + +X 0.0000000 +O -0.9174529 +O -0.8946347 +H 0.4669620 +H 0.3837483 +H 0.4836609 +H 0.4286161 +C -0.0420169 +C 0.0041023 +9 + +X 0.0000000 +O -0.8886259 +O -0.9134031 +H 0.4854700 +H 0.3976224 +H 0.4914594 +H 0.4496255 +C 0.0001529 +C -0.0318733 +9 + +X 0.0000000 +O -0.8771242 +O -0.8720511 +H 0.4274747 +H 0.4086864 +H 0.4776688 +H 0.4535566 +C -0.0747322 +C -0.0023679 +9 + +X 0.0000000 +O -0.8768539 +O -0.9116221 +H 0.3884363 +H 0.4054736 +H 0.4424945 +H 0.4692020 +C -0.0484098 +C -0.0599962 +9 + +X 0.0000000 +O -0.8420077 +O -0.9024363 +H 0.3783489 +H 0.3826317 +H 0.4737411 +H 0.4697055 +C -0.0269039 +C 0.0215162 +9 + +X 0.0000000 +O -0.8574178 +O -0.8717928 +H 0.4001532 +H 0.4511021 +H 0.4453641 +H 0.5083511 +C -0.0402884 +C 0.0008560 +9 + +X 0.0000000 +O -0.8309999 +O -0.8607908 +H 0.3560340 +H 0.4038936 +H 0.4200468 +H 0.4665053 +C -0.0326844 +C 0.0356512 +9 + +X 0.0000000 +O -0.7888857 +O -0.8674140 +H 0.3561492 +H 0.4581136 +H 0.4176910 +H 0.4749964 +C -0.0353321 +C 0.0417810 +9 + +X 0.0000000 +O -0.8175216 +O -0.8524868 +H 0.3742206 +H 0.4622475 +H 0.3951008 +H 0.5076470 +C -0.0039077 +C 0.0333407 +9 + +X 0.0000000 +O -0.7919211 +O -0.8718336 +H 0.3563676 +H 0.5030137 +H 0.4171755 +H 0.4798352 +C -0.0137121 +C 0.0436018 +9 + +X 0.0000000 +O -0.7997473 +O -0.8698672 +H 0.3376761 +H 0.5031550 +H 0.3933320 +H 0.4965196 +C -0.0168480 +C 0.1011974 +9 + +X 0.0000000 +O -0.7798213 +O -0.8632372 +H 0.3584889 +H 0.4755010 +H 0.3569130 +H 0.4972489 +C 0.0078651 +C 0.0575722 +9 + +X 0.0000000 +O -0.8216213 +O -0.8414798 +H 0.3511223 +H 0.4490392 +H 0.3938174 +H 0.4389981 +C 0.0184253 +C 0.1140512 +9 + +X 0.0000000 +O -0.7674888 +O -0.8286513 +H 0.3643251 +H 0.5046435 +H 0.3416859 +H 0.4668063 +C 0.0397572 +C 0.1121189 +9 + +X 0.0000000 +O -0.7659036 +O -0.8197746 +H 0.3419898 +H 0.4644156 +H 0.3200542 +H 0.4847519 +C 0.0663438 +C 0.0969594 +9 + +X 0.0000000 +O -0.7716706 +O -0.7745628 +H 0.3056052 +H 0.5245900 +H 0.3739955 +H 0.4473684 +C -0.0198347 +C 0.1370204 +9 + +X 0.0000000 +O -0.7655212 +O -0.8334810 +H 0.3123788 +H 0.5273904 +H 0.3196850 +H 0.4475295 +C 0.0502271 +C 0.1197050 +9 + +X 0.0000000 +O -0.7390163 +O -0.7641157 +H 0.3379395 +H 0.4603223 +H 0.3324696 +H 0.4469391 +C 0.0603931 +C 0.1202045 +9 + +X 0.0000000 +O -0.7315418 +O -0.7927553 +H 0.3513118 +H 0.4870416 +H 0.3386359 +H 0.4319408 +C 0.0228882 +C 0.0901572 +9 + +X 0.0000000 +O -0.7643733 +O -0.7531432 +H 0.3192675 +H 0.4757822 +H 0.3428321 +H 0.3820163 +C 0.0930117 +C 0.1344812 +9 + +X 0.0000000 +O -0.7588533 +O -0.7610307 +H 0.3384483 +H 0.4470122 +H 0.3151185 +H 0.4260552 +C 0.0710319 +C 0.0887173 +9 + +X 0.0000000 +O -0.7182340 +O -0.7686793 +H 0.3152704 +H 0.4968576 +H 0.3157857 +H 0.4106749 +C 0.1268548 +C 0.1406108 +9 + +X 0.0000000 +O -0.7720223 +O -0.7207745 +H 0.3479498 +H 0.5035422 +H 0.3097861 +H 0.4150312 +C 0.1020037 +C 0.1090771 +9 + +X 0.0000000 +O -0.7443507 +O -0.7647352 +H 0.3869331 +H 0.4302736 +H 0.3712386 +H 0.3872062 +C 0.1106058 +C 0.0903267 +9 + +X 0.0000000 +O -0.7314414 +O -0.7823875 +H 0.3471105 +H 0.4539456 +H 0.3582878 +H 0.4133179 +C 0.1310813 +C 0.1215752 +9 + +X 0.0000000 +O -0.7539869 +O -0.7269958 +H 0.3951588 +H 0.4048627 +H 0.3337862 +H 0.3676796 +C 0.1318867 +C 0.1167623 +9 + +X 0.0000000 +O -0.7808773 +O -0.7277694 +H 0.4028316 +H 0.4298585 +H 0.3593521 +H 0.3909814 +C 0.1266392 +C 0.1157128 +9 + +X 0.0000000 +O -0.7551024 +O -0.7347158 +H 0.4034175 +H 0.3860405 +H 0.3888014 +H 0.3623468 +C 0.1549287 +C 0.0800494 +9 + +X 0.0000000 +O -0.7315743 +O -0.7628591 +H 0.3931722 +H 0.4030524 +H 0.3866760 +H 0.3643734 +C 0.1158640 +C 0.0891604 +9 + +X 0.0000000 +O -0.7787375 +O -0.7493898 +H 0.3983134 +H 0.3657853 +H 0.4065484 +H 0.3545887 +C 0.0935976 +C 0.1020681 +9 + +X 0.0000000 +O -0.7841571 +O -0.7477596 +H 0.4389326 +H 0.3903128 +H 0.3812774 +H 0.3299566 +C 0.1172088 +C 0.0606107 +9 + +X 0.0000000 +O -0.8037506 +O -0.7823741 +H 0.4445725 +H 0.3797403 +H 0.4108554 +H 0.3354714 +C 0.1497121 +C 0.0601346 +9 + +X 0.0000000 +O -0.8126427 +O -0.7978330 +H 0.4483616 +H 0.3706117 +H 0.3903556 +H 0.3419157 +C 0.0985921 +C 0.0450464 +9 + +X 0.0000000 +O -0.8277344 +O -0.7981501 +H 0.4563214 +H 0.3718978 +H 0.4385077 +H 0.2885185 +C 0.1017092 +C 0.0577944 +9 + +X 0.0000000 +O -0.8762986 +O -0.7618546 +H 0.4614578 +H 0.3445551 +H 0.4301486 +H 0.3260338 +C 0.1017297 +C 0.0171671 +9 + +X 0.0000000 +O -0.8541749 +O -0.7550062 +H 0.4518809 +H 0.3496442 +H 0.4345471 +H 0.3260764 +C 0.0890704 +C 0.0261024 +9 + +X 0.0000000 +O -0.8658334 +O -0.7401885 +H 0.4614704 +H 0.3852322 +H 0.4553285 +H 0.3451144 +C 0.1110545 +C 0.0152314 +9 + +X 0.0000000 +O -0.8721597 +O -0.8588867 +H 0.5015755 +H 0.3492377 +H 0.4902038 +H 0.3405907 +C 0.0982098 +C 0.0407731 +9 + +X 0.0000000 +O -0.8137427 +O -0.8045937 +H 0.4992284 +H 0.3199971 +H 0.4400882 +H 0.3314299 +C 0.0308616 +C 0.0282776 +9 + +X 0.0000000 +O -0.8396576 +O -0.8106568 +H 0.4952950 +H 0.2897011 +H 0.5018826 +H 0.3579242 +C 0.0867712 +C -0.0095230 +9 + +X 0.0000000 +O -0.8902850 +O -0.8111545 +H 0.4999373 +H 0.2919966 +H 0.4743228 +H 0.3381809 +C 0.0337131 +C 0.0008974 +9 + +X 0.0000000 +O -0.9175652 +O -0.8418720 +H 0.4483835 +H 0.3311014 +H 0.4964512 +H 0.3728495 +C 0.0356462 +C 0.0032414 +9 + +X 0.0000000 +O -0.8919946 +O -0.8511527 +H 0.4779690 +H 0.3475993 +H 0.4988131 +H 0.4274579 +C 0.0481888 +C -0.0041442 +9 + +X 0.0000000 +O -0.8847789 +O -0.8974486 +H 0.4941122 +H 0.3318548 +H 0.4649221 +H 0.3475724 +C 0.0568293 +C -0.0035143 +9 + +X 0.0000000 +O -0.9095091 +O -0.8725019 +H 0.4858759 +H 0.3608791 +H 0.4776685 +H 0.3770755 +C 0.0646963 +C -0.0473160 +9 + +X 0.0000000 +O -0.8807140 +O -0.8859260 +H 0.4882364 +H 0.3314417 +H 0.4799967 +H 0.4195890 +C 0.0739523 +C -0.0283440 +9 + +X 0.0000000 +O -0.9193087 +O -0.8770083 +H 0.4380570 +H 0.3512437 +H 0.5265910 +H 0.4205127 +C -0.0373790 +C -0.0327437 +9 + +X 0.0000000 +O -0.9171803 +O -0.8797329 +H 0.4549214 +H 0.3582316 +H 0.5072643 +H 0.4274739 +C -0.0047561 +C -0.0449581 +9 + +X 0.0000000 +O -0.8547458 +O -0.8957438 +H 0.4639956 +H 0.3672702 +H 0.4615794 +H 0.4331820 +C 0.0036809 +C 0.0024490 +9 + +X 0.0000000 +O -0.8852322 +O -0.9028883 +H 0.4546318 +H 0.3428780 +H 0.4498883 +H 0.4213204 +C -0.0103774 +C 0.0115738 +9 + +X 0.0000000 +O -0.9089001 +O -0.8873249 +H 0.4712918 +H 0.3543743 +H 0.4944049 +H 0.4476328 +C -0.0314396 +C 0.0039011 +9 + +X 0.0000000 +O -0.8846545 +O -0.8665702 +H 0.4778460 +H 0.3747099 +H 0.4502345 +H 0.3755587 +C -0.0304208 +C -0.0011953 +9 + +X 0.0000000 +O -0.8535708 +O -0.8978800 +H 0.4457683 +H 0.4142066 +H 0.4631361 +H 0.4593874 +C -0.0259881 +C 0.0198049 +9 + +X 0.0000000 +O -0.8912034 +O -0.8853047 +H 0.3891992 +H 0.4283589 +H 0.3887178 +H 0.4692824 +C -0.0099848 +C 0.0095153 +9 + +X 0.0000000 +O -0.9119422 +O -0.8685441 +H 0.3839210 +H 0.4301342 +H 0.4443882 +H 0.4468508 +C -0.0173633 +C -0.0018844 +9 + +X 0.0000000 +O -0.8283032 +O -0.9109401 +H 0.3967306 +H 0.4019649 +H 0.4408345 +H 0.4916874 +C -0.0352175 +C 0.0374703 +9 + +X 0.0000000 +O -0.8806264 +O -0.8703487 +H 0.3684345 +H 0.4166507 +H 0.4439328 +H 0.4978988 +C -0.0686820 +C 0.0397356 +9 + +X 0.0000000 +O -0.8257359 +O -0.8661812 +H 0.3746761 +H 0.4318635 +H 0.4528701 +H 0.4990377 +C -0.0598710 +C 0.0311074 +9 + +X 0.0000000 +O -0.8066721 +O -0.8670408 +H 0.3622756 +H 0.4765726 +H 0.4245374 +H 0.4958366 +C -0.0399455 +C 0.0661054 +9 + +X 0.0000000 +O -0.8640453 +O -0.8685494 +H 0.3460831 +H 0.4792613 +H 0.3911208 +H 0.4640821 +C -0.0139762 +C 0.0724104 +9 + +X 0.0000000 +O -0.8085155 +O -0.8973869 +H 0.3645811 +H 0.4601511 +H 0.3833987 +H 0.5233154 +C 0.0062296 +C 0.0775596 +9 + +X 0.0000000 +O -0.7921681 +O -0.8532995 +H 0.3045517 +H 0.4817679 +H 0.3522894 +H 0.4713570 +C 0.0138463 +C 0.0893393 +9 + +X 0.0000000 +O -0.7594340 +O -0.8325865 +H 0.3301705 +H 0.5040513 +H 0.3536767 +H 0.4567091 +C -0.0218543 +C 0.0736372 +9 + +X 0.0000000 +O -0.8086786 +O -0.8456005 +H 0.3291835 +H 0.4729331 +H 0.3589954 +H 0.4653592 +C 0.0306042 +C 0.1042698 +9 + +X 0.0000000 +O -0.7726198 +O -0.8716375 +H 0.3270772 +H 0.4531555 +H 0.3235702 +H 0.5261988 +C -0.0053071 +C 0.1053810 +9 + +X 0.0000000 +O -0.7523608 +O -0.7978498 +H 0.3213242 +H 0.5034328 +H 0.3755485 +H 0.4724926 +C 0.0432836 +C 0.1029772 +9 + +X 0.0000000 +O -0.7543455 +O -0.7905509 +H 0.3325649 +H 0.4738049 +H 0.3384001 +H 0.4167835 +C 0.0775027 +C 0.1307364 +9 + +X 0.0000000 +O -0.7419996 +O -0.7943806 +H 0.3008970 +H 0.4837716 +H 0.3636489 +H 0.4638046 +C 0.0660702 +C 0.1613981 +9 + +X 0.0000000 +O -0.7555253 +O -0.7786985 +H 0.2884298 +H 0.4703178 +H 0.2974725 +H 0.4470230 +C 0.0301911 +C 0.1232225 +9 + +X 0.0000000 +O -0.7482597 +O -0.7518421 +H 0.3746757 +H 0.4673394 +H 0.3583598 +H 0.4364333 +C 0.0899876 +C 0.1236269 +9 + +X 0.0000000 +O -0.7022795 +O -0.7369367 +H 0.3557168 +H 0.5037873 +H 0.3257722 +H 0.4361894 +C 0.0699533 +C 0.0916214 +9 + +X 0.0000000 +O -0.7529463 +O -0.7944620 +H 0.3131883 +H 0.4618350 +H 0.3300736 +H 0.4245824 +C 0.1131800 +C 0.1331313 +9 + +X 0.0000000 +O -0.7468488 +O -0.7770991 +H 0.3557949 +H 0.4658667 +H 0.3439443 +H 0.4303894 +C 0.1005089 +C 0.1491775 +9 + +X 0.0000000 +O -0.7590896 +O -0.7663626 +H 0.3805650 +H 0.4635846 +H 0.3293215 +H 0.4010170 +C 0.1500824 +C 0.1390872 +9 + +X 0.0000000 +O -0.7392386 +O -0.7280688 +H 0.3442635 +H 0.4542354 +H 0.3420615 +H 0.3506510 +C 0.0968999 +C 0.1591761 +9 + +X 0.0000000 +O -0.7658692 +O -0.7386049 +H 0.3893089 +H 0.4625511 +H 0.3699667 +H 0.3374986 +C 0.0974108 +C 0.1322696 +9 + +X 0.0000000 +O -0.7652200 +O -0.7507084 +H 0.3750597 +H 0.4374897 +H 0.3548676 +H 0.3737307 +C 0.1279773 +C 0.1163069 +9 + +X 0.0000000 +O -0.7800930 +O -0.7318870 +H 0.3918523 +H 0.3953433 +H 0.4048180 +H 0.3172246 +C 0.1414582 +C 0.1200021 +9 + +X 0.0000000 +O -0.7829265 +O -0.7360516 +H 0.3790670 +H 0.4238572 +H 0.3899802 +H 0.3382697 +C 0.1196630 +C 0.0911561 +9 + +X 0.0000000 +O -0.7574953 +O -0.7259652 +H 0.4190293 +H 0.4046620 +H 0.3436212 +H 0.3762266 +C 0.1442876 +C 0.1133579 +9 + +X 0.0000000 +O -0.7898139 +O -0.7428570 +H 0.4686061 +H 0.3624137 +H 0.3543397 +H 0.3739656 +C 0.1418803 +C 0.0616332 +9 + +X 0.0000000 +O -0.7980911 +O -0.7591486 +H 0.4989071 +H 0.3772057 +H 0.3931666 +H 0.3201842 +C 0.1472720 +C 0.0449961 +9 + +X 0.0000000 +O -0.7910188 +O -0.7324058 +H 0.4665811 +H 0.3563836 +H 0.4025633 +H 0.3402601 +C 0.1353533 +C 0.0967320 +9 + +X 0.0000000 +O -0.8113253 +O -0.7469917 +H 0.4159752 +H 0.3442771 +H 0.4206993 +H 0.3070371 +C 0.1335180 +C 0.0629950 +9 + +X 0.0000000 +O -0.8402450 +O -0.7595532 +H 0.4993844 +H 0.4051885 +H 0.4511141 +H 0.3409401 +C 0.1186224 +C 0.0361469 +9 + +X 0.0000000 +O -0.7929293 +O -0.8093713 +H 0.4830733 +H 0.3466729 +H 0.4233018 +H 0.3510609 +C 0.1307673 +C 0.0363897 +9 + +X 0.0000000 +O -0.8521968 +O -0.7643535 +H 0.4513564 +H 0.3424042 +H 0.4512776 +H 0.3300703 +C 0.1080759 +C 0.0293285 +9 + +X 0.0000000 +O -0.8383817 +O -0.8141215 +H 0.4840995 +H 0.3380431 +H 0.4195891 +H 0.3073153 +C 0.0528703 +C 0.0277660 +9 + +X 0.0000000 +O -0.8637875 +O -0.8025539 +H 0.4316012 +H 0.3429252 +H 0.4862111 +H 0.3133722 +C 0.0749273 +C 0.0034703 +9 + +X 0.0000000 +O -0.8877777 +O -0.8273036 +H 0.5087898 +H 0.3042627 +H 0.4800191 +H 0.3140595 +C 0.0804118 +C 0.0024827 +9 + +X 0.0000000 +O -0.8765716 +O -0.8069742 +H 0.4794709 +H 0.3546750 +H 0.4665536 +H 0.3547631 +C 0.0822398 +C -0.0109221 +9 + +X 0.0000000 +O -0.8730148 +O -0.8276263 +H 0.4996375 +H 0.3225684 +H 0.4721235 +H 0.3534478 +C 0.0470093 +C -0.0138738 +9 + +X 0.0000000 +O -0.8728507 +O -0.8291079 +H 0.4890445 +H 0.3455875 +H 0.4760332 +H 0.3710973 +C 0.0212487 +C -0.0334744 +9 + +X 0.0000000 +O -0.8638629 +O -0.8413523 +H 0.5241131 +H 0.3590024 +H 0.4702887 +H 0.3766743 +C 0.0490549 +C -0.0529088 +9 + +X 0.0000000 +O -0.9232916 +O -0.8455197 +H 0.5106407 +H 0.3470000 +H 0.5166167 +H 0.3961096 +C 0.0152191 +C -0.0255897 +9 + +X 0.0000000 +O -0.9132149 +O -0.8635808 +H 0.4724849 +H 0.3434012 +H 0.4649921 +H 0.3652828 +C 0.0104026 +C -0.0097280 +9 + +X 0.0000000 +O -0.8996613 +O -0.8897353 +H 0.5064895 +H 0.3949346 +H 0.5028401 +H 0.3923774 +C 0.0108702 +C -0.0357739 +9 + +X 0.0000000 +O -0.9049353 +O -0.8821888 +H 0.4938002 +H 0.3609365 +H 0.4707745 +H 0.3901429 +C 0.0251823 +C -0.0352723 +9 + +X 0.0000000 +O -0.9038346 +O -0.9116817 +H 0.4773167 +H 0.3362032 +H 0.5171178 +H 0.4568864 +C 0.0132410 +C -0.0115836 +9 + +X 0.0000000 +O -0.8986841 +O -0.9311764 +H 0.4910603 +H 0.3870704 +H 0.4663966 +H 0.4179736 +C -0.0204416 +C -0.0290342 +9 + +X 0.0000000 +O -0.9406883 +O -0.8924589 +H 0.4248890 +H 0.4181010 +H 0.4539192 +H 0.4819621 +C 0.0000672 +C 0.0135176 +9 + +X 0.0000000 +O -0.8920692 +O -0.9127467 +H 0.4302496 +H 0.3670570 +H 0.4447339 +H 0.4492948 +C -0.0416135 +C 0.0128988 +9 + +X 0.0000000 +O -0.8655913 +O -0.8994302 +H 0.4277388 +H 0.3998693 +H 0.4649001 +H 0.4401865 +C -0.0106219 +C -0.0139958 +9 + +X 0.0000000 +O -0.8132792 +O -0.9278763 +H 0.4125043 +H 0.4253178 +H 0.4206664 +H 0.4482718 +C -0.0291766 +C 0.0096723 +9 + +X 0.0000000 +O -0.8820145 +O -0.9059824 +H 0.3709084 +H 0.4104985 +H 0.4599428 +H 0.4883959 +C -0.0589252 +C 0.0212063 +9 + +X 0.0000000 +O -0.8732442 +O -0.8836225 +H 0.4159378 +H 0.4329058 +H 0.4404339 +H 0.4830167 +C -0.0386249 +C 0.0039900 +9 + +X 0.0000000 +O -0.8325969 +O -0.9147846 +H 0.3731965 +H 0.4484432 +H 0.4215428 +H 0.4997772 +C -0.0359119 +C 0.0448095 +9 + +X 0.0000000 +O -0.8352513 +O -0.8919482 +H 0.3797246 +H 0.4354036 +H 0.4327170 +H 0.4689696 +C -0.0139603 +C 0.0219926 +9 + +X 0.0000000 +O -0.8567994 +O -0.9129986 +H 0.3849220 +H 0.4364386 +H 0.3695367 +H 0.4825179 +C 0.0025444 +C 0.0440058 +9 + +X 0.0000000 +O -0.8127314 +O -0.8615033 +H 0.3928233 +H 0.4622184 +H 0.3708762 +H 0.4905394 +C -0.0377248 +C 0.0246700 +9 + +X 0.0000000 +O -0.7820668 +O -0.8450057 +H 0.3478090 +H 0.4974536 +H 0.3809815 +H 0.4847003 +C 0.0094849 +C 0.0705450 diff --git a/tests/data/vacf/traj_1.vel b/tests/data/vacf/traj_1.vel new file mode 100644 index 00000000..ba14ee30 --- /dev/null +++ b/tests/data/vacf/traj_1.vel @@ -0,0 +1,2750 @@ +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0509041 1.7365099 -0.9879210 +O -1.4241852 -1.3635530 0.4663819 +H -1.3768054 -1.3886132 1.4647722 +H -1.6794325 1.0406521 1.3799342 +H 1.4664987 -0.4729901 -0.3138936 +H -0.7880892 -1.3867461 0.9059933 +C 0.9751590 0.9240526 1.2628372 +C -1.4505611 0.0697548 0.3486288 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0183001 1.1268280 -0.4541752 +O -0.5759332 -1.0082898 -0.4644949 +H -1.1247203 -1.3746303 0.5457590 +H -1.0292625 1.7244793 1.1763056 +H 0.5011689 -1.6407147 -0.2902362 +H 0.1069160 -1.2477480 0.0905141 +C 0.8884228 1.6284186 0.7391077 +C -1.4463853 0.3227422 0.1325860 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0854578 0.2346643 -0.0049276 +O -0.6136681 -0.3010385 -0.6077780 +H 0.0145050 -1.3785864 0.6740885 +H -0.1534354 1.6726855 0.3327736 +H -0.4369105 -1.5236920 -1.0793971 +H 1.3634415 -0.2576602 -0.2501746 +C 0.8741812 1.1057843 0.2813223 +C -0.3015698 -0.0060251 1.0176770 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4433899 -0.0540279 -0.5199944 +O -0.9624496 0.7542961 -0.1328790 +H 0.9383511 -0.7107722 1.0026129 +H 0.5459882 0.8871231 -0.5137653 +H -1.6079417 -1.1252532 -1.7556033 +H 1.0605415 -0.3606736 0.2489842 +C 1.5597735 0.4416716 1.1277979 +C 0.5355481 -1.0997422 1.6484985 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1210214 0.0901496 -0.6092330 +O -1.3704819 1.1873215 -0.0105723 +H 0.7079704 -0.8243555 1.7036089 +H 0.3330462 0.0874558 -0.8342899 +H -1.1274976 -0.1883202 -1.6070178 +H 0.9555482 -0.9000192 0.4802235 +C 1.7092412 0.3353295 1.5080121 +C 0.5826923 -1.7563060 2.0482438 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3929763 0.5211564 0.0586923 +O -1.5032709 0.6938852 -0.6324454 +H 0.5700845 -1.3597085 1.1507949 +H 0.2261304 -0.6236712 -0.8787540 +H -0.4215957 0.6916389 -0.7494985 +H 0.6578682 -0.9633795 0.0192457 +C 1.1769113 1.2835126 1.3397529 +C 0.4344008 -1.4245548 0.9472110 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0594520 -0.2790362 0.9282297 +O -0.5370765 0.2986987 -1.8878516 +H -0.0204555 -1.4870315 0.3199154 +H 0.2835594 -0.0922764 -0.4518577 +H -0.5943210 0.9135432 0.0165016 +H 0.9609511 0.1516987 -1.1754629 +C -0.0835333 1.6787306 0.4048881 +C 0.1782197 -0.6233455 0.1765621 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8354168 -1.3497554 1.5099687 +O 0.4923538 0.6277726 -1.8669207 +H 0.8582165 -0.6480419 -0.6706993 +H 1.3615792 -0.3657026 -0.6322084 +H -1.0121329 0.3798763 0.2582682 +H 1.9316026 0.9590463 -1.8493534 +C -0.5556840 1.3254546 -0.4900410 +C 0.9237761 -0.2517101 0.1216896 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.9504721 -1.8247268 1.4333212 +O 0.7258375 1.5751870 -1.2039431 +H 1.5391874 0.3302327 -0.9121595 +H 2.1846633 -0.6299993 -1.3500777 +H -1.5736475 0.4309891 -0.5830672 +H 1.5314772 1.3891437 -1.8371633 +C -0.4509215 0.1921676 -0.7445741 +C 1.4433377 -0.4670698 0.2811206 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7854445 -1.4586322 0.5964716 +O 0.4669927 1.5585223 -0.3493069 +H 1.6565746 0.9771140 -0.5173529 +H 1.5963344 -1.0874050 -1.9694660 +H -1.2292752 1.0449404 -0.3660172 +H 0.7487281 1.0112117 -0.7857745 +C -0.0005091 -0.6485849 -0.3125613 +C 1.9926205 -0.9205061 0.4089393 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0826351 -0.6992760 0.5375751 +O 0.2906314 1.3594658 -0.1427151 +H 0.8099035 0.8289358 -0.2619518 +H 0.8035534 -1.9253027 -1.6648244 +H -0.1861606 1.7266971 0.6016225 +H -0.3884251 0.7289923 -0.2342845 +C -0.4183149 -0.7507146 -0.1469011 +C 1.4519520 -0.7527838 0.0119529 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0612508 -0.3178761 1.0841001 +O 0.6991522 -0.3022953 -0.4082050 +H -0.1197816 0.4545217 -0.5830051 +H 0.1766433 -1.2555577 -0.6702874 +H 0.4147135 2.0188330 1.7066170 +H -0.5654328 0.2504020 -0.7124948 +C -1.1949923 -0.1954754 -0.8819839 +C 0.0617531 0.3687178 -1.3737066 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0553391 -1.1176843 1.2063347 +O 1.4933640 -0.4620541 -0.6471662 +H -0.7207438 0.7390369 -1.2669493 +H 0.3845784 -0.4396680 0.5062476 +H 0.1315763 0.9066094 1.7792878 +H -0.4357210 1.3468220 -1.0538599 +C -1.7557985 -0.3324865 -1.6867531 +C 0.0224819 1.2425613 -1.8647643 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2774462 -1.0184890 1.1256602 +O 2.0847034 -0.4865379 -0.0556870 +H 0.0406811 1.0693510 -1.7190628 +H 0.7440180 -0.0051149 0.4224797 +H 0.1585630 0.2775628 1.3798825 +H 0.0069669 1.5732997 -0.8189648 +C -1.7636049 -1.0075052 -1.7406687 +C 0.1844236 1.2899766 -1.5867569 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7590000 -0.9015223 -0.4687831 +O 1.5153196 0.2567438 1.2048956 +H 0.1331217 1.6354716 -1.4801243 +H 0.4847379 -0.3522738 0.0021960 +H -0.0076266 -0.1171906 0.7984044 +H -0.5883277 0.7508746 0.0070866 +C -0.8757707 -1.6134902 -1.1687718 +C 0.5189191 0.9879834 -0.7930522 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6381277 0.1244712 -1.5228633 +O 0.3829709 -0.1415902 1.2089311 +H -0.2972047 1.4070813 0.1358588 +H -0.6922541 -0.6172166 -0.1446839 +H 0.6344932 0.3408862 0.4414333 +H -1.5821163 0.0271998 1.1329384 +C 0.0892942 -1.5442059 -0.1067629 +C -0.0370015 0.4675761 -0.4379865 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7732525 1.4295223 -1.0524049 +O -0.1669056 -1.2348598 1.3908097 +H -1.1314687 0.6842907 -0.0456057 +H -1.2070797 -0.1350528 0.9034004 +H 1.5137077 0.5442594 0.4844200 +H -1.8493752 -0.9823602 1.5533139 +C -0.0709322 -1.0868532 0.0328581 +C -0.7168906 0.7523053 -0.9079157 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0564981 1.5585649 -0.7382051 +O 0.0976314 -1.9783602 0.6861691 +H -1.8208544 -0.0387569 0.1339208 +H -1.9050563 0.5947896 1.5377695 +H 2.0244731 -0.2471573 1.0488273 +H -1.3017075 -0.7687667 0.9590034 +C -0.4915404 0.1097159 -0.1348796 +C -1.5262421 1.5750385 -1.3071507 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4652436 0.6086845 -0.3051261 +O 0.4731531 -1.4849482 0.3882622 +H -1.5084244 -0.6998096 -0.1678314 +H -1.0359589 1.5986369 2.0538444 +H 1.3462087 -1.3045283 0.2308631 +H -0.3872038 -0.3935031 0.3691248 +C -0.4193535 0.2788884 -0.4695181 +C -1.8662742 1.3789431 -0.6357019 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3858326 0.4186117 -0.8815369 +O 0.1655375 -0.8369288 0.9854891 +H -0.8836521 -0.2250015 0.1653773 +H -0.6637434 1.4256426 0.7257206 +H 0.3330373 -1.9256624 -0.6567829 +H 0.0577797 -0.1992862 0.5620115 +C 0.3344125 -0.4971585 -0.4196538 +C -0.9196483 0.6379114 0.0801540 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0031344 0.7821007 -1.2841276 +O -0.7366195 -0.3081590 1.2035622 +H -0.0018211 -0.0324441 1.0831398 +H -0.1922995 1.0966066 0.1408107 +H 0.0064847 -1.5902955 -1.3656766 +H 0.0031244 -0.9895267 1.2164026 +C 1.4697505 -0.5964558 0.6959236 +C -0.3587259 -0.3543905 1.0948119 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8933089 1.4037128 -1.4640115 +O -1.4290069 0.0800912 0.8911941 +H -0.7009845 -0.4993432 1.7662507 +H -0.8813654 0.3894666 0.0210834 +H 0.4451843 -0.6709446 -1.3310489 +H -0.4869370 -1.7743152 1.7900522 +C 2.1061414 0.0301081 1.6954460 +C -0.4584658 -0.9212698 1.2861916 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6073281 1.3400047 -0.7965624 +O -1.4183213 -0.7117949 0.0469018 +H -0.8005774 -1.3505488 1.9109182 +H -1.1070077 0.7598822 0.3021876 +H 0.3223751 -0.1308885 -0.9402486 +H -0.2059273 -1.7252922 0.6374978 +C 1.2869813 1.3214627 1.5512889 +C -0.7119789 -0.5897182 0.8958838 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9009632 0.5466239 0.0632279 +O -0.9457498 -0.6352242 -1.0211464 +H -0.3858677 -1.7268176 0.8748441 +H -0.3895004 1.4327089 0.7027599 +H -0.0190188 -0.6805737 -0.5125988 +H 0.7320041 -0.7833517 -0.2030577 +C 0.6238958 1.8341053 0.9587937 +C -0.7818881 -0.2706225 0.5545111 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3574856 -0.6179525 0.5386115 +O -0.3075870 0.4060559 -1.1641992 +H 0.7002838 -0.9620756 0.1949088 +H 0.5379480 1.1107808 -0.2531657 +H -0.8590583 -1.1504414 -1.0500486 +H 1.5672146 0.3294442 -1.0118604 +C 0.6809265 1.1840985 0.4437796 +C 0.2029623 -0.4985769 0.9278543 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9981560 -0.9032772 -0.0393056 +O -0.3908138 1.1717195 -0.6405055 +H 1.3681781 -0.2897157 0.4332604 +H 1.3258022 0.2152411 -1.0244911 +H -1.7486185 -0.8872964 -1.4471738 +H 1.6641265 -0.1307810 -0.3997384 +C 0.7641899 0.4255578 0.4149354 +C 1.1783881 -1.3238722 1.3529536 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7575561 -0.6655297 -0.0179567 +O -0.8670636 1.4915825 -0.5271866 +H 1.6324635 -0.1757626 0.7684090 +H 0.8140041 -0.7854703 -1.5048573 +H -1.6554358 0.3196292 -1.3723906 +H 0.8146407 -0.3274073 -0.2591829 +C 1.0099808 0.2168119 1.0253074 +C 1.5619812 -2.0667685 1.5107399 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3238672 -0.0339817 0.5175682 +O -0.8302637 1.4418220 -0.8273558 +H 1.0207337 -0.3154172 0.6760132 +H 0.5798380 -1.3674115 -1.4597104 +H -0.7060442 1.3305075 -0.4720358 +H 0.5622164 -0.0556615 -0.2656142 +C 0.4656004 0.7348289 0.9975070 +C 1.3065156 -1.3546173 0.7077679 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8049218 -0.9426301 1.6026166 +O -0.0691787 0.6465027 -1.5902975 +H 0.5379444 -0.9495110 -0.1604702 +H 0.5319296 -0.8615475 -0.7342269 +H -0.3114737 1.3720345 0.7487326 +H 0.7026143 0.4901718 -1.0439853 +C -0.6093895 0.9504051 -0.0909941 +C 0.7726886 -0.6129954 -0.2373811 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4560275 -1.3365925 1.9246876 +O 0.9690851 0.6233141 -1.8524408 +H 0.9259858 -0.0878805 -1.2465968 +H 1.1530281 -0.3377292 -0.5554500 +H -0.5935677 0.6850228 1.0294797 +H 0.9468816 1.6071595 -1.9590882 +C -1.5091157 0.7098423 -1.3069691 +C 0.6447740 0.0501779 -0.9043912 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.2201475 -1.5685508 1.3979960 +O 1.6257580 0.9398431 -0.8521631 +H 1.2558919 1.1790158 -1.7495811 +H 1.7912786 -0.9418901 -0.7374699 +H -1.0031685 0.3965262 0.4450768 +H 0.7429210 1.7634070 -1.6462352 +C -1.2351250 -0.5511995 -1.2363015 +C 1.2436944 0.0806275 -0.4783979 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5534830 -1.3265517 0.4285256 +O 1.1222927 1.0530431 0.0709584 +H 1.0298425 1.6797077 -0.9144678 +H 1.4157815 -1.2089010 -1.4220972 +H -1.2091884 0.7156424 0.2373072 +H 0.0397038 1.1139735 -0.5789597 +C -0.8563755 -1.3463424 -1.0157388 +C 1.5347817 -0.3066438 0.1555196 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7356862 -0.8907325 0.1665148 +O 0.4371573 0.8512032 0.9454341 +H 0.4579895 1.7660268 -0.6422627 +H 0.3206127 -1.6691423 -0.9069121 +H -0.3179987 1.3675898 0.7337653 +H -0.7914296 0.5154096 0.0879733 +C -0.5760837 -1.5039772 -0.5754587 +C 0.6327781 -0.2368508 -0.4627974 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1448416 -0.2541369 0.2526743 +O 0.6173478 -0.5212840 0.5662905 +H -0.8589389 0.9333006 -0.4607245 +H -0.3127090 -1.2930136 0.3366151 +H 1.0943967 1.2577767 1.5573777 +H -1.4351909 0.3064835 0.3259318 +C -0.8838491 -1.0338719 -0.9509911 +C -0.3836236 0.5586181 -1.4732140 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3267348 0.0197816 0.4391423 +O 1.1424702 -1.1951690 0.0313572 +H -1.1760703 0.4778057 -1.3876472 +H -0.7268760 -0.1060832 1.1801576 +H 1.0852493 0.7470083 1.6618024 +H -1.3804738 0.6686315 -0.0376652 +C -1.8043834 -0.4797627 -1.4512325 +C -0.8255836 1.7099046 -1.9065155 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2681611 -0.4406381 0.1489136 +O 1.4791300 -1.1586020 0.3477483 +H -0.8877131 0.8792189 -1.3141884 +H -0.0577933 0.2966213 1.4394393 +H 1.0180531 -0.6163607 1.0840061 +H -0.3014076 0.9554178 -0.0406944 +C -1.2513039 -0.9236129 -1.4183098 +C -0.9143811 2.0417623 -1.4284565 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7713156 0.0623787 -0.9462425 +O 0.9350030 -0.6033479 1.4645251 +H -0.6092916 1.1561372 -0.8274643 +H -0.2318515 0.4512518 0.5398897 +H 1.0178251 -0.7696754 0.2126775 +H -0.6858433 0.1051483 0.8487513 +C -0.2137668 -1.5154666 -0.9992723 +C -0.5322381 0.9789873 -0.3744293 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.5836731 0.8472660 -1.6502815 +O 0.1514253 -0.4427006 1.7551350 +H -0.3672542 0.9816657 0.4652881 +H -0.7047486 -0.1044961 0.5235481 +H 0.8483999 -0.7064938 -0.3921859 +H -1.0346377 -0.6365794 1.4340659 +C 0.6584516 -1.6716462 0.0215358 +C -0.5238423 0.6913395 -0.0487143 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 2.0721246 1.7908844 -1.6859938 +O -0.9610071 -1.4835779 1.6339972 +H -1.4450488 0.0878953 0.8378341 +H -1.4903370 0.1588598 0.5646915 +H 1.4248453 -0.0467504 -0.2675103 +H -1.4085065 -1.5120104 1.8261740 +C 0.8312909 -0.6953152 0.8577651 +C -1.2834733 0.3782242 0.1284737 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2824944 1.5066486 -1.1541327 +O -1.1480670 -1.7516310 0.6514557 +H -1.6584433 -0.9659969 0.8787443 +H -1.8524554 1.0284095 1.6027790 +H 1.5392511 -0.6295004 -0.0604821 +H -0.8669375 -1.5051181 1.0967556 +C 0.5523187 0.3389428 0.8009354 +C -1.8956906 0.5960339 -0.1905895 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2838839 0.9874691 -0.5022752 +O -0.3586823 -1.5766656 -0.0498836 +H -1.2482953 -1.3964730 0.5608671 +H -1.0810119 1.7783905 1.6048638 +H 0.9565226 -1.5202749 -0.0677099 +H 0.1352430 -0.6817845 0.4929658 +C 0.3371717 1.1925387 0.3875312 +C -1.4825752 0.9026111 -0.2829286 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4927432 0.5490833 -0.6280289 +O -0.3384982 -0.1638272 0.1489567 +H -0.4347660 -0.8932848 0.5193483 +H -0.6526961 1.7322367 1.1665667 +H -0.0526896 -1.9206009 -0.9623328 +H 0.8784451 -0.3931651 0.1114933 +C 0.5185041 0.7224012 0.5666507 +C -0.6438849 0.4996661 0.9771902 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0250073 0.4216121 -0.9255558 +O -1.1633114 0.4562957 0.7062532 +H 0.6452354 -0.5441141 1.0236885 +H 0.0867944 0.8214247 -0.3141656 +H -0.7994506 -1.3509131 -2.0630802 +H 0.8470343 -1.1312263 0.7532538 +C 1.9032599 0.1408439 1.0934660 +C -0.0286382 -0.8932776 1.8292389 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2712701 0.5671431 -0.8891628 +O -1.8279412 0.7854405 0.1819446 +H 0.6735106 -0.7466194 1.7125353 +H -0.1007348 0.1471051 -0.5226711 +H -0.5678284 -0.3893864 -1.6952011 +H 0.3883123 -1.5504009 0.9135774 +C 2.0544732 0.8112850 1.7245498 +C 0.4917886 -1.4717186 1.8248718 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1510972 0.7716402 -0.0776314 +O -1.6140893 0.2400522 -0.7569861 +H 0.3556426 -1.4515671 1.6848111 +H -0.3231170 -0.0646754 -0.2382573 +H -0.2099299 0.1162636 -1.0001850 +H 0.4793617 -1.0696682 0.1348749 +C 1.2373461 1.2217259 1.7728209 +C -0.1813921 -1.2537197 1.4224605 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9670409 -0.0061735 0.7638788 +O -0.7646460 0.1714290 -1.3207061 +H 0.0236336 -1.7450017 0.3818413 +H 0.2555501 0.3380563 0.1984209 +H -0.1051948 0.1226261 -0.3965906 +H 1.0206254 -0.0906321 -0.8313673 +C 0.1706804 1.9777280 0.8299024 +C -0.1056616 -0.6038732 0.3778957 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.7593025 -0.9344775 1.3410642 +O 0.5229579 0.5924623 -1.5853951 +H 1.0273978 -0.9846838 -0.4050434 +H 1.3261731 0.3454152 -0.4498022 +H -1.3515926 0.0021397 -0.4762875 +H 1.7325317 0.8096692 -1.7032188 +C -0.2620544 1.4747991 -0.1096001 +C 0.6392874 -0.6776583 0.3954601 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3210123 -1.7104878 1.2313885 +O 0.4978453 1.6181942 -0.9245794 +H 1.4048851 -0.1951386 -0.3354164 +H 1.6043106 -0.2122197 -1.3525981 +H -1.8640658 -0.3860587 -0.7677489 +H 1.8483952 0.8526919 -1.5504962 +C 0.2033167 0.4162942 -0.1012828 +C 1.5364997 -0.6482235 0.7166872 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8861583 -1.0589128 0.3996054 +O 0.0979628 1.8914576 -0.4564560 +H 1.9701251 0.6024154 -0.4292469 +H 1.6746462 -1.1790646 -1.8580039 +H -1.7351830 0.9375895 -0.5609046 +H 0.8124167 0.5727881 -0.7231099 +C 0.0856909 -0.2452376 -0.1047266 +C 1.8301961 -1.3618025 0.9326726 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3980537 -0.7315290 0.6251014 +O 0.1569779 1.3170478 -0.7434653 +H 1.1095575 0.1691487 -0.1080770 +H 0.5903747 -1.8817693 -1.6421058 +H -0.4804219 1.6120783 0.4503639 +H 0.1411152 0.4599849 -0.6384348 +C 0.0063035 -0.0348358 -0.0139952 +C 1.4179673 -1.1329663 -0.0419632 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0598335 -0.6498400 1.3209545 +O 0.3254427 0.3939921 -1.0062892 +H 0.0751952 0.1389202 -0.7174071 +H 0.5020271 -1.4767082 -0.4295065 +H -0.0627945 1.7321121 1.2809382 +H -0.2295155 0.8419257 -0.7963483 +C -1.2241328 0.2686477 -0.3032169 +C 0.6996314 -0.3180502 -1.2951599 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0237508 -1.0537096 1.4243604 +O 1.4552057 -0.2391568 -0.7707283 +H -0.1908783 0.6326608 -1.5798144 +H 0.8579595 -0.7189793 0.1010973 +H 0.1059807 0.8507287 1.6558222 +H 0.1160543 1.2322295 -1.1353561 +C -1.8158333 -0.0252820 -1.3625695 +C 0.0578825 0.5988597 -1.5833497 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5915091 -1.5347774 1.3204430 +O 1.9452374 0.0649418 -0.4077434 +H 0.3427930 1.0260554 -1.9637442 +H 0.9533975 -0.4704655 0.1808949 +H -0.1817496 0.1507298 1.1746800 +H 0.2052596 2.0232836 -1.0524484 +C -1.5454298 -0.6163803 -1.9395834 +C 0.5554206 0.8958382 -1.3251405 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2560776 -1.3095680 0.1749515 +O 1.5451016 0.3395287 0.7917188 +H 0.4805934 1.8707460 -1.1735562 +H 0.7492846 -0.7672480 -0.6139747 +H -0.4084612 0.1316256 0.4112043 +H -0.5631403 1.3340025 -0.1168753 +C -0.7655553 -1.6612771 -1.2529662 +C 0.8166568 0.7022311 -0.6814274 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3577324 -0.0541718 -0.9559550 +O 0.6134176 -0.0976364 1.7936130 +H -0.0440212 1.7547884 -0.5416126 +H -0.3291104 -1.0534320 -0.2691023 +H 0.7169474 0.4776659 0.5938129 +H -1.3827552 0.1092115 0.9024396 +C -0.3406131 -1.9542921 -0.6800186 +C 0.3753729 0.3594708 -0.4805866 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4901871 1.0429441 -0.7554207 +O 0.1208544 -0.9598246 1.0924815 +H -0.9751463 1.1399784 -0.1532756 +H -1.2419500 -0.7130233 0.7925380 +H 1.7161184 0.9039270 1.2456963 +H -1.6879687 -0.4955516 0.9643106 +C -0.6652386 -1.2571922 -0.1318321 +C -0.5787746 0.7068031 -0.8868286 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0439671 0.8286270 -0.2128745 +O 0.3522506 -1.6159226 1.0147052 +H -1.7787686 0.1220149 -0.3730847 +H -1.5116863 0.6512037 1.6268071 +H 2.0395871 0.2383833 1.2152897 +H -1.3699597 -0.5092455 0.6603435 +C -0.9416986 -0.0995573 -0.6739980 +C -1.6664922 1.6245584 -1.2909935 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4410494 0.4150709 -0.3866469 +O 0.6934247 -1.8584319 0.5602296 +H -1.3892104 -0.1658636 -0.4786621 +H -0.8964159 1.3901139 1.6333135 +H 1.1743926 -1.1287178 0.9328352 +H -0.6746808 0.0673866 0.2605146 +C -0.7173500 -0.0092129 -1.0196777 +C -1.3478979 1.4567286 -1.0774024 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6148825 0.4242181 -0.7156046 +O 0.3059987 -0.8487867 0.9784254 +H -0.4705304 0.4004549 -0.0843495 +H -0.3148917 1.1743377 0.9270921 +H 0.6157264 -1.7896802 -0.2193914 +H -0.3738206 -0.4388180 0.6825197 +C 0.0832236 -0.6533824 -0.4408734 +C -0.9340807 1.0760615 0.3421860 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1452935 0.9661049 -1.6485622 +O -0.8210101 -0.4129888 1.5719633 +H -0.3300943 -0.0484345 0.9392054 +H -0.7874829 0.6119566 0.4171341 +H 0.5792927 -1.4284728 -1.0235848 +H -0.7581715 -1.2023619 1.6345091 +C 1.3866545 -0.6625169 0.7159692 +C -0.3174644 -0.0609019 1.2546755 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2523701 1.7261868 -1.8443885 +O -1.7195569 -0.4515593 1.1181224 +H -0.8685278 -0.4711789 1.4164104 +H -1.2887456 0.5037958 0.3976309 +H 0.6801475 -0.4208059 -0.9418761 +H -0.7649377 -1.7227339 1.6730650 +C 1.4533359 -0.0197857 1.2683470 +C -0.8108638 -0.2611206 1.0786047 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4344245 1.5707425 -0.9189941 +O -1.3791777 -1.3240757 0.1971356 +H -1.0602875 -1.4465096 1.4026223 +H -1.3755487 0.7092551 0.8093018 +H 0.7454298 -0.3515706 -0.4316776 +H -0.3618023 -1.8349975 0.9817492 +C 1.0189231 1.1665747 1.4511974 +C -1.6348234 -0.1943140 0.6573506 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2705169 0.9508698 -0.0532306 +O -0.7613864 -1.1336951 -0.6318474 +H -0.7457241 -1.6653758 1.0703008 +H -0.6719618 1.2948500 0.9022501 +H 0.5638868 -1.0309993 -0.3675894 +H 0.5361840 -0.8430112 -0.0431841 +C 0.5098437 1.6015725 0.7000536 +C -1.0474905 0.0794161 0.3397150 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9867755 -0.2593495 0.2640543 +O -0.2937789 0.0144905 -0.5933543 +H 0.3208217 -1.0013534 0.5794240 +H 0.4466316 1.2910870 0.3550365 +H -0.7994554 -1.3925163 -0.7848043 +H 1.4981612 -0.0504039 -0.5660564 +C 0.4424834 1.3228598 0.5698182 +C -0.0742919 -0.6812803 1.0560007 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8235136 -0.1669099 -0.2066679 +O -0.8752543 0.7840036 -0.2552925 +H 1.2554364 -0.5663637 0.4712031 +H 0.9780789 0.5283454 -0.8950612 +H -1.3107167 -1.0475305 -1.9110075 +H 1.3486959 -0.2408495 -0.4844397 +C 1.1058167 0.7678838 0.8051743 +C 0.6194447 -1.1005109 1.4832735 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7965099 -0.4995059 -0.4866758 +O -1.2278134 1.3879228 -0.3482612 +H 1.3004829 -0.2728840 1.3509749 +H 0.6844169 -0.3154018 -1.3461351 +H -1.4631388 0.2342250 -1.4681710 +H 1.0112743 -0.5856395 -0.0205954 +C 1.4130224 0.5982338 1.3555626 +C 1.0046927 -1.8301358 1.6679222 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5853328 0.1520649 0.2023050 +O -1.0393263 1.1178831 -0.9698748 +H 1.1997975 -0.8542323 1.1229632 +H 0.3521312 -0.8467087 -1.2787214 +H -0.5539239 1.2082291 -0.5048985 +H 0.4094010 -0.7127202 -0.1804615 +C 0.8186789 0.7087769 1.3088432 +C 0.6566234 -1.1679036 0.5500733 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1794218 -0.6012972 1.4201484 +O -0.1601069 0.4317552 -1.5449813 +H 0.4706398 -0.9977125 -0.0934752 +H 0.6316750 -0.5889377 -0.6869698 +H -0.5147261 0.9759852 0.6233326 +H 1.0643119 0.2977824 -1.5161321 +C -0.4127988 1.2494439 0.5625580 +C 0.6555672 -0.6487078 -0.2718809 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8631059 -1.2948105 2.1422331 +O 0.8907399 0.5983352 -1.7191606 +H 0.9465475 -0.6649682 -0.8814933 +H 1.5246389 -0.3052542 -0.2330270 +H -0.9622181 0.5790619 0.7003082 +H 1.3398479 1.2349595 -1.9856030 +C -1.0215205 0.8847499 -0.6832313 +C 0.6916051 -0.2208330 -0.4200264 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4656144 -1.7015650 1.2834962 +O 1.1910212 1.0023254 -1.0401530 +H 1.5874673 0.5848395 -1.5229684 +H 1.8201072 -0.5315489 -1.1518797 +H -1.7450511 0.1918333 0.2772688 +H 1.1200525 1.3519388 -1.8838809 +C -0.9917039 -0.1833194 -1.0565415 +C 1.5794637 0.1391360 -0.0748545 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4459834 -1.3846333 0.6879665 +O 0.9716396 1.6303709 -0.2453439 +H 1.5848120 1.7089736 -1.0339656 +H 1.4056829 -1.7608171 -1.5343835 +H -1.2369847 0.7441186 -0.0425269 +H 0.1492631 1.1592645 -0.4296387 +C -0.2674679 -1.1389689 -0.6094397 +C 1.9303826 -0.6744898 -0.1318165 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2626142 -0.4514006 0.0001879 +O 0.4820681 1.2724589 0.6467593 +H 0.8867992 1.0942803 -0.4135305 +H 0.3201209 -1.8368555 -1.1266603 +H -0.3991845 1.8983415 0.7173784 +H -0.4505810 0.3326036 0.0134650 +C -0.7105629 -1.1611353 -0.7482145 +C 1.1222050 -0.6892960 -0.4973840 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5518927 -0.0516131 0.6669572 +O 0.9005562 -0.1763524 0.0790051 +H -0.4582976 0.6834897 -0.5422466 +H -0.4531070 -1.0860679 -0.0133244 +H 0.5141240 1.6482054 1.5731250 +H -1.2800068 0.6320950 -0.1508277 +C -1.2348970 -0.3453803 -0.8413374 +C 0.2824110 0.4002901 -1.2649177 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2119258 -0.4713082 0.9706869 +O 1.7703247 -1.1232391 -0.1801710 +H -0.5557606 0.5840923 -1.5456171 +H -0.2224285 -0.2473290 0.8063248 +H 1.0587825 0.9737243 1.6173431 +H -0.8238594 1.1143512 -0.5019602 +C -1.7177331 -0.4480310 -1.7732660 +C -0.6263359 1.3863037 -1.8575917 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1670688 -0.8973398 0.4227531 +O 1.5493716 -0.9590144 0.3440498 +H -0.6889702 0.6945422 -1.8841669 +H 0.2469449 0.1876316 1.0509661 +H 0.7469328 -0.3900076 1.4306838 +H -0.3261591 1.4065576 -0.5735513 +C -1.6401125 -0.8800739 -1.7664477 +C -0.4739544 1.7092970 -1.5625432 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8294030 -0.3665001 -0.4278255 +O 1.3418817 -0.2965461 1.2921030 +H -0.5890763 1.6175932 -1.1901392 +H 0.2061813 0.0508145 0.1752245 +H 0.5310122 -0.4855992 0.3454217 +H -0.8893126 0.6591514 0.4622766 +C -0.6826073 -1.5595054 -0.9914342 +C -0.0223734 1.1765272 -0.7274248 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6951073 0.3411418 -1.2790184 +O 0.2122374 -0.0766329 1.9054112 +H -0.4208281 1.2363689 0.1759102 +H -0.6898228 -0.2548040 0.5002654 +H 0.7398994 -0.2170051 -0.2812726 +H -1.7372987 -0.3097948 1.2042023 +C 0.3005055 -1.6195609 0.1631865 +C -0.4080467 0.2753704 0.0924198 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 2.0032987 1.6669424 -1.6184891 +O -0.6307672 -1.0165530 1.6429902 +H -1.3431556 0.4334110 1.0722373 +H -1.4558114 -0.1216087 0.9115215 +H 1.5863802 0.2302091 0.0370060 +H -1.5997217 -1.0360008 1.8499698 +C 0.5584339 -0.7191707 0.3816993 +C -1.0309207 0.4196714 -0.0822711 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4260989 1.7551303 -0.8344947 +O -0.3170907 -1.7537585 0.9279518 +H -1.8559335 -0.4313025 0.6725673 +H -1.9610075 0.7643086 1.6866066 +H 2.1174864 -0.3078593 0.2064122 +H -1.3824739 -1.1230721 0.9440958 +C -0.0370653 0.2271917 0.0386163 +C -1.4352690 0.9921470 -0.5562710 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5379374 0.9025949 -0.7376217 +O 0.0118901 -1.4576832 0.0767402 +H -1.5832581 -0.9345097 0.1059039 +H -1.0918650 1.6554357 1.7737076 +H 1.1674233 -1.2600174 -0.2338694 +H -0.3190707 -0.3988387 0.5201178 +C -0.0689107 0.4530181 -0.0848635 +C -1.5344099 1.0922430 -0.5855945 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1175151 0.5092589 -0.7634290 +O -0.2628825 -0.8407295 0.6564874 +H -0.8683498 -0.3865100 0.1637053 +H -0.2148311 1.8018790 1.1622872 +H 0.0022464 -2.0759070 -1.0815306 +H 0.5011672 -0.6465690 0.4365535 +C 0.5243325 0.1773264 0.6483786 +C -0.9552130 0.6661246 0.7397462 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1193331 0.5083137 -1.1769829 +O -0.9943887 0.2329578 1.0534074 +H 0.1365541 -0.3835554 1.1362029 +H -0.0024190 0.8743639 0.0130458 +H -0.7111805 -1.4298068 -1.6481536 +H 0.2504260 -1.1505610 1.2547027 +C 1.3666778 -0.1429309 1.2722603 +C -0.2043692 -0.5571372 1.6095101 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9546319 1.0163515 -1.1753911 +O -1.9944170 0.2282439 0.6960926 +H 0.1295847 -0.9118477 2.0013245 +H -0.5850954 0.2536471 -0.3579582 +H -0.2067852 -0.4212801 -1.8729364 +H 0.0879444 -1.8404767 1.3639646 +C 2.0786645 0.5695517 2.0250036 +C -0.2165238 -1.1375776 1.6366308 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1984402 1.3403319 -0.5190218 +O -1.7689297 0.0560975 0.0170624 +H -0.4122559 -1.6148047 1.4380815 +H -0.6023952 0.5641491 0.1562263 +H 0.0327472 -0.0770768 -0.9127561 +H 0.3346810 -1.6453587 0.3142975 +C 1.5243518 1.4400417 1.7503413 +C -0.4432865 -1.0915262 1.2301693 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6995950 0.4260269 0.4879363 +O -1.1099152 -0.2682906 -1.3356824 +H -0.1295768 -1.7049210 0.7894698 +H -0.0201641 0.5708165 0.3203809 +H -0.1152475 -0.1747446 -0.4456886 +H 1.0410777 -0.5002517 -0.9396258 +C 0.3268766 1.8174518 0.9221394 +C -0.8725078 -0.5516319 0.4953594 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.7240757 -1.0014392 1.2410805 +O -0.0021649 0.5562188 -1.3248821 +H 0.9561531 -1.6371831 0.0202680 +H 1.3275949 0.9728871 -0.1933200 +H -1.0000523 -0.4244755 -0.4481730 +H 1.7375678 0.4866924 -1.3295835 +C 0.1056879 1.6557769 0.0953855 +C 0.0943867 -0.4829195 0.6120171 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6835558 -1.1691079 0.8697156 +O 0.0421739 1.4173181 -0.9586163 +H 1.6628243 -0.4626863 -0.0499029 +H 1.8769347 -0.0197555 -1.1261756 +H -1.8619743 -0.2845727 -1.0917811 +H 1.7818014 0.8780113 -1.0086508 +C 0.3053556 0.7791389 0.4221377 +C 1.5013175 -1.0226695 1.1155449 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7277709 -0.7880854 0.3685460 +O -0.2874426 1.6543203 -0.5620784 +H 1.9770033 0.3116142 0.0570587 +H 1.5553856 -1.0018659 -1.5502431 +H -1.6126807 0.6303783 -0.8716525 +H 0.9976135 0.2190282 -0.5385996 +C 0.3649047 0.1305400 0.5359886 +C 1.8086414 -1.6885029 1.1467757 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3845490 -0.3295201 0.5948255 +O -0.6170875 1.5999459 -0.6932784 +H 1.2182721 -0.1731875 0.1542245 +H 0.9619855 -1.5726929 -1.6012132 +H -0.9610634 1.6765938 0.0560007 +H 0.3301213 0.0415495 -0.6280405 +C 0.1695922 0.2181080 0.3887257 +C 1.6382111 -1.5588480 0.2855657 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6053101 -0.8642710 1.5033607 +O 0.5402924 0.7555129 -1.1337712 +H 0.2896911 -0.3344695 -0.3317147 +H 0.1376213 -1.2337975 -0.6598019 +H 0.0410885 1.5258270 0.9104453 +H -0.0281608 0.6892810 -0.8507287 +C -1.0564777 0.4841274 -0.3737796 +C 0.4257009 -0.4747910 -0.8448187 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9123040 -0.9626024 2.0409538 +O 1.2089305 -0.0666195 -1.5854584 +H 0.3835544 0.2938977 -1.4798791 +H 1.1668567 -0.4577544 -0.3917094 +H -0.2266832 1.2368459 1.5499117 +H 0.7446910 1.5387039 -1.8487737 +C -1.6011361 0.6494495 -1.4201919 +C 0.2072681 0.6044340 -1.5036377 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1229923 -1.7756969 1.3037812 +O 1.7782690 0.7760687 -0.4812185 +H 0.7561065 1.1506782 -1.7607617 +H 1.0428046 -0.6978083 -0.4420804 +H -0.5914656 0.7315165 1.1411302 +H 0.6374438 1.8033351 -1.2646467 +C -1.4939732 -0.7574137 -1.8629582 +C 1.0772628 0.7915033 -1.1444643 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0643821 -1.2677464 0.3007871 +O 1.5918616 0.8858939 0.6642945 +H 0.9887160 1.4258345 -1.2834664 +H 1.0124743 -1.4145610 -0.9532538 +H -0.4416119 0.7399159 0.4568447 +H -0.1772473 1.3664006 -0.2442306 +C -0.5458345 -1.6158076 -1.1865746 +C 0.9513254 0.3391274 -0.5122249 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0891190 -0.4767822 -0.4647161 +O 0.6384538 0.4221894 0.9064070 +H 0.1012634 1.7474137 -0.3827022 +H -0.0208090 -1.1771811 -0.7759195 +H 0.3113560 1.1446164 0.7584788 +H -1.3424155 0.2027616 0.5381371 +C -0.2412158 -1.7528454 -0.6835859 +C 0.7991263 0.2813033 -0.8084390 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4474746 0.4755149 -0.1884874 +O 0.6688318 -0.4642819 0.9475474 +H -0.9613073 0.8433175 -0.4392322 +H -0.9796931 -1.0738458 0.4946159 +H 1.3308692 1.1668151 1.2775926 +H -1.9357467 0.0183283 0.8089894 +C -0.9395166 -0.9771994 -0.4003369 +C -0.3886441 0.8886986 -1.2965994 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9907554 0.6846966 0.2251633 +O 0.6324740 -1.8585951 0.4040619 +H -1.5683258 0.2005625 -0.7408664 +H -1.0151787 -0.0213174 1.1312601 +H 1.7876233 0.2473291 1.6364060 +H -1.2057129 0.3036924 0.3061484 +C -1.2305232 -0.3177831 -1.1072777 +C -1.3809173 1.9837261 -1.4897422 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8158033 -0.0491295 -0.0285157 +O 1.1175293 -1.1870620 0.5530955 +H -1.2461893 0.6069606 -1.3596326 +H -0.5599190 1.0962453 1.4357135 +H 1.3509150 -0.4417218 0.9662615 +H -0.8449282 0.4319975 0.2031909 +C -1.2854265 -0.4745097 -1.5079507 +C -0.9673602 1.5863358 -1.0975708 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5103820 0.3731258 -0.7245205 +O 0.7617235 -0.8425581 1.1443447 +H -0.6474519 0.9127773 -0.4224303 +H -0.5385334 1.1548916 0.9489830 +H 0.4813090 -1.3439318 -0.0220026 +H -0.4631234 0.1785864 0.9361561 +C -0.2891972 -1.1067288 -1.0461993 +C -0.6050652 1.1113321 -0.0263163 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4785252 0.8978870 -1.7552568 +O -0.7524957 -0.2316264 1.9438659 +H -0.2080032 0.5990677 0.7846224 +H -0.7601181 0.2919602 0.5247103 +H 0.5585895 -1.3136231 -0.6020216 +H -0.8923100 -1.0311769 1.7965162 +C 0.8871330 -0.8432732 0.7214879 +C -0.7658141 0.1981093 0.6667449 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4657818 1.8019458 -1.6255432 +O -1.2281272 -0.7816116 1.7273858 +H -1.3633554 -0.1689280 1.5575653 +H -1.6268354 0.3654854 0.4531615 +H 1.1347990 -0.7267381 -0.7666985 +H -1.3513087 -1.6666804 1.9840383 +C 1.5663052 -0.4166439 1.1754838 +C -1.0515162 0.1523259 0.6120876 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0510553 1.7103083 -1.2237065 +O -1.3051617 -1.4476830 0.5091267 +H -1.5342243 -1.0925742 1.3403170 +H -1.7435332 1.3480580 1.3539209 +H 1.5422573 -0.4969739 -0.1173471 +H -0.8740565 -1.5563630 1.0000500 +C 0.8190967 0.8833173 1.2295544 +C -1.5013612 0.3970648 0.0498534 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1414370 1.1220318 -0.3138072 +O -0.8673438 -1.3903658 -0.6398679 +H -0.9506802 -1.6034594 0.7713145 +H -1.2571002 1.8298935 1.6205092 +H 0.6150831 -1.6747249 -0.4488824 +H 0.0026858 -0.8395680 0.3204134 +C 0.3625985 1.1296406 0.4442028 +C -1.3876729 0.6888488 0.3746171 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7608167 0.1904246 -0.2510586 +O -0.4726988 -0.2243147 -0.2170182 +H -0.0536128 -1.2526345 0.6320800 +H 0.3644965 1.7094576 0.6193670 +H -0.3909817 -1.6220125 -1.2578118 +H 1.2438635 -0.5638499 -0.0811399 +C 0.8997332 1.2558950 0.5570872 +C -0.3147983 -0.1428696 0.8272682 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5267797 0.1108735 -0.5803387 +O -1.0465116 0.7462968 0.1022349 +H 0.9190577 -0.6926858 0.8369316 +H 0.6184364 0.5928179 -0.4970753 +H -1.1028151 -1.1863264 -1.8825213 +H 1.2339706 -0.6193661 0.2115792 +C 1.5169553 0.5157794 1.0799143 +C 0.6331970 -1.4184914 1.7203548 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2668378 0.4299766 -0.7650633 +O -1.5872962 0.9960578 -0.0055229 +H 0.9921088 -0.7654471 1.2842068 +H 0.5902805 -0.2663782 -0.9032109 +H -0.7283909 -0.0909768 -1.6792151 +H 0.8055428 -1.1017842 0.2960575 +C 1.7733682 0.7313782 1.5777351 +C 0.7419577 -1.5980742 1.9710478 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4512638 0.3935062 0.1698767 +O -1.4878120 0.5867802 -0.6662609 +H 0.4858309 -1.1245732 1.2566864 +H 0.1282550 -0.4587501 -1.2354278 +H -0.6846159 0.2729241 -0.6358876 +H 0.3962731 -0.9510069 -0.1925724 +C 1.1180094 1.3773633 1.7221744 +C 0.1943175 -1.6993992 1.0712091 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4161762 -0.3449963 1.0957270 +O -0.7163693 0.2922500 -1.7562114 +H 0.0390253 -1.4855169 0.4902905 +H 0.6741526 -0.1758505 -0.3700299 +H -0.5042118 0.5961960 0.1950117 +H 1.3023390 -0.1686642 -1.0877814 +C -0.1113614 1.5545271 0.6268541 +C 0.1201016 -0.8386030 -0.1407667 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.9800099 -1.0950880 1.7433781 +O 0.3174387 0.7897781 -2.0267148 +H 0.9353625 -0.8999768 -0.7119452 +H 1.1663224 0.0812202 -0.4373270 +H -1.3574598 0.4701415 0.1141457 +H 1.5587222 0.9499144 -2.0317177 +C -0.5533419 1.3339191 -0.2529441 +C 0.8187770 -0.4935553 0.1769657 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4627484 -1.6765530 1.0903228 +O 0.8071973 1.2337539 -1.1015637 +H 1.7213493 -0.0042614 -0.9732538 +H 1.5236246 -0.4862458 -1.3473828 +H -1.7369756 0.1176267 -0.4680911 +H 1.4807328 1.6307898 -1.5296531 +C -0.5355316 0.2538563 -0.4901866 +C 1.4497412 -0.7738320 0.0197214 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7727617 -1.7919736 0.4602571 +O 0.4149912 1.5106637 -0.2991243 +H 1.7486652 1.0384602 -0.5642522 +H 1.6636564 -1.4779425 -1.7238736 +H -1.4757052 0.7558439 -0.1931493 +H 0.6802753 1.0738380 -0.9273163 +C -0.3861862 -0.7594745 -0.3704523 +C 1.9401802 -0.9368062 0.5256088 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0176330 -0.4492276 0.3292381 +O 0.1925537 1.0584338 -0.0624497 +H 1.0182563 0.8481901 -0.1396351 +H 0.8197196 -2.0654585 -1.3289050 +H -0.9058200 1.5536544 0.8426373 +H -0.3978358 0.6298322 -0.5435305 +C -0.2126817 -0.6658261 -0.2771017 +C 1.0578462 -0.9808061 -0.1844774 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2357489 -0.1190362 0.8703276 +O 0.6610980 0.2381345 -0.4627928 +H -0.2079551 0.4912525 -0.4897069 +H -0.1710621 -1.3747764 -0.3930151 +H 0.3539604 1.6913286 1.5229534 +H -0.7051075 0.8232267 -0.5639057 +C -1.1599879 0.0596203 -0.4630528 +C 0.3523947 0.0438638 -1.0432120 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2858173 -1.0672707 1.6335109 +O 1.4836147 -0.4430749 -0.7026219 +H -0.6834347 0.4538949 -1.5472219 +H 0.1750419 -0.4002187 0.4128330 +H 0.4177841 0.7733667 1.8998658 +H -0.5114059 0.9883241 -0.6228277 +C -1.9352953 -0.1028336 -1.6135470 +C 0.0348498 0.9984031 -1.4175505 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0431608 -1.0504663 0.9503564 +O 1.8656356 -0.2391092 -0.3084629 +H -0.1785046 1.1796089 -2.0650697 +H 0.7480200 -0.0579546 0.4262746 +H 0.4594011 0.1620592 1.3239211 +H -0.1294308 1.8366607 -0.8590323 +C -1.7687082 -0.9629363 -1.8872998 +C 0.2245013 1.4762201 -1.5268763 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5742015 -0.6484614 -0.1724149 +O 1.1904617 -0.0110122 1.0276934 +H 0.0031688 1.7685418 -1.2087562 +H 0.3467055 -0.3368953 0.1580299 +H -0.1934056 0.1474085 0.6782631 +H -0.5399155 0.9812119 0.0296832 +C -0.8216807 -1.8127546 -1.1957507 +C 0.5547109 0.7563243 -0.9171362 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3168881 0.5974152 -1.3360586 +O 0.4368734 0.0179909 1.4905374 +H -0.2795124 1.5270602 0.0819630 +H -0.6986412 -0.4788634 -0.0986706 +H 0.6957584 0.2730441 0.0803584 +H -1.3481012 -0.1447065 1.1632710 +C -0.0395821 -1.7862998 -0.1842997 +C -0.0724094 0.7018817 -0.4327769 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 2.0041833 1.2509531 -0.8448180 +O 0.1166972 -1.2128938 1.3905768 +H -1.0989984 0.5817449 0.2371178 +H -1.5410377 -0.2347802 0.8110281 +H 1.4624935 0.5683420 0.7144730 +H -1.6746304 -0.6949713 1.4314297 +C -0.0900816 -0.9616652 0.1486547 +C -1.3435818 0.7778848 -0.8577420 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7865831 1.4693048 -0.8016322 +O -0.1055500 -1.7208465 0.7432242 +H -2.1038630 -0.5099740 0.0692541 +H -1.5867531 0.5131265 1.4242403 +H 1.6665985 -0.2630260 0.9748367 +H -1.4322323 -0.7204712 0.8896648 +C -0.3768484 -0.0762982 -0.0828399 +C -1.6742257 1.6482612 -0.9207032 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6651000 0.6399120 -0.5677986 +O 0.3907534 -1.8359526 0.6924316 +H -1.6262783 -0.6042902 -0.1898427 +H -1.3824296 1.5314506 1.7258177 +H 1.3149466 -1.2996286 0.4230203 +H -0.2558222 -0.1714609 0.6745339 +C -0.4716690 0.0372886 -0.6229748 +C -1.8754121 1.6201191 -0.8359510 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5047540 0.2912211 -0.9026184 +O -0.0144702 -1.0323499 0.9085848 +H -0.6621658 -0.2833954 0.0593644 +H -0.4630601 1.4062696 1.0619303 +H 0.4877012 -1.6839980 -0.8039411 +H 0.1827349 -0.2950562 0.4578122 +C 0.5281699 -0.0611417 -0.0664340 +C -0.8388546 1.0913483 0.4263480 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7978381 0.9721814 -1.7482349 +O -1.0306300 -0.1753603 0.9664031 +H -0.1902113 0.1028278 1.0680089 +H -0.6687625 1.1487181 0.2252056 +H -0.0683738 -1.1508770 -1.3392967 +H -0.0790423 -1.0890013 1.1809364 +C 1.4259442 -0.4389288 1.2097149 +C -0.5580397 -0.3427270 1.4600049 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9244156 1.5658120 -1.5864172 +O -1.7343821 -0.0334669 0.9231328 +H -0.3479849 -0.6201483 1.9064156 +H -0.9614324 0.2338931 -0.0017511 +H 0.3896127 -0.9286777 -1.4933782 +H -0.2717899 -1.8327041 1.3104767 +C 1.6636375 0.2304218 1.5909571 +C -0.3870072 -0.8163107 1.2368355 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0957666 1.5385509 -0.8763485 +O -1.9518917 -0.6157849 -0.1133612 +H -0.6912654 -1.5184184 1.7898479 +H -0.9141050 0.6931912 0.4768838 +H 0.6955813 -0.3426872 -0.6154926 +H -0.4191898 -1.6494498 0.8844389 +C 1.4019317 1.0902729 1.9064602 +C -0.9138428 -0.6627036 0.7079115 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5779984 0.6703317 0.3723419 +O -0.9982760 -0.6388547 -0.8239670 +H -0.5450591 -1.7392981 0.7573784 +H -0.6110793 1.3072280 0.7082574 +H -0.1196589 -0.8421007 -0.2689192 +H 0.9718645 -0.4911100 -0.1532455 +C 0.5177371 2.0303893 0.9435967 +C -0.7981510 -0.4228722 0.5420396 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5105211 -0.5057153 0.2993322 +O -0.3933276 0.1162526 -1.2441792 +H 0.4189719 -1.1834943 0.2180490 +H 0.5815685 1.3715077 -0.1056585 +H -0.9745870 -1.0788823 -0.9309863 +H 1.6508238 -0.0120421 -1.0468550 +C 0.4020183 1.7011017 0.0434952 +C 0.0789148 -0.5629358 0.6830354 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3859984 -0.7082694 0.2429700 +O -0.5733530 1.2436436 -1.0504106 +H 1.3667070 -0.4199849 0.2708015 +H 1.3501435 0.3863921 -1.1320913 +H -1.7839942 -0.5300052 -1.6519969 +H 1.6232580 0.1555402 -0.9152051 +C 0.7363724 0.7143210 0.4810403 +C 1.1582471 -1.5137532 1.5283635 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8632211 -0.8007396 -0.1694926 +O -0.5935532 1.6934801 -0.5350036 +H 1.6063501 -0.0690585 0.9870857 +H 1.0708108 -0.6618469 -1.6037111 +H -1.4189902 0.3407145 -1.1981874 +H 0.9295705 -0.2812955 -0.4482156 +C 1.0863761 0.3546812 1.0837471 +C 1.6056953 -1.8919784 1.3568017 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3855168 0.0310069 0.6056145 +O -1.0832584 1.1285120 -0.7546414 +H 0.7505307 -0.4140554 0.8163311 +H 0.7034229 -1.4569182 -1.3279713 +H -1.0204574 1.3446826 -0.3683883 +H 0.1778757 -0.2557022 -0.7387267 +C 0.3240393 0.5369308 0.9173454 +C 0.8712668 -1.6875860 0.7238500 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1515957 -0.5419340 1.2556080 +O 0.3279101 0.7244003 -1.3560609 +H 0.5876489 -0.8961081 -0.4043724 +H 0.6586483 -0.9726963 -0.7225993 +H -0.3234855 1.4924162 0.6133619 +H 0.5367349 0.5443558 -1.2702217 +C -0.6584165 1.0240466 0.0272920 +C 0.5693504 -0.4438663 -0.2933538 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4679528 -1.5537428 1.7547234 +O 0.8769383 0.5125340 -1.6636011 +H 0.9084848 -0.2949888 -1.3169357 +H 1.1272308 -0.5545563 -0.4663816 +H -1.0238507 0.8052331 1.4297090 +H 1.0005988 1.4782005 -1.9113015 +C -1.1434558 0.8891408 -1.1328752 +C 1.0025424 0.2196586 -0.8817713 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.2802306 -1.9813881 1.6229490 +O 1.6247466 0.8468673 -1.2794748 +H 1.2237240 0.9066013 -1.7671951 +H 1.7391718 -0.7160011 -0.7318714 +H -1.2589535 0.4212232 0.7301700 +H 0.8573905 1.8414679 -1.6620570 +C -0.8920163 -0.4912968 -1.3890325 +C 1.1948974 0.2505632 -0.7762864 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2065717 -1.5397453 0.5581457 +O 1.0494272 1.1421316 0.3816059 +H 1.0806846 1.6035869 -1.0803409 +H 0.9405158 -1.4426966 -1.1512786 +H -1.1038973 0.8993263 0.5540111 +H -0.0025474 1.3876742 -0.4065788 +C -0.7108180 -1.3786119 -0.9065080 +C 1.4343399 -0.4416138 -0.2264215 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7408353 -0.4335311 -0.0994898 +O 0.7011599 0.8326702 0.7687739 +H 0.4648398 1.5702196 -0.7924929 +H 0.0744262 -1.7819520 -1.0524805 +H -0.1576703 1.2585807 0.7004786 +H -0.9960303 0.6383070 0.1467173 +C -0.5149737 -1.3120758 -0.4803704 +C 1.0282351 -0.1848343 -0.6497485 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9537767 0.0210248 -0.0193137 +O 0.6845613 -0.1925212 0.5189625 +H -0.4076129 0.8369043 -0.3589530 +H -0.3135235 -1.3603833 0.3852781 +H 1.0517111 1.4597566 1.4236734 +H -1.1118889 0.3960394 0.2224936 +C -0.9367050 -0.6530855 -0.3507312 +C -0.4638834 0.6546124 -1.2074858 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3844730 -0.1537244 0.4998076 +O 1.0211665 -1.0983895 -0.3012757 +H -1.1615556 0.5904262 -1.1358757 +H -0.7203768 -0.2568596 1.1497728 +H 1.2249148 0.4436088 1.9897958 +H -0.9794029 0.8321070 -0.0157065 +C -1.2379538 -0.3523450 -1.3343117 +C -0.6570095 1.2657826 -1.6691196 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4599318 -0.2534338 0.1047660 +O 1.4642288 -1.3953944 0.6026939 +H -0.9170340 0.7514700 -1.3686494 +H -0.4993509 0.4547853 1.3200667 +H 1.1974542 -0.5287658 1.2614114 +H -0.7168024 0.8417385 -0.2437587 +C -1.5671272 -0.8432985 -1.4865564 +C -1.1237137 1.9446631 -1.5049996 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6737171 -0.0787385 -0.9049898 +O 0.9996201 -0.9208193 1.6729764 +H -0.3845531 1.4265456 -0.7997276 +H -0.4903302 0.6468836 0.5253780 +H 0.3103050 -0.7990368 0.3898826 +H -0.6240159 0.4550654 0.4858979 +C -0.3662499 -1.3331305 -0.8630064 +C -0.5162121 1.1387603 -0.3513330 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6674220 0.6467541 -1.5354863 +O -0.6664899 -0.3365113 1.5552348 +H -0.3604832 1.3938262 0.4748773 +H -0.9963793 0.1551203 0.2962313 +H 0.4610081 -0.6812044 -0.4427419 +H -0.9656111 -0.8174500 1.7541411 +C 0.8282826 -1.4494953 0.1220011 +C -0.5584557 0.6855112 0.2276322 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7961778 1.6491442 -1.7035246 +O -0.7871095 -0.8191760 1.4823217 +H -1.4301755 0.1571982 1.1907227 +H -1.4453712 0.3882282 0.8248077 +H 1.4909303 -0.5787224 -0.0315908 +H -1.3621548 -1.5494810 1.8634270 +C 0.7431536 -0.9756099 0.7665794 +C -1.1718393 0.0371019 0.2956214 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9087783 1.9997536 -1.1292494 +O -1.0229890 -1.5247876 0.7669281 +H -1.5494324 -0.8628011 1.0954814 +H -1.8700454 1.1036802 1.5802077 +H 1.3766478 -0.3999337 0.4022561 +H -1.0359884 -1.4708843 1.1385822 +C 0.3761785 0.3218022 0.5006653 +C -2.1076761 0.8222602 -0.1223471 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2247354 1.1914847 -0.4801455 +O -0.5425264 -1.3634190 0.0347980 +H -1.1524421 -1.4172009 0.4163089 +H -1.3432423 1.7246335 1.8475210 +H 1.0005755 -1.0389860 -0.1289848 +H 0.1380297 -0.6890665 0.0638738 +C 0.1751314 0.7708824 0.4734955 +C -1.4591345 0.7136113 0.0343316 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4432097 0.5420104 -0.5467478 +O -0.3425337 -0.7030894 0.1251470 +H -0.0879875 -0.8051594 0.6104820 +H 0.0073938 1.6719849 0.9689656 +H -0.1810022 -1.6038491 -0.9300226 +H 0.7515677 -0.5936876 0.1278152 +C 0.9471896 0.5828329 0.7302775 +C -0.7052301 0.2708762 0.7491647 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3486095 0.6016741 -1.0302162 +O -1.0532080 0.3342408 0.4247194 +H 0.6618813 -0.4599686 1.5222612 +H 0.1566514 0.9033071 -0.4058177 +H -0.7068991 -1.6183754 -1.5465581 +H 0.8262279 -0.8917604 0.4677283 +C 1.4835017 0.5762617 1.0935691 +C 0.1536521 -0.6551783 1.6356658 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2739343 0.7889926 -1.1865299 +O -1.5811828 0.9267450 0.3107036 +H 0.7138652 -0.7020224 1.6521658 +H -0.1773941 0.1138411 -0.7958524 +H -0.7297644 0.0108547 -1.6228173 +H 0.6973030 -1.4654361 0.5553835 +C 2.0416691 0.5963843 2.0236108 +C 0.4549665 -1.2920267 1.6359962 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3445281 0.6973934 -0.2099986 +O -1.7480542 0.4045733 -0.7123803 +H 0.2538065 -1.4288349 1.5824769 +H -0.3653653 0.0209234 -0.5482827 +H -0.1680566 0.3628278 -0.9486912 +H 0.3396954 -1.4166254 0.2183012 +C 1.1901948 1.3262693 1.7317658 +C 0.1898920 -1.2659137 1.1041844 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1578770 0.4062107 0.8234279 +O -0.9628779 0.0050747 -1.4460293 +H 0.2393331 -1.6333207 0.7353611 +H 0.0187916 0.3354452 -0.2411665 +H -0.4325187 -0.0452521 -0.0602327 +H 1.0467023 -0.0148313 -0.9391811 +C 0.2532573 1.6014317 1.0125740 +C -0.3205041 -0.5801314 0.1300383 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.7286764 -1.1016609 1.3762333 +O 0.0774833 0.7101255 -1.7701505 +H 0.6966865 -1.0088043 -0.2877062 +H 1.2566679 0.4893572 -0.4805930 +H -1.1106528 -0.1237465 -0.0705407 +H 1.6740753 0.8799022 -1.4535947 +C -0.1081274 1.7816535 -0.4928764 +C 0.4650714 -0.6965993 0.2989597 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6071620 -1.7276401 1.2425884 +O 0.5039796 1.4819678 -1.3494441 +H 1.7333393 0.0466447 -0.2396832 +H 1.9576599 -0.2916555 -1.3444478 +H -1.7964652 -0.1122223 -0.6538351 +H 1.5739947 1.0799646 -1.5425026 +C 0.0678941 0.2858422 -0.2117908 +C 1.5288077 -0.9358082 0.6845139 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6725506 -1.0907460 0.4569767 +O -0.0394702 2.0375942 -0.5431662 +H 1.8942925 0.4933025 -0.3636430 +H 1.5959898 -1.5262273 -1.9701634 +H -1.3692202 1.0886576 -0.5824789 +H 0.8536322 0.9175696 -0.7257020 +C 0.1266620 -0.2118316 0.1278206 +C 1.8351478 -1.3674839 0.8166481 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0564653 -0.5906784 0.4913713 +O 0.0238859 1.6051594 -0.7396687 +H 1.0250591 0.5844550 -0.3059627 +H 0.6835590 -1.7837977 -1.6300688 +H -0.4112471 1.7003967 0.4060306 +H -0.2096222 0.3327519 -0.4533441 +C -0.0994293 -0.2159468 0.2082132 +C 1.4021698 -1.3088012 0.0221692 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2432533 -0.6997001 1.1760101 +O 0.6037092 0.5487871 -0.9642599 +H 0.2257431 -0.0261170 -0.6139742 +H 0.3933920 -1.2453294 -0.4902092 +H 0.0516759 1.5733226 1.1176995 +H -0.3480232 1.0158557 -1.0674432 +C -1.2970569 0.2879407 -0.4996773 +C 0.4219602 -0.0950134 -0.8220615 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8568931 -0.9238986 1.6021046 +O 1.7256353 -0.1021122 -0.9312357 +H 0.0323267 0.0327234 -1.6053247 +H 0.7006648 -0.7276864 0.1170142 +H 0.0057024 1.1459505 1.9203480 +H 0.1041970 1.3345274 -1.3506641 +C -1.9740188 0.3179578 -1.2803258 +C -0.0380018 0.8490607 -1.5860151 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5502346 -1.4248429 1.6140812 +O 1.7549954 0.1198369 -0.7676090 +H 0.5318296 1.2024585 -1.7698428 +H 0.9735709 -0.4622496 0.1144576 +H -0.2298656 0.1897110 1.1741569 +H 0.2550865 1.9969434 -1.1304597 +C -1.8250651 -0.6533132 -2.0600894 +C 0.3615638 1.0797176 -1.2671161 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2877031 -1.1593419 -0.2755293 +O 1.3057796 0.4427031 0.4468762 +H 0.6021214 1.9123939 -1.4370259 +H 0.5270339 -1.0572099 -0.5743928 +H -0.4612599 0.3633046 0.5419180 +H -0.2841830 1.0055459 0.0742599 +C -1.1168297 -1.8350742 -1.2957480 +C 0.9563472 0.6241167 -0.6469308 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0643207 0.1323701 -0.5323108 +O 0.3807506 -0.0694145 1.6319667 +H -0.2656901 1.5542245 -0.3733787 +H -0.1087136 -1.0328937 -0.1852933 +H 0.5440342 0.7684807 0.6089436 +H -1.4211175 0.0605252 0.9733150 +C -0.2736081 -1.9908238 -0.3641391 +C -0.0418375 0.6387335 -0.6887136 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.5005585 0.9326788 -0.8767942 +O 0.2010539 -0.8992731 1.4529712 +H -1.1263610 0.7896640 0.1660618 +H -1.4503744 -0.4942100 1.0648675 +H 1.3406086 0.8488977 1.0142511 +H -1.7489714 -0.3262978 1.1641337 +C -0.5171832 -1.2373486 -0.1583180 +C -0.8034011 0.5327130 -1.0710044 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0182303 0.8394596 -0.1809693 +O 0.3618198 -1.7995293 0.5321448 +H -1.7212196 0.0608328 -0.2122035 +H -1.5259471 0.5033046 1.4352162 +H 1.7106096 0.1215083 1.1882956 +H -1.0936195 -0.1035526 0.7469941 +C -0.7990400 -0.3128762 -0.7009786 +C -1.5659531 1.5020002 -1.4272438 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5729828 0.8685747 -0.4384390 +O 0.8325692 -1.8012966 0.5491548 +H -1.4126416 0.0721833 -0.8641540 +H -1.1018541 1.2822305 1.5983381 +H 1.4055739 -1.1789374 0.7000429 +H -0.7680211 0.1518915 0.4000714 +C -0.9605640 -0.2311960 -0.8095010 +C -1.3148327 1.6889287 -1.0813996 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6780787 0.2958559 -0.9734094 +O -0.0153443 -0.9755124 0.9091661 +H -0.8225852 0.4828704 -0.2483622 +H -0.5369338 1.1405236 1.1323865 +H 0.3521434 -1.3922438 -0.2450843 +H -0.3716704 0.0148793 0.5060633 +C 0.2197981 -0.6076273 -0.0338952 +C -0.9497034 1.2067605 0.2329207 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2066474 0.9395222 -1.7175329 +O -0.6876131 -0.0690540 1.4450778 +H -0.2013385 0.3113362 0.7282750 +H -0.4369348 0.8899932 0.4663733 +H 0.3105719 -1.2496453 -1.2773940 +H -0.5777111 -1.1192739 1.3574203 +C 1.1872869 -0.6694049 0.3990591 +C -0.3592473 -0.0347552 1.1568915 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3376650 1.5452191 -1.6596320 +O -1.5578997 -0.4469729 1.2659958 +H -0.7632755 -0.4235455 1.7150952 +H -1.2702605 0.4029163 0.5074580 +H 0.4909008 -0.8235871 -1.0939591 +H -0.7605968 -2.0060595 1.9802900 +C 1.3298933 -0.2459578 1.5370123 +C -0.6578296 -0.4062544 1.3887762 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6786304 1.8743067 -0.9158503 +O -1.6266055 -1.0792136 0.1367552 +H -0.8245199 -1.4069413 1.4644456 +H -1.2490662 0.9445325 0.8059148 +H 0.9200240 -0.2004335 -0.6961877 +H -0.5623242 -1.4805531 1.0554436 +C 1.2769725 1.1724083 1.6808403 +C -1.4580836 -0.0921900 0.5738260 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5899683 1.0012674 -0.0565171 +O -0.9639830 -0.7328068 -0.6483526 +H -0.9134673 -1.9223541 1.0543021 +H -0.9424487 1.4697128 0.9652882 +H 0.4224407 -1.0918303 -0.8580263 +H 0.6563000 -0.8725663 -0.0360744 +C 0.3714742 1.5647361 0.7066745 +C -1.0177444 0.0615400 0.3878716 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.2273312 0.0433900 0.0880919 +O -0.3842986 -0.1291182 -0.6899120 +H 0.2948377 -1.3376799 0.4353416 +H 0.4461479 1.4134602 0.3335715 +H -1.0225794 -1.1704396 -1.0714611 +H 1.5322570 -0.1831839 -0.6211285 +C 0.8026207 1.4111384 0.3705615 +C 0.0363965 -0.1165774 0.9911171 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9690940 -0.5862266 0.1370292 +O -0.9124996 0.8698825 -0.4936686 +H 1.2315118 -0.5971858 0.6685220 +H 1.0023341 0.5309283 -0.9330666 +H -1.6003473 -0.8771915 -1.4998794 +H 1.6621279 -0.2865864 -0.0056415 +C 1.0772062 0.4525878 0.8415475 +C 0.6652795 -1.2644401 1.6412617 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5492038 -0.1328330 -0.0525317 +O -1.4230442 1.4040091 -0.5276416 +H 1.0315024 -0.3904689 1.1166537 +H 0.8520085 -0.6696437 -1.3427597 +H -1.2620078 0.3019338 -1.3194249 +H 0.6918619 -0.6456859 0.2675771 +C 1.2919074 0.5402687 1.3886652 +C 0.7913843 -1.9159094 1.8572006 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4367264 -0.2042137 0.3910068 +O -0.9303200 0.8613615 -0.7800650 +H 0.9046430 -0.7479625 1.0228080 +H 0.4447546 -0.9328326 -1.1596262 +H -0.7455468 0.9963614 -0.4281593 +H 0.6299100 -0.7570587 -0.5204062 +C 1.0159131 0.9048828 1.3214956 +C 0.8655659 -1.4868767 1.0340351 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9713386 -0.7875846 1.0425123 +O -0.0384208 0.7020570 -1.6411210 +H 0.4123800 -0.8326839 0.2039005 +H 0.5598366 -0.2849630 -0.3995816 +H -0.4235342 1.1554317 0.5361197 +H 0.7983468 0.1348617 -1.7157797 +C -0.3810143 1.2455417 0.0567376 +C 0.5952595 -0.7377612 -0.1571824 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5590753 -1.1612840 1.9047607 +O 0.7777520 0.5438626 -1.7179840 +H 0.3548521 -0.4496136 -0.9169214 +H 1.3732243 -0.3069763 -0.5059936 +H -0.9204235 0.6260462 0.9188606 +H 1.4159773 1.4262458 -1.9227415 +C -1.1241900 0.7346087 -0.7224348 +C 0.5810191 -0.2712673 -0.6595421 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3111127 -1.8195582 1.4277857 +O 1.2288494 1.2251579 -1.3340402 +H 1.5592175 0.5854121 -1.2808330 +H 1.6581694 -0.4560148 -0.9551308 +H -1.3903452 0.4420315 0.2945649 +H 1.2634373 1.8217864 -1.7185475 +C -0.9277010 0.1492360 -0.9347010 +C 1.5803367 -0.2227463 0.0081012 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7603939 -1.5108902 0.7536016 +O 0.8918155 1.4098919 -0.1869497 +H 1.6420228 1.3339817 -0.7479307 +H 1.5008635 -1.1744341 -1.6669120 +H -1.4845102 1.1871445 0.2656633 +H 0.6314037 1.1900058 -0.7558672 +C -0.2563810 -1.0901548 -0.6975542 +C 1.5203890 -0.5244620 -0.0686247 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0586367 -0.8710759 0.2985495 +O 0.3103077 1.1663297 0.1628494 +H 0.6985794 1.1926935 -0.2966340 +H 0.2191453 -1.9963534 -1.2144739 +H -0.1678384 1.4367327 0.6728155 +H -0.6451184 0.3388151 0.0730150 +C -0.6746792 -0.7324334 -0.4386675 +C 1.0900198 -0.6082660 -0.3015870 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5781539 -0.2038466 0.7559792 +O 0.7626902 -0.1902172 -0.2052254 +H -0.1015447 0.7362544 -0.8418938 +H -0.3625695 -1.1413626 -0.2766592 +H 0.7367857 1.5811580 1.5692849 +H -1.3358294 0.4329000 -0.2474500 +C -1.0821854 -0.6980937 -0.5611676 +C 0.0418841 0.3081463 -1.2621942 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0961959 -0.4061207 0.9598745 +O 1.2370066 -0.9272032 -0.0588203 +H -0.9873706 0.3245677 -1.4146538 +H -0.4070440 -0.2978309 0.8855601 +H 1.1720832 1.1567332 1.7837078 +H -0.7897580 0.8184331 -0.4854651 +C -1.7633571 -0.6576445 -1.4106961 +C -0.3944313 1.2882068 -1.9191680 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1557189 -0.7013027 0.4257581 +O 1.7676921 -0.8044378 0.1050148 +H -0.5312127 0.7288445 -1.6579929 +H 0.1475941 0.3449279 0.9089570 +H 0.5488671 -0.1818293 1.0174970 +H -0.4211007 1.3176397 -0.4065135 +C -1.7825004 -0.9052605 -1.9939655 +C -0.6438816 1.6634837 -1.5350570 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6450934 -0.2699230 -0.6899225 +O 1.2132305 -0.2131791 1.1781615 +H 0.0516552 1.5595255 -1.0478594 +H 0.2942635 0.0276372 0.4335010 +H 0.3190935 -0.5076188 0.3634741 +H -0.7713539 0.9487457 0.4912895 +C -0.6281732 -1.3189337 -0.8085213 +C -0.2583429 0.9442315 -1.0794691 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7953617 0.4831596 -1.3550760 +O 0.2046205 -0.4989441 1.9466939 +H -0.4663130 1.2497278 0.1197186 +H -0.5615803 -0.2436588 0.3441809 +H 0.5399790 -0.0883238 0.2997505 +H -1.4115863 -0.3260142 1.4298924 +C 0.3048323 -1.8414063 -0.4180331 +C -0.1772480 0.5121754 0.0820873 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7755709 1.2239571 -1.5662320 +O -0.5359747 -0.8592982 1.7552152 +H -1.2563003 0.3358609 0.8342479 +H -1.5069050 0.1272951 1.4505675 +H 1.6345253 -0.1833685 0.4811103 +H -1.8909688 -1.2686616 1.4557013 +C 0.4812196 -0.9772470 0.2524484 +C -1.1154917 0.4620162 -0.4285376 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1264602 1.7463022 -0.8544467 +O -0.6263997 -1.5818209 0.6240763 +H -1.5810668 -0.7125595 0.5277568 +H -1.9059445 1.0813952 1.6484764 +H 1.9783292 -0.3448587 0.5277424 +H -1.1734713 -1.1935191 0.9047970 +C 0.0859660 0.1673167 0.5527477 +C -1.7158427 0.9484278 -0.4327545 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4391721 1.1729327 -0.4476428 +O -0.0759293 -1.6999732 0.3759441 +H -1.7373794 -0.7972906 0.3580642 +H -1.1370137 1.9367103 1.6377652 +H 1.2792961 -1.3840522 0.2657202 +H -0.2661269 -0.3352682 0.4391342 +C -0.0747436 0.6008065 -0.1229142 +C -1.7005188 1.2203764 -0.1801929 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1331728 0.6663955 -0.9722964 +O 0.0250987 -0.7754599 0.6287541 +H -0.3721756 -0.5207402 0.3218379 +H -0.2285433 1.9167663 0.8014963 +H 0.2836751 -2.0948997 -0.7892235 +H 0.4887291 -0.7088296 0.5411841 +C 0.8316860 0.2571267 0.2211431 +C -0.8423719 0.5946225 0.5383679 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5970187 0.7052007 -1.0966973 +O -1.0438840 0.1113601 0.6080154 +H 0.1562128 -0.4901131 1.1768609 +H -0.1766356 1.0056494 -0.0972328 +H -0.5753306 -1.5364902 -1.6812462 +H 0.2909137 -1.2111982 0.8310064 +C 1.5485139 -0.1818896 1.1813183 +C -0.0833430 -0.6655237 1.4981243 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7299418 1.4239035 -1.2705941 +O -1.7666584 0.3042970 0.5181550 +H 0.1388622 -0.7923792 1.8150990 +H -0.5843138 0.2817117 -0.0529853 +H -0.3801938 -0.4657953 -1.3691805 +H -0.0354367 -1.3275305 1.2297598 +C 1.7896598 0.1998010 1.8362084 +C 0.0262840 -1.3098391 1.6370447 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2635684 1.2220758 -0.5400159 +O -1.8052025 0.2315126 -0.0032961 +H -0.3031089 -1.7044786 1.6040150 +H -0.7196556 0.5398743 -0.1087711 +H 0.0853007 -0.0154317 -0.8401633 +H 0.1846206 -1.7291761 0.5775250 +C 1.3292466 1.2860972 1.7552963 +C -0.4314839 -0.8930004 1.1027294 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0707861 0.5779635 0.6573149 +O -0.6205719 0.1138868 -1.3972807 +H -0.1458768 -1.8112242 0.6147703 +H 0.0601628 0.7198387 0.2785008 +H -0.2451304 -0.1412662 -0.4574745 +H 1.0823074 -0.5129944 -0.7132279 +C 0.4385764 1.9887547 0.6710665 +C -0.3854041 -0.6335781 0.2381251 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.9281391 -0.7477287 0.9975347 +O -0.1948126 0.2966826 -1.6935802 +H 0.6749969 -1.4482311 0.1873421 +H 0.6555523 0.7546813 -0.2338015 +H -1.2079207 -0.5660571 -0.5970090 +H 1.7405734 0.2843605 -1.1952307 +C 0.1597035 1.4575345 0.2434607 +C 0.3980009 -0.4954670 0.5113425 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8140098 -1.0848152 0.9141354 +O 0.0147198 1.4685128 -1.2074193 +H 1.5003269 -0.3592289 -0.0970350 +H 1.5430177 0.0013647 -1.3196238 +H -1.9517049 -0.2017713 -1.0310762 +H 1.6119306 0.4966696 -1.2475679 +C 0.3961826 0.7904514 0.3410031 +C 1.1748139 -0.9941006 0.8929956 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7385738 -0.9724873 0.2633143 +O -0.2902630 1.8291338 -0.5692894 +H 1.5824880 0.1056243 0.5638110 +H 1.3395543 -1.4008530 -1.7447295 +H -1.5894256 0.6937215 -0.6227998 +H 1.1479350 0.1862108 -0.4657864 +C 0.7481654 -0.2103581 0.3558068 +C 1.7564595 -1.8557595 1.1627116 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3779697 -0.6770741 0.4894512 +O -0.1982543 1.3161777 -0.8169810 +H 0.9872465 0.1108995 0.4225408 +H 0.8070788 -1.7476623 -1.5675912 +H -0.6263971 1.6296135 0.0832607 +H 0.2343299 -0.1128223 -0.7721580 +C 0.2695429 0.2621754 0.4521020 +C 1.1885096 -1.3613800 0.6641891 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9944034 -0.3061042 1.5129493 +O 0.4783959 0.5260998 -1.2725967 +H 0.4535128 -0.2290154 -0.3818853 +H 0.6713919 -1.1022806 -0.5301846 +H -0.3782993 1.7073026 1.1770120 +H 0.0983143 0.7350693 -1.2027480 +C -0.8729340 0.9004848 -0.3487232 +C 0.4061991 -0.3769958 -0.8005330 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0247434 -1.1619065 1.8399058 +O 1.5310787 0.2272553 -1.6525324 +H 0.3873371 0.0491793 -1.3579871 +H 0.7047060 -0.5287130 -0.0380273 +H -0.3539681 0.9829273 1.5942112 +H 0.5504452 1.4995641 -1.5973183 +C -1.9257620 0.5622670 -1.2107296 +C 0.5812341 0.4794097 -1.3621717 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1052951 -1.9000345 1.6487115 +O 1.7863619 0.6553843 -0.5873146 +H 0.8273595 0.9278385 -1.8077701 +H 1.1275839 -0.7227739 -0.5809097 +H -0.8140640 0.4526530 0.8638194 +H 0.6062496 1.8960062 -1.1814929 +C -1.6251501 -0.6047208 -1.7217770 +C 1.1245744 0.9382737 -1.0053270 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1392621 -1.4961774 0.1505310 +O 1.5617729 0.8108658 0.3318632 +H 1.1452383 1.5194794 -1.3985953 +H 0.9815778 -0.9948719 -1.0176875 +H -0.7351811 0.6742369 0.4397430 +H -0.2502144 1.5671435 -0.2677490 +C -0.8612629 -1.6897460 -1.2557924 +C 1.1340641 0.2286887 -0.8413012 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1423099 -0.4614241 -0.2393844 +O 0.6953354 0.3711324 1.1446558 +H 0.1348547 1.5745631 -0.4740423 +H -0.0374671 -1.3223132 -0.4458225 +H 0.1961520 1.3939509 0.6812025 +H -1.4851583 0.5052535 0.5657657 +C -0.4019887 -1.5602831 -0.7991104 +C 0.4234570 0.0341904 -0.4605707 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2028445 0.3820305 -0.3558755 +O 0.0386914 -0.6849789 0.7800099 +H -0.9252990 0.4387362 -0.6216806 +H -1.0372604 -0.7635260 0.7647351 +H 1.2109255 1.2755972 1.3522649 +H -1.6789204 0.1901395 0.7336776 +C -0.8848827 -1.1547312 -0.3907466 +C -0.8470683 0.7180455 -1.2664501 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8046309 0.6887855 0.4160578 +O 0.8888371 -1.6618338 0.4649739 +H -1.5245793 0.3082078 -0.8748994 +H -1.0916267 0.1149778 1.6244246 +H 1.7539378 0.5806703 1.6707415 +H -1.2672487 0.2224679 0.1600090 +C -1.1923620 -0.3656957 -0.9783236 +C -1.1573724 1.6173293 -1.7248763 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5102171 -0.0122803 -0.0552776 +O 1.1770167 -1.5762609 0.3534249 +H -1.3107555 0.1748422 -1.0724522 +H -0.8304791 1.1127903 1.6165622 +H 1.3286649 -0.7455527 1.0739857 +H -0.1809352 0.5452666 0.2587285 +C -1.1696045 -1.0000580 -1.1776653 +C -0.9795508 1.7094871 -1.4421338 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8604149 0.0700556 -0.8724583 +O 0.5891961 -0.9694071 1.1390336 +H -0.5359461 0.6001222 -0.3803042 +H -0.3984273 1.0146343 0.7930076 +H 0.7348667 -1.3275977 0.1396163 +H -0.6277374 -0.0300450 0.7816908 +C -0.1511731 -1.0099869 -0.6511056 +C -0.8710871 1.2583946 -0.1915559 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3866624 0.7783668 -1.6380762 +O -0.3244648 -0.3639094 1.8402364 +H -0.5649697 0.5799550 0.9445226 +H -0.8161412 0.3748005 0.3915647 +H 0.6951577 -1.1771552 -0.8282970 +H -0.9181445 -0.7633225 1.5398228 +C 0.7631568 -1.1650521 0.1967044 +C -0.7022656 0.2550661 0.5195497 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7146519 1.8020618 -1.7917945 +O -1.1860900 -0.7153410 1.5228402 +H -0.8366808 0.1875240 1.2780146 +H -1.5537098 0.3404056 0.6222945 +H 1.1003946 -0.5205358 -0.6519563 +H -1.1833061 -1.6589876 1.8069905 +C 1.1581021 -0.3523721 1.0149335 +C -0.9241062 -0.1532664 0.8601355 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8485861 1.9505792 -1.2718639 +O -1.1876676 -1.2638914 0.6378503 +H -1.5018603 -1.2944384 1.4879179 +H -1.7188850 1.2301459 1.4362708 +H 1.3645349 -0.4434368 -0.0562384 +H -0.7178608 -1.5761098 1.2249433 +C 0.6880694 0.6320112 1.2742049 +C -1.6130908 0.5980123 0.0687820 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1624366 0.8804780 -0.5584737 +O -0.5240508 -1.3652146 -0.3749444 +H -0.9912529 -1.4336012 0.5579703 +H -0.7703551 1.4376058 1.4614105 +H 0.5927451 -1.2639130 -0.0849827 +H 0.4752050 -0.8820696 0.0506391 +C 0.5779119 1.1743707 0.6346365 +C -1.1251550 0.6278653 0.4231241 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8469290 0.2028403 -0.1545845 +O -0.6481472 -0.4337659 -0.4193856 +H 0.1161508 -1.0269886 0.6980279 +H 0.0060726 1.3585154 0.5962223 +H -0.5672613 -1.8516008 -1.2330193 +H 1.0127451 -0.4292786 -0.2673171 +C 0.6350763 0.9429807 0.3150501 +C -0.5057173 0.0590245 0.9212420 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4800710 -0.0179805 -0.4663523 +O -0.6269253 0.6735830 -0.1222171 +H 0.9704703 -0.2610671 1.0060011 +H 0.4457894 0.7426644 -0.8761692 +H -1.2305476 -1.4092454 -1.5807498 +H 1.0860180 -0.6588127 0.1636734 +C 1.1881320 0.4524824 0.9293931 +C 0.4624059 -1.1182539 1.6926980 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5518477 0.2581966 -0.5912957 +O -1.6959869 1.3530533 0.0126274 +H 1.2895098 -0.8752209 1.6611059 +H 0.3696355 -0.3145306 -1.1515760 +H -1.0547160 -0.0545650 -1.6177699 +H 0.8274148 -1.2662219 0.7438968 +C 1.6849325 0.6085566 1.6574259 +C 0.9987391 -1.7278167 2.0409667 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2465913 0.2045023 0.1439176 +O -1.2791357 0.9728041 -0.6800406 +H 0.3307410 -1.2083534 1.4609924 +H -0.0274206 -0.4827134 -0.7020714 +H -0.6953489 0.6843865 -0.7761019 +H 0.4087115 -1.0084642 -0.0200968 +C 0.9640071 1.0265233 1.5342228 +C 0.4435548 -1.4254712 1.2070125 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1417153 -0.1666233 0.9135762 +O -0.5966661 0.6923722 -1.7957744 +H 0.4903281 -1.2577371 0.1957594 +H 0.6109876 -0.1992773 -0.6861520 +H -0.3907201 0.7504426 -0.1471937 +H 0.9027232 -0.0480943 -0.9980194 +C -0.2355597 1.7912370 0.5504695 +C 0.3420647 -0.7256626 0.1933220 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8607287 -1.3807609 1.4548252 +O 0.2587977 0.7860843 -1.8240690 +H 0.7697578 -0.6706460 -0.8600226 +H 1.2833758 0.1744614 -0.2785969 +H -0.8429003 0.2134011 -0.0839966 +H 1.6078370 1.0366536 -1.9707705 +C -0.6952917 1.2728133 -0.4950685 +C 0.7694115 -0.1039861 0.0073797 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.7339269 -1.7753381 1.4532711 +O 0.8765785 1.5170822 -1.2964018 +H 1.4942242 0.1380389 -1.0092835 +H 1.7126621 -0.2814601 -1.2864803 +H -1.5330282 0.5396848 -0.0803492 +H 1.5474848 1.2290594 -1.6154046 +C -0.2415490 0.2922705 -0.2993538 +C 1.6272368 -0.5795463 0.1536037 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6834996 -1.4658782 0.8976216 +O 0.3863425 1.7061646 -0.3053635 +H 1.6547853 0.8991827 -0.4814123 +H 1.5140899 -1.5545825 -1.6014451 +H -1.5106321 0.8070680 -0.4996425 +H 0.6658145 0.9479418 -0.6479130 +C -0.2226274 -0.5747369 -0.4213305 +C 1.6548943 -1.2744503 0.5131433 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1311587 -0.5835040 0.5852653 +O 0.3596426 1.3821731 -0.1918561 +H 0.8822906 0.7915698 -0.3750549 +H 0.5471759 -2.1340598 -1.6421842 +H -0.3799466 1.5240624 0.6990777 +H -0.5330441 0.3289278 -0.3669237 +C -0.5438637 -0.6500075 -0.1433715 +C 1.1768746 -0.8222776 -0.5109986 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0411786 -0.4044819 0.7723558 +O 0.8196977 0.3074156 -0.5422831 +H -0.0265956 0.4980805 -0.8711789 +H 0.1272178 -1.4232234 -0.4091426 +H 0.3831309 1.9319126 1.3945368 +H -0.6505845 0.6131840 -0.7204740 +C -0.8492391 -0.2303860 -0.6977341 +C 0.3549586 0.3720067 -1.2135763 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3931995 -0.6230908 1.2553659 +O 1.1589657 -0.6057407 -0.6508441 +H -0.3842848 0.4141844 -1.7794486 +H 0.3543795 -0.4267745 0.4222879 +H 0.8627521 0.8797271 1.8684710 +H -0.2296062 1.3323528 -1.1144333 +C -1.9347343 -0.3317051 -1.8344565 +C -0.1773147 1.0585121 -1.7484913 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3019021 -1.4112871 1.1276639 +O 1.9612660 -0.3660103 -0.2416735 +H 0.2139609 1.0882297 -1.8719113 +H 0.5440567 -0.1383790 0.3883209 +H 0.1328126 -0.1517818 1.5335815 +H 0.0148149 1.5951762 -0.7872361 +C -1.5167712 -0.8253293 -1.7964454 +C 0.1667975 1.4925930 -1.7116245 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4591471 -0.6047315 -0.2698535 +O 1.3607389 0.1529852 0.8953382 +H 0.2150014 1.6542912 -1.5775315 +H 0.4434420 -0.3126887 0.0896820 +H 0.0927055 0.0926063 0.4560616 +H -0.3771041 1.1722182 0.3524785 +C -0.8466296 -1.6680927 -1.5088718 +C 0.0531579 1.0379646 -0.7291381 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1909351 0.2845704 -1.2143565 +O 0.3313368 -0.1124673 1.4465709 +H -0.2556980 1.5559470 -0.1885392 +H -0.5240429 -0.6687151 0.0440621 +H 0.6667393 0.2670406 0.3092045 +H -1.2192507 -0.0876785 1.3101425 +C -0.1719318 -1.9357474 -0.1654005 +C 0.0907793 0.6346854 -0.3978995 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7420453 1.2371157 -0.9414785 +O -0.3096489 -1.1324584 1.6451840 +H -1.1669587 0.4971193 0.4172986 +H -1.5518227 -0.1956172 0.8780386 +H 1.6542070 0.3610976 0.5275686 +H -1.8488783 -0.9990707 1.7141900 +C -0.1720937 -1.3002554 0.1069975 +C -1.0780135 0.9380445 -0.5918829 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1874381 1.3692922 -0.8864220 +O 0.0102872 -1.8976284 1.1606813 +H -1.9400614 -0.4688661 0.2730631 +H -1.6123811 0.8165676 1.5412417 +H 1.8492405 -0.7170007 0.9364314 +H -1.5068697 -0.5440463 1.0601151 +C -0.2296641 -0.1315961 0.0465811 +C -1.7424616 1.6044991 -1.2812863 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5173902 0.8647859 -0.7931301 +O 0.2997976 -1.7587417 0.4894596 +H -1.3290140 -0.6671241 0.0521818 +H -1.3988974 1.5023804 1.9490973 +H 1.1925270 -1.4731217 0.5139416 +H -0.3785206 -0.3634061 0.3004443 +C -0.1199933 0.4448465 -0.8956534 +C -1.4613890 1.5991451 -0.6745877 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4190374 0.3683540 -0.7313471 +O -0.0532454 -0.9287927 0.7629358 +H -0.6015167 -0.3865681 -0.1397860 +H -0.3964714 1.6441732 0.9908291 +H 0.4284821 -1.9438350 -0.7124316 +H -0.0512300 -0.3400490 0.7779882 +C 0.3721641 -0.1351151 -0.0215593 +C -0.8228078 1.0606670 0.3587895 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7436430 0.6519147 -1.4197065 +O -0.9931296 -0.0753382 1.1236655 +H 0.0868975 0.1870746 1.2633966 +H -0.5583569 0.8412607 0.3470223 +H -0.3372688 -1.3170202 -1.4374171 +H 0.1896122 -1.0369678 1.3370131 +C 1.4546580 -0.3085538 0.9512055 +C -0.2124371 -0.3013537 1.1395448 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0855064 1.5717570 -1.6259128 +O -1.8148098 -0.3163943 1.0324583 +H -0.2421640 -0.8118544 1.7416554 +H -1.1189277 0.4905355 0.3869216 +H 0.4799399 -0.7462960 -1.2146281 +H -0.5590837 -1.9698116 1.7492458 +C 1.7988656 0.3668652 1.5182273 +C -0.3395609 -0.8966122 1.3689332 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2140435 1.6251249 -0.9182578 +O -1.5235220 -0.5566392 -0.0875941 +H -0.5356772 -1.6237635 1.6183762 +H -0.9073393 0.7928994 0.7449420 +H 0.5603105 -0.2356660 -0.7232085 +H 0.2364341 -1.6555350 0.6576552 +C 1.1757083 1.2288331 1.6314761 +C -0.9852429 -0.9134420 0.6411023 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9624196 1.1509308 0.2885058 +O -0.8216637 -0.4731236 -0.9345242 +H -0.5873319 -1.9619044 0.7446877 +H -0.5684195 1.3704863 0.6774277 +H 0.2864502 -0.5968325 -0.5981911 +H 0.9094435 -0.8142507 -0.3058475 +C 0.3052033 1.6733442 0.7579831 +C -0.9313631 -0.2363871 0.5441667 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1810960 -0.1243595 0.7643245 +O -0.2941963 -0.0710163 -1.1818381 +H 0.5110372 -1.3040677 0.4318453 +H 0.7074154 1.1095737 -0.1100605 +H -0.9927351 -0.9331368 -0.6938164 +H 1.8635320 0.1510913 -0.8771066 +C 0.1604303 1.3820122 0.4670491 +C 0.0583370 -0.2807773 0.9957918 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.2833166 -1.0294934 0.4108720 +O -0.2699152 1.4807902 -0.6831281 +H 1.5626717 -0.2420996 0.1045342 +H 1.1143219 0.0799711 -1.0977525 +H -1.9662825 -0.5065311 -1.6393016 +H 1.6968279 0.1471621 -0.6507992 +C 0.6706358 0.9642027 0.6800231 +C 1.3807640 -1.3673202 1.4622603 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9113853 -0.1977902 0.0088646 +O -0.6601240 1.8460553 -0.4974744 +H 1.7598798 -0.1701157 0.6547073 +H 1.3732203 -0.7372430 -1.9953916 +H -1.8785577 0.5216206 -1.1768219 +H 0.9250743 -0.4603373 -0.3178547 +C 1.2353883 0.1708302 1.1592941 +C 1.4427196 -1.7232263 1.1423132 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3361673 -0.2450458 0.8142315 +O -0.7276564 1.2116372 -0.8957012 +H 1.0479121 -0.2951846 0.7548632 +H 0.5245376 -1.2048556 -1.1801154 +H -0.7890170 1.7586395 -0.1875902 +H 0.4269074 -0.2245800 -0.5421216 +C 0.6142699 0.6973796 1.2948146 +C 0.9360288 -1.6610405 0.5337039 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0467338 -0.1785194 1.3623782 +O 0.2423804 0.6853383 -1.5039037 +H 0.5651678 -0.4475705 -0.2654052 +H 0.4499284 -0.8009079 -0.6662475 +H -0.2289620 1.3140751 0.9541202 +H 0.6134349 0.5073391 -1.5490774 +C -0.8199461 1.1758293 0.0057083 +C 0.6829866 -0.6257859 -0.5782818 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4165174 -1.3180631 1.7468296 +O 0.9193214 0.5033461 -1.7845026 +H 1.0589583 -0.2247108 -1.1227990 +H 1.1163956 -0.5633173 -0.5095042 +H -0.6380501 1.0454573 0.8921824 +H 0.8300988 1.6323894 -1.8402368 +C -1.2942716 0.6985966 -1.0654658 +C 0.7724597 0.3344485 -1.1011349 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3709509 -1.9721392 1.4018654 +O 1.7611467 1.0389357 -1.1113304 +H 1.2064293 0.7160844 -1.5575865 +H 1.5354422 -0.9059637 -0.9870604 +H -1.3910719 0.6581896 0.8234405 +H 1.1260178 1.9930932 -1.6579078 +C -1.4158206 -0.1453063 -1.5008322 +C 1.3635489 0.1762324 -0.4232664 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2927784 -1.4946289 0.6437816 +O 1.3489500 1.3364138 -0.0993081 +H 1.1979120 1.6416980 -0.9330872 +H 1.2407212 -1.2944665 -0.9455137 +H -0.8633999 0.8674388 0.2141261 +H 0.1264445 1.2163006 -0.3910377 +C -0.6758455 -1.0303485 -0.8574823 +C 1.2918280 -0.2846803 -0.0700251 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5003011 -0.4075644 0.1235466 +O 0.7656595 0.7255431 0.5153072 +H 0.3658160 1.5004053 -0.7138214 +H 0.4546904 -1.6224716 -0.7629811 +H 0.1817866 1.4814208 0.5365539 +H -1.0201783 0.3384242 0.4342835 +C -0.4100986 -1.5587949 -0.4274939 +C 1.0617525 -0.1251553 -0.6712747 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8604611 0.2155844 0.0601246 +O 0.7164393 -0.5806514 0.2778941 +H -0.5752391 0.7601760 -0.2915046 +H -0.7786720 -0.9824698 0.0905259 +H 0.9187993 1.3097350 1.5231206 +H -1.3555255 0.3097894 0.2520286 +C -1.2141665 -0.6146608 -0.6895859 +C -0.2729311 0.8484888 -1.3782250 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5330938 -0.1801454 0.4907147 +O 1.2266375 -1.2387364 0.2410958 +H -1.0540893 0.6645567 -1.0290445 +H -0.6620961 0.1134355 0.9103902 +H 1.3128418 0.6272026 1.7457838 +H -1.2253371 0.8625994 -0.0724140 +C -1.5413349 -0.5493330 -1.0751171 +C -0.8263534 1.7163959 -1.8477895 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2131530 -0.2590800 0.2122160 +O 1.3368219 -1.0524719 0.4455107 +H -1.0238260 0.6922551 -1.2525084 +H -0.2352097 0.7049239 1.1624181 +H 0.9431500 -0.4969876 1.4585495 +H -0.6387256 0.9497416 0.1699989 +C -1.3823067 -0.8047933 -1.6596866 +C -0.8932126 1.7847807 -1.1921596 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6131311 0.2033913 -0.5874662 +O 0.8831734 -0.6243526 1.2555391 +H -0.5464988 1.1711853 -1.0662105 +H -0.4743239 0.8934216 0.9936726 +H 0.6229437 -0.8870271 0.1356536 +H -0.7835248 0.3460584 0.7338168 +C -0.4220075 -1.5049994 -0.6912299 +C -0.1811760 0.9981447 -0.4546667 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.5235527 0.8806346 -1.7666842 +O -0.0550901 -0.3437341 1.7210729 +H -0.6585579 1.0223216 0.5739356 +H -0.9119406 -0.0206593 0.4787831 +H 0.8938934 -0.7701870 -0.5166700 +H -1.0187324 -0.6236560 1.5097581 +C 0.6363587 -1.5274298 0.1451302 +C -0.7829842 0.4009164 0.2085029 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7181344 1.5985483 -1.7492097 +O -1.0817610 -1.3138851 1.7972969 +H -1.3004287 0.0099903 1.1406988 +H -1.7033810 0.3346729 1.0062083 +H 1.4447161 -0.4052237 0.0252580 +H -1.5872644 -1.6113354 1.6883209 +C 0.8047783 -0.7908758 1.0901447 +C -1.0149426 0.4070853 0.3289465 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2629695 1.8866493 -0.9640872 +O -0.8802707 -1.4494147 0.9464464 +H -1.8119874 -0.6307631 0.9871313 +H -1.6951798 0.9127149 1.5175263 +H 1.6639723 -0.2692188 0.4095702 +H -0.8660567 -1.5286498 1.3052215 +C 0.6495080 0.4147785 0.7416874 +C -1.8215014 0.5748040 -0.3458140 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3610434 1.0571224 -0.2663208 +O -0.4074794 -1.3850950 0.1700926 +H -1.2107548 -1.1267799 0.5978905 +H -1.0788191 1.7862514 1.6250548 +H 1.0180783 -1.2520495 0.0784522 +H 0.0659911 -0.8745595 0.3049582 +C 0.1910449 0.9119288 0.6007545 +C -1.4342257 0.8324254 0.0624008 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3025508 0.4633405 -0.3353537 +O -0.3351696 -0.6539470 -0.0813268 +H -0.6686975 -0.9236443 0.6064592 +H -0.2851944 1.7292057 0.8364487 +H -0.0688186 -1.7861505 -0.9144556 +H 0.9062680 -0.5734218 0.2316330 +C 0.7043009 0.8465302 0.4484989 +C -0.6845990 0.2553111 0.8048563 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0334234 0.2530944 -0.7775362 +O -0.9437569 0.5545529 0.2988881 +H 0.3320483 -0.3246793 1.0024401 +H 0.4272283 0.9574360 -0.2877214 +H -0.8148184 -1.6368515 -2.0647411 +H 1.0920556 -1.0672274 0.6899705 +C 1.6315535 0.2514842 0.7721142 +C 0.0083236 -0.8210028 1.7346789 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3148284 0.9229111 -1.0763557 +O -1.7889955 0.8983294 0.1081040 +H 0.5021736 -0.7533018 1.8388998 +H -0.3812315 0.0833265 -0.5959141 +H -0.7681052 -0.5366327 -1.7011121 +H 0.6265616 -1.4315494 0.9954134 +C 1.9019146 0.4012540 1.7370764 +C 0.4309384 -1.6616717 1.8441383 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2504394 0.6953222 -0.2055912 +O -1.6814802 0.5180409 -0.4944392 +H 0.2168327 -1.5169911 1.7088664 +H -0.1895911 0.0095249 -0.6235367 +H 0.0830346 0.2349796 -0.6728174 +H 0.4341659 -0.9479029 0.0789343 +C 1.3101736 1.3728879 1.8234092 +C 0.2425606 -1.6497603 0.8667962 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3108246 0.1224707 0.9026331 +O -1.0702478 0.5023751 -1.6716655 +H -0.2175217 -1.4583423 0.7437070 +H 0.2964391 0.1308288 -0.1175593 +H -0.0224283 0.2786104 0.0810262 +H 1.0180947 -0.2456055 -0.7968132 +C -0.0272026 1.7923815 0.8062948 +C -0.1314426 -0.9351668 0.2703406 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8315582 -0.8784141 1.3146838 +O 0.0687707 0.4410072 -1.9165395 +H 0.9268031 -1.1294697 -0.4956662 +H 0.9416750 0.4968219 -0.1876359 +H -0.8795791 -0.1778132 -0.1920935 +H 1.8532593 0.5708800 -1.7157726 +C -0.3962805 1.4705785 -0.3586388 +C 0.5816487 -0.5834281 0.0031508 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8250710 -1.3846890 1.0922409 +O 0.2389077 1.3630455 -1.2074575 +H 1.7857204 0.2680437 -0.5407524 +H 1.8520482 -0.3772201 -1.0552988 +H -1.6169127 -0.1984373 -0.7847889 +H 1.6310925 0.8266354 -1.5431967 +C -0.0896928 0.6898756 -0.2905962 +C 1.5031612 -0.8978390 0.7055317 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0042677 -1.5330882 0.6869379 +O -0.1599580 1.9135772 -0.4297965 +H 1.6572421 0.7101790 -0.5637217 +H 1.6701256 -1.7631753 -2.1998553 +H -1.7357552 0.9014197 -0.4864991 +H 0.6593977 0.5747198 -0.9059321 +C 0.2347393 -0.1122773 0.0461081 +C 1.7892307 -1.2206993 0.5956596 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3555306 -0.4461902 0.6398616 +O -0.1135956 1.4909739 -0.5167787 +H 1.1926593 0.6737259 0.0150461 +H 0.6048534 -1.8275590 -1.3948238 +H -0.7568775 1.6577745 0.2705934 +H -0.1562363 0.2615284 -0.6137518 +C 0.1402988 -0.3314897 0.0816053 +C 1.3044474 -1.2637092 0.1252894 diff --git a/tests/data/vacf/traj_2.chrg b/tests/data/vacf/traj_2.chrg new file mode 100644 index 00000000..d75cf34a --- /dev/null +++ b/tests/data/vacf/traj_2.chrg @@ -0,0 +1,1650 @@ +9 + +X 0.0000000 +O -0.7884483 +O -0.8567477 +H 0.3608252 +H 0.4976864 +H 0.3680930 +H 0.4875198 +C -0.0273313 +C 0.0681565 +9 + +X 0.0000000 +O -0.8508885 +O -0.8519428 +H 0.3443923 +H 0.4580482 +H 0.3626638 +H 0.4582103 +C -0.0085934 +C 0.1064391 +9 + +X 0.0000000 +O -0.7800152 +O -0.8684795 +H 0.3213989 +H 0.4857022 +H 0.3318007 +H 0.5013466 +C 0.0350560 +C 0.0793264 +9 + +X 0.0000000 +O -0.7824167 +O -0.8295168 +H 0.2857399 +H 0.4747066 +H 0.3873328 +H 0.4897038 +C 0.0400044 +C 0.0894222 +9 + +X 0.0000000 +O -0.7584542 +O -0.8137998 +H 0.3242046 +H 0.5064492 +H 0.3684703 +H 0.4712222 +C 0.0460512 +C 0.1432242 +9 + +X 0.0000000 +O -0.7646231 +O -0.8169863 +H 0.3117349 +H 0.4819694 +H 0.3146463 +H 0.4577043 +C 0.0296870 +C 0.1319057 +9 + +X 0.0000000 +O -0.7376184 +O -0.8024392 +H 0.3206382 +H 0.5058345 +H 0.3472478 +H 0.4537150 +C 0.0445109 +C 0.0949763 +9 + +X 0.0000000 +O -0.7280809 +O -0.7455026 +H 0.3070334 +H 0.4568913 +H 0.3419777 +H 0.4334161 +C 0.0797623 +C 0.1055606 +9 + +X 0.0000000 +O -0.7536074 +O -0.7875611 +H 0.3433853 +H 0.4976141 +H 0.3126607 +H 0.4363479 +C 0.0940722 +C 0.1464905 +9 + +X 0.0000000 +O -0.7424531 +O -0.7906937 +H 0.3096976 +H 0.4826561 +H 0.3303348 +H 0.4145221 +C 0.0920034 +C 0.1224159 +9 + +X 0.0000000 +O -0.7302257 +O -0.8093797 +H 0.4020006 +H 0.4541921 +H 0.2784422 +H 0.4328349 +C 0.0803373 +C 0.0942774 +9 + +X 0.0000000 +O -0.7215766 +O -0.7513914 +H 0.3458458 +H 0.4769900 +H 0.3486430 +H 0.3486412 +C 0.0968651 +C 0.1002922 +9 + +X 0.0000000 +O -0.7243269 +O -0.7726410 +H 0.3641128 +H 0.4301895 +H 0.3543914 +H 0.3822687 +C 0.1340173 +C 0.1578622 +9 + +X 0.0000000 +O -0.7073596 +O -0.7618627 +H 0.3480010 +H 0.4669487 +H 0.3380903 +H 0.3810451 +C 0.1564342 +C 0.1299445 +9 + +X 0.0000000 +O -0.7713468 +O -0.7076145 +H 0.3984507 +H 0.3979289 +H 0.3330873 +H 0.3525191 +C 0.1053482 +C 0.1086838 +9 + +X 0.0000000 +O -0.7699875 +O -0.7523747 +H 0.3883760 +H 0.4022134 +H 0.3407018 +H 0.3636930 +C 0.1634208 +C 0.1224150 +9 + +X 0.0000000 +O -0.7920502 +O -0.7360492 +H 0.4135158 +H 0.3883828 +H 0.3566781 +H 0.3718493 +C 0.1363365 +C 0.1348719 +9 + +X 0.0000000 +O -0.7767764 +O -0.7541042 +H 0.4039023 +H 0.3744266 +H 0.3597309 +H 0.3408712 +C 0.1404725 +C 0.0831461 +9 + +X 0.0000000 +O -0.7358317 +O -0.7438291 +H 0.4370027 +H 0.4136135 +H 0.4136891 +H 0.3448756 +C 0.1006920 +C 0.1178952 +9 + +X 0.0000000 +O -0.7889241 +O -0.7518570 +H 0.4318607 +H 0.3760521 +H 0.3808991 +H 0.3370271 +C 0.1288459 +C 0.0641904 +9 + +X 0.0000000 +O -0.7938026 +O -0.7366104 +H 0.4442947 +H 0.3641156 +H 0.3986014 +H 0.3371092 +C 0.1329670 +C 0.0621247 +9 + +X 0.0000000 +O -0.8137632 +O -0.7520302 +H 0.4769604 +H 0.3743088 +H 0.4427880 +H 0.2962536 +C 0.1418283 +C 0.0415913 +9 + +X 0.0000000 +O -0.8653759 +O -0.8007323 +H 0.4371354 +H 0.3882565 +H 0.4364529 +H 0.3456663 +C 0.1223594 +C 0.0408346 +9 + +X 0.0000000 +O -0.8406307 +O -0.7455973 +H 0.4496451 +H 0.3466918 +H 0.4322042 +H 0.3228970 +C 0.1003490 +C 0.0257744 +9 + +X 0.0000000 +O -0.8651879 +O -0.7231373 +H 0.4776881 +H 0.3654360 +H 0.3925789 +H 0.3581704 +C 0.1168060 +C -0.0082875 +9 + +X 0.0000000 +O -0.8161755 +O -0.7713043 +H 0.4673583 +H 0.3472893 +H 0.4477673 +H 0.3325109 +C 0.1061883 +C 0.0304587 +9 + +X 0.0000000 +O -0.8721525 +O -0.8141788 +H 0.4749836 +H 0.3339890 +H 0.4599958 +H 0.3265288 +C 0.1127800 +C 0.0274804 +9 + +X 0.0000000 +O -0.8761623 +O -0.8288716 +H 0.5119995 +H 0.2841194 +H 0.5123358 +H 0.3121944 +C 0.0847888 +C -0.0030384 +9 + +X 0.0000000 +O -0.9061009 +O -0.8799620 +H 0.4940157 +H 0.3355785 +H 0.5101608 +H 0.3076123 +C 0.0723556 +C -0.0070219 +9 + +X 0.0000000 +O -0.9053809 +O -0.8361670 +H 0.4828035 +H 0.3125442 +H 0.4515458 +H 0.3497115 +C 0.0812078 +C -0.0381060 +9 + +X 0.0000000 +O -0.8890903 +O -0.8450588 +H 0.5102954 +H 0.3340334 +H 0.4901769 +H 0.3283048 +C 0.0600422 +C -0.0042772 +9 + +X 0.0000000 +O -0.8676972 +O -0.8233007 +H 0.4908177 +H 0.3207933 +H 0.4869779 +H 0.3785834 +C 0.0266248 +C -0.0162994 +9 + +X 0.0000000 +O -0.9085329 +O -0.8277386 +H 0.4728543 +H 0.2967541 +H 0.4391656 +H 0.3568749 +C -0.0031737 +C -0.0293337 +9 + +X 0.0000000 +O -0.8808178 +O -0.8591458 +H 0.5067377 +H 0.3374011 +H 0.4741489 +H 0.3633772 +C 0.0171969 +C -0.0228974 +9 + +X 0.0000000 +O -0.9226831 +O -0.8939954 +H 0.4797489 +H 0.3559684 +H 0.5006130 +H 0.3809613 +C 0.0038708 +C -0.0440584 +9 + +X 0.0000000 +O -0.8899756 +O -0.8624654 +H 0.4591708 +H 0.3525660 +H 0.4829047 +H 0.4059638 +C 0.0153801 +C -0.0111584 +9 + +X 0.0000000 +O -0.9114140 +O -0.9490630 +H 0.4906291 +H 0.3573733 +H 0.4260362 +H 0.4240878 +C 0.0089541 +C -0.0122585 +9 + +X 0.0000000 +O -0.9029774 +O -0.8830678 +H 0.4231471 +H 0.3380160 +H 0.4846289 +H 0.4388298 +C 0.0216485 +C -0.0134811 +9 + +X 0.0000000 +O -0.8850211 +O -0.8771772 +H 0.4231014 +H 0.3637905 +H 0.4861131 +H 0.4577978 +C -0.0309527 +C -0.0205542 +9 + +X 0.0000000 +O -0.8897775 +O -0.9050147 +H 0.4647369 +H 0.4027079 +H 0.4996700 +H 0.4726093 +C -0.0091618 +C -0.0393830 +9 + +X 0.0000000 +O -0.8956633 +O -0.9008205 +H 0.4237996 +H 0.4158664 +H 0.4633453 +H 0.4608442 +C -0.0535393 +C 0.0083598 +9 + +X 0.0000000 +O -0.8566504 +O -0.8996465 +H 0.4298892 +H 0.3560604 +H 0.4575206 +H 0.4294175 +C -0.0593259 +C -0.0071640 +9 + +X 0.0000000 +O -0.8780336 +O -0.8964411 +H 0.4195083 +H 0.4183952 +H 0.4264449 +H 0.4526582 +C -0.0245018 +C 0.0150561 +9 + +X 0.0000000 +O -0.8812352 +O -0.8830069 +H 0.3809167 +H 0.4350815 +H 0.4362590 +H 0.5048572 +C -0.0103504 +C 0.0447052 +9 + +X 0.0000000 +O -0.8433474 +O -0.8762122 +H 0.3753610 +H 0.4306920 +H 0.4460199 +H 0.4870064 +C -0.0300570 +C 0.0170241 +9 + +X 0.0000000 +O -0.8501526 +O -0.8932128 +H 0.3671226 +H 0.4164204 +H 0.4166296 +H 0.4717720 +C 0.0255491 +C 0.0528521 +9 + +X 0.0000000 +O -0.8585325 +O -0.8789994 +H 0.3983329 +H 0.4496647 +H 0.4008173 +H 0.4896795 +C -0.0116038 +C 0.0248325 +9 + +X 0.0000000 +O -0.8281802 +O -0.8905864 +H 0.3565575 +H 0.4510152 +H 0.3742082 +H 0.4994796 +C -0.0457572 +C 0.0605419 +9 + +X 0.0000000 +O -0.8218382 +O -0.8593476 +H 0.3517877 +H 0.4384829 +H 0.4001593 +H 0.5174708 +C 0.0031365 +C 0.0774489 +9 + +X 0.0000000 +O -0.8252964 +O -0.8729961 +H 0.3120149 +H 0.4784930 +H 0.3887639 +H 0.4913078 +C 0.0097353 +C 0.0721374 +9 + +X 0.0000000 +O -0.7777770 +O -0.8746374 +H 0.3263394 +H 0.4937737 +H 0.3693654 +H 0.5075253 +C -0.0412052 +C 0.0834149 +9 + +X 0.0000000 +O -0.7688692 +O -0.8542697 +H 0.3353030 +H 0.4739934 +H 0.3739711 +H 0.5066215 +C -0.0091202 +C 0.1284985 +9 + +X 0.0000000 +O -0.8065721 +O -0.8320349 +H 0.2996523 +H 0.5028455 +H 0.3763708 +H 0.4741737 +C 0.0112284 +C 0.0921598 +9 + +X 0.0000000 +O -0.7689662 +O -0.8276639 +H 0.2943445 +H 0.4897174 +H 0.3551371 +H 0.4778629 +C 0.0302577 +C 0.0880011 +9 + +X 0.0000000 +O -0.7776084 +O -0.8059332 +H 0.3109652 +H 0.4738014 +H 0.3402435 +H 0.4563134 +C 0.0657571 +C 0.1159289 +9 + +X 0.0000000 +O -0.7327786 +O -0.8265077 +H 0.3545334 +H 0.5261813 +H 0.3595752 +H 0.4184705 +C 0.0678994 +C 0.0988888 +9 + +X 0.0000000 +O -0.7192571 +O -0.8007362 +H 0.3475735 +H 0.4920597 +H 0.3348078 +H 0.4199236 +C 0.0729446 +C 0.1037959 +9 + +X 0.0000000 +O -0.7710237 +O -0.8261548 +H 0.3395293 +H 0.4646578 +H 0.3387498 +H 0.4605176 +C 0.1124972 +C 0.1538107 +9 + +X 0.0000000 +O -0.7551905 +O -0.7837925 +H 0.3721107 +H 0.4750189 +H 0.3219080 +H 0.4159768 +C 0.0865033 +C 0.1195256 +9 + +X 0.0000000 +O -0.7862886 +O -0.7508724 +H 0.3552758 +H 0.4988374 +H 0.3587667 +H 0.4215306 +C 0.1193600 +C 0.1278247 +9 + +X 0.0000000 +O -0.7343290 +O -0.8015642 +H 0.3708203 +H 0.4692747 +H 0.3099993 +H 0.4213597 +C 0.0373911 +C 0.1365559 +9 + +X 0.0000000 +O -0.7388268 +O -0.7868762 +H 0.3598445 +H 0.4807995 +H 0.2993684 +H 0.4115081 +C 0.1153519 +C 0.1254629 +9 + +X 0.0000000 +O -0.7377261 +O -0.7604708 +H 0.3450705 +H 0.4347992 +H 0.3620509 +H 0.4088734 +C 0.0841178 +C 0.0960140 +9 + +X 0.0000000 +O -0.7474568 +O -0.7287088 +H 0.3397408 +H 0.4757161 +H 0.3290263 +H 0.3736672 +C 0.1154941 +C 0.1064748 +9 + +X 0.0000000 +O -0.7435676 +O -0.7490603 +H 0.4008889 +H 0.4338462 +H 0.3537273 +H 0.3980572 +C 0.1554349 +C 0.1551349 +9 + +X 0.0000000 +O -0.7580580 +O -0.7680795 +H 0.3535980 +H 0.4193010 +H 0.3467991 +H 0.3579265 +C 0.1795236 +C 0.0962854 +9 + +X 0.0000000 +O -0.7895642 +O -0.7270444 +H 0.3932816 +H 0.4267515 +H 0.3746026 +H 0.3794323 +C 0.1391934 +C 0.1042555 +9 + +X 0.0000000 +O -0.7793711 +O -0.7604936 +H 0.4132068 +H 0.4126465 +H 0.3749543 +H 0.2970855 +C 0.1584792 +C 0.0936680 +9 + +X 0.0000000 +O -0.7949887 +O -0.7594623 +H 0.4433332 +H 0.4242770 +H 0.3942778 +H 0.3427516 +C 0.1111296 +C 0.1066278 +9 + +X 0.0000000 +O -0.8076256 +O -0.7491269 +H 0.4350352 +H 0.3796190 +H 0.4312340 +H 0.3326563 +C 0.1473824 +C 0.0477820 +9 + +X 0.0000000 +O -0.7794193 +O -0.7734818 +H 0.3881766 +H 0.3675268 +H 0.3550637 +H 0.3371127 +C 0.0980599 +C 0.0765431 +9 + +X 0.0000000 +O -0.8386364 +O -0.7237131 +H 0.4397343 +H 0.3930502 +H 0.4029363 +H 0.3344361 +C 0.1158802 +C 0.0407889 +9 + +X 0.0000000 +O -0.8326346 +O -0.7572951 +H 0.4641667 +H 0.3469387 +H 0.4236919 +H 0.3334783 +C 0.1226269 +C 0.0294970 +9 + +X 0.0000000 +O -0.8466292 +O -0.7867110 +H 0.4692433 +H 0.3377827 +H 0.4020655 +H 0.3673141 +C 0.0912710 +C 0.0469458 +9 + +X 0.0000000 +O -0.8430927 +O -0.7875864 +H 0.4589027 +H 0.3502810 +H 0.4338856 +H 0.3253035 +C 0.0725335 +C 0.0585909 +9 + +X 0.0000000 +O -0.8601136 +O -0.8203814 +H 0.4830233 +H 0.3597158 +H 0.4399748 +H 0.3561136 +C 0.0887338 +C 0.0203367 +9 + +X 0.0000000 +O -0.8423041 +O -0.8070699 +H 0.4925560 +H 0.3500918 +H 0.4610680 +H 0.3157085 +C 0.0441234 +C 0.0173875 +9 + +X 0.0000000 +O -0.8635252 +O -0.8083166 +H 0.4819882 +H 0.3329736 +H 0.4849791 +H 0.3426197 +C 0.0514218 +C 0.0393362 +9 + +X 0.0000000 +O -0.8481719 +O -0.7982544 +H 0.4867327 +H 0.3412620 +H 0.5037281 +H 0.3556774 +C 0.0674091 +C -0.0050660 +9 + +X 0.0000000 +O -0.8758836 +O -0.7854954 +H 0.4936171 +H 0.3395046 +H 0.4947795 +H 0.3824391 +C 0.0450628 +C 0.0058350 +9 + +X 0.0000000 +O -0.9051415 +O -0.8441134 +H 0.5015198 +H 0.3123790 +H 0.4803665 +H 0.3888726 +C 0.0682519 +C -0.0136419 +9 + +X 0.0000000 +O -0.8913101 +O -0.8464013 +H 0.4824046 +H 0.3024248 +H 0.5037439 +H 0.3712333 +C 0.0551578 +C -0.0059953 +9 + +X 0.0000000 +O -0.8743079 +O -0.8717291 +H 0.4729110 +H 0.3317704 +H 0.5048502 +H 0.3617780 +C 0.0677540 +C -0.0209894 +9 + +X 0.0000000 +O -0.8598852 +O -0.8702579 +H 0.4864533 +H 0.3156685 +H 0.4941495 +H 0.3839549 +C 0.0155968 +C -0.0283693 +9 + +X 0.0000000 +O -0.9187563 +O -0.8867028 +H 0.5090661 +H 0.3589393 +H 0.4548712 +H 0.4163864 +C -0.0219894 +C -0.0197997 +9 + +X 0.0000000 +O -0.8941373 +O -0.8641429 +H 0.5077664 +H 0.3554466 +H 0.4971360 +H 0.4382304 +C 0.0148227 +C 0.0017763 +9 + +X 0.0000000 +O -0.9086081 +O -0.9447690 +H 0.4764873 +H 0.3649448 +H 0.4831061 +H 0.4096180 +C 0.0149529 +C 0.0067307 +9 + +X 0.0000000 +O -0.8532352 +O -0.8744757 +H 0.4888361 +H 0.3877219 +H 0.4956037 +H 0.4549114 +C 0.0272008 +C 0.0034176 +9 + +X 0.0000000 +O -0.8924813 +O -0.8967363 +H 0.4395095 +H 0.3637880 +H 0.4489431 +H 0.4494276 +C -0.0160133 +C -0.0152741 +9 + +X 0.0000000 +O -0.8604833 +O -0.9236364 +H 0.4348566 +H 0.3919084 +H 0.4654686 +H 0.4280251 +C 0.0245113 +C -0.0293851 +9 + +X 0.0000000 +O -0.8801447 +O -0.8751917 +H 0.4307548 +H 0.4079722 +H 0.4964781 +H 0.4663342 +C -0.0450441 +C -0.0114618 +9 + +X 0.0000000 +O -0.8695994 +O -0.8848568 +H 0.4319602 +H 0.4006761 +H 0.4615951 +H 0.4699123 +C -0.0235471 +C -0.0136821 +9 + +X 0.0000000 +O -0.8657848 +O -0.9261662 +H 0.4346746 +H 0.4379273 +H 0.4521238 +H 0.4781019 +C -0.0564621 +C -0.0150825 +9 + +X 0.0000000 +O -0.8608346 +O -0.9170090 +H 0.3908072 +H 0.3808269 +H 0.4210123 +H 0.4964062 +C -0.0056006 +C 0.0198516 +9 + +X 0.0000000 +O -0.8902761 +O -0.9346982 +H 0.4009470 +H 0.4189106 +H 0.4291385 +H 0.4995520 +C -0.0328306 +C 0.0264195 +9 + +X 0.0000000 +O -0.8599177 +O -0.8759857 +H 0.3576050 +H 0.4483233 +H 0.4185787 +H 0.4795833 +C -0.0581077 +C 0.0286864 +9 + +X 0.0000000 +O -0.8202629 +O -0.9228439 +H 0.3845002 +H 0.4410460 +H 0.4263790 +H 0.5115164 +C -0.0201776 +C -0.0132792 +9 + +X 0.0000000 +O -0.8554002 +O -0.8500064 +H 0.3407089 +H 0.4478903 +H 0.3734976 +H 0.4821736 +C -0.0261588 +C 0.0656182 +9 + +X 0.0000000 +O -0.7739190 +O -0.8643913 +H 0.4217597 +H 0.4543545 +H 0.3706638 +H 0.5080352 +C -0.0198482 +C 0.1068906 +9 + +X 0.0000000 +O -0.8127742 +O -0.8682025 +H 0.3545394 +H 0.4761427 +H 0.3625843 +H 0.5229647 +C 0.0136796 +C 0.0997335 +9 + +X 0.0000000 +O -0.8068693 +O -0.8655431 +H 0.3104743 +H 0.4878411 +H 0.3612647 +H 0.4798129 +C -0.0061156 +C 0.0651283 +9 + +X 0.0000000 +O -0.7826976 +O -0.8610072 +H 0.3299211 +H 0.5191343 +H 0.3564236 +H 0.4973788 +C -0.0026994 +C 0.0820026 +9 + +X 0.0000000 +O -0.7853518 +O -0.8316210 +H 0.3446879 +H 0.5121731 +H 0.3338767 +H 0.4602131 +C 0.0639258 +C 0.1023599 +9 + +X 0.0000000 +O -0.7773598 +O -0.8346535 +H 0.3221646 +H 0.5066130 +H 0.3325379 +H 0.5168555 +C 0.0069698 +C 0.1042846 +9 + +X 0.0000000 +O -0.7494457 +O -0.8518009 +H 0.3302757 +H 0.5300184 +H 0.3453905 +H 0.4715713 +C 0.0594767 +C 0.0836417 +9 + +X 0.0000000 +O -0.7358909 +O -0.8199262 +H 0.3528124 +H 0.4853040 +H 0.3672953 +H 0.4849479 +C 0.0387613 +C 0.1334943 +9 + +X 0.0000000 +O -0.7595505 +O -0.8066007 +H 0.3410063 +H 0.5356650 +H 0.3352616 +H 0.4616441 +C 0.0753822 +C 0.1217017 +9 + +X 0.0000000 +O -0.7676955 +O -0.8048488 +H 0.2775812 +H 0.5217914 +H 0.3422191 +H 0.4406113 +C 0.0896639 +C 0.1177833 +9 + +X 0.0000000 +O -0.7279575 +O -0.8140114 +H 0.3531381 +H 0.4565388 +H 0.3230377 +H 0.4528004 +C 0.0501219 +C 0.1421744 +9 + +X 0.0000000 +O -0.7644193 +O -0.7784209 +H 0.3475511 +H 0.5024443 +H 0.3409254 +H 0.4400547 +C 0.0752043 +C 0.1404322 +9 + +X 0.0000000 +O -0.7400345 +O -0.7501552 +H 0.3425347 +H 0.4747216 +H 0.3280356 +H 0.4282494 +C 0.0690032 +C 0.1199551 +9 + +X 0.0000000 +O -0.7469081 +O -0.7432335 +H 0.3504533 +H 0.4508798 +H 0.3569364 +H 0.4068434 +C 0.1101388 +C 0.1267347 +9 + +X 0.0000000 +O -0.7389618 +O -0.7117756 +H 0.3418622 +H 0.4263079 +H 0.3546765 +H 0.3887624 +C 0.0894871 +C 0.1067128 +9 + +X 0.0000000 +O -0.7543668 +O -0.7334324 +H 0.3957931 +H 0.4240211 +H 0.3354092 +H 0.3825773 +C 0.1070942 +C 0.1421644 +9 + +X 0.0000000 +O -0.7598507 +O -0.7588512 +H 0.3896407 +H 0.4442808 +H 0.3437794 +H 0.4127950 +C 0.1433728 +C 0.1048699 +9 + +X 0.0000000 +O -0.7686854 +O -0.7289878 +H 0.3598735 +H 0.4323726 +H 0.3444173 +H 0.3407044 +C 0.1442514 +C 0.1025506 +9 + +X 0.0000000 +O -0.7651557 +O -0.7270478 +H 0.3977958 +H 0.3948095 +H 0.3626971 +H 0.3562919 +C 0.1349283 +C 0.1011140 +9 + +X 0.0000000 +O -0.7921068 +O -0.7537645 +H 0.4497847 +H 0.4076195 +H 0.4142442 +H 0.3508023 +C 0.1112813 +C 0.1223578 +9 + +X 0.0000000 +O -0.8034725 +O -0.7230800 +H 0.4290874 +H 0.3786744 +H 0.4111800 +H 0.3349439 +C 0.1445389 +C 0.1011145 +9 + +X 0.0000000 +O -0.7766257 +O -0.7674829 +H 0.4199076 +H 0.4342597 +H 0.3922859 +H 0.3184033 +C 0.1113179 +C 0.0576562 +9 + +X 0.0000000 +O -0.7770114 +O -0.7722792 +H 0.4229987 +H 0.3669156 +H 0.4105021 +H 0.3216154 +C 0.1020635 +C 0.0488577 +9 + +X 0.0000000 +O -0.8317893 +O -0.7652257 +H 0.4500094 +H 0.3869752 +H 0.3993043 +H 0.3138003 +C 0.0977606 +C 0.0610689 +9 + +X 0.0000000 +O -0.8120644 +O -0.7642958 +H 0.4501023 +H 0.3360678 +H 0.3938271 +H 0.3453892 +C 0.1306724 +C 0.0962327 +9 + +X 0.0000000 +O -0.8466268 +O -0.7442065 +H 0.4643423 +H 0.3436031 +H 0.4398233 +H 0.3495014 +C 0.1109816 +C 0.0107308 +9 + +X 0.0000000 +O -0.8243315 +O -0.7585484 +H 0.4749166 +H 0.3266448 +H 0.4282907 +H 0.3406389 +C 0.1078690 +C 0.0094304 +9 + +X 0.0000000 +O -0.8644547 +O -0.7569393 +H 0.4900659 +H 0.3532205 +H 0.4493403 +H 0.3358922 +C 0.1224039 +C 0.0335656 +9 + +X 0.0000000 +O -0.8575176 +O -0.8012028 +H 0.4961737 +H 0.3449440 +H 0.4462561 +H 0.3214158 +C 0.0878152 +C 0.0114505 +9 + +X 0.0000000 +O -0.8577096 +O -0.7800093 +H 0.5055707 +H 0.3652589 +H 0.4827948 +H 0.3348486 +C 0.0718356 +C -0.0325908 +9 + +X 0.0000000 +O -0.8579115 +O -0.8220101 +H 0.4784704 +H 0.3369552 +H 0.4332847 +H 0.3365872 +C 0.0793256 +C -0.0005661 +9 + +X 0.0000000 +O -0.8599122 +O -0.8546647 +H 0.5089537 +H 0.2867378 +H 0.4615558 +H 0.3804976 +C 0.0575235 +C -0.0301226 +9 + +X 0.0000000 +O -0.8894120 +O -0.8357745 +H 0.4837945 +H 0.3513889 +H 0.4715959 +H 0.3417677 +C 0.0741124 +C -0.0108248 +9 + +X 0.0000000 +O -0.8967861 +O -0.8230558 +H 0.4886720 +H 0.3360379 +H 0.4614064 +H 0.3742319 +C 0.0406563 +C -0.0327204 +9 + +X 0.0000000 +O -0.9266628 +O -0.8310038 +H 0.4854482 +H 0.3256301 +H 0.4770169 +H 0.3478135 +C 0.0036484 +C -0.0538580 +9 + +X 0.0000000 +O -0.8784100 +O -0.8480741 +H 0.4880881 +H 0.3164319 +H 0.4530762 +H 0.3937574 +C 0.0133784 +C -0.0157995 +9 + +X 0.0000000 +O -0.8951477 +O -0.8637464 +H 0.4947717 +H 0.3616490 +H 0.5084072 +H 0.3867589 +C -0.0231911 +C -0.0302533 +9 + +X 0.0000000 +O -0.8869494 +O -0.8770769 +H 0.4773243 +H 0.3257455 +H 0.4649697 +H 0.3855622 +C 0.0272435 +C -0.0085571 +9 + +X 0.0000000 +O -0.9063291 +O -0.9020373 +H 0.4479187 +H 0.3507199 +H 0.4879901 +H 0.4274166 +C 0.0535982 +C -0.0132384 +9 + +X 0.0000000 +O -0.8867864 +O -0.9209563 +H 0.4611067 +H 0.3741939 +H 0.4706867 +H 0.4106615 +C -0.0003232 +C -0.0348511 +9 + +X 0.0000000 +O -0.9358988 +O -0.8948388 +H 0.4329823 +H 0.3881370 +H 0.4867102 +H 0.4245600 +C -0.0084784 +C -0.0351621 +9 + +X 0.0000000 +O -0.8780248 +O -0.8985261 +H 0.4623858 +H 0.3522075 +H 0.4499675 +H 0.4414791 +C -0.0482260 +C -0.0081912 +9 + +X 0.0000000 +O -0.8784753 +O -0.8818855 +H 0.4488860 +H 0.3728535 +H 0.4412514 +H 0.4699703 +C -0.0308054 +C -0.0264358 +9 + +X 0.0000000 +O -0.8750202 +O -0.8955589 +H 0.4309828 +H 0.3882998 +H 0.4432503 +H 0.4813528 +C -0.0097937 +C -0.0096348 +9 + +X 0.0000000 +O -0.8985710 +O -0.9254354 +H 0.3932154 +H 0.4345186 +H 0.4676734 +H 0.4746251 +C -0.0437222 +C 0.0295675 +9 + +X 0.0000000 +O -0.8598595 +O -0.9016311 +H 0.4156312 +H 0.4288216 +H 0.4508595 +H 0.5004317 +C -0.0309187 +C 0.0540740 +9 + +X 0.0000000 +O -0.8502425 +O -0.9147046 +H 0.3678722 +H 0.4617982 +H 0.4283884 +H 0.4821531 +C -0.0526859 +C 0.0462222 +9 + +X 0.0000000 +O -0.8416891 +O -0.8672764 +H 0.4122943 +H 0.4711661 +H 0.3852941 +H 0.5082427 +C -0.0208086 +C 0.0354860 +9 + +X 0.0000000 +O -0.8195125 +O -0.9246644 +H 0.3797603 +H 0.4653320 +H 0.4072008 +H 0.4860051 +C -0.0232216 +C 0.0494877 +9 + +X 0.0000000 +O -0.8178028 +O -0.9075297 +H 0.3341630 +H 0.4325094 +H 0.3959297 +H 0.4917217 +C -0.0234093 +C 0.0180606 +9 + +X 0.0000000 +O -0.7938332 +O -0.8663757 +H 0.3877360 +H 0.4662889 +H 0.4102270 +H 0.4562230 +C -0.0328446 +C 0.0691119 +9 + +X 0.0000000 +O -0.8449188 +O -0.8668135 +H 0.3158923 +H 0.4350175 +H 0.3698337 +H 0.5136305 +C 0.0091740 +C 0.0801290 diff --git a/tests/data/vacf/traj_2.vel b/tests/data/vacf/traj_2.vel new file mode 100644 index 00000000..922286e5 --- /dev/null +++ b/tests/data/vacf/traj_2.vel @@ -0,0 +1,1650 @@ +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3181893 -0.5611902 1.1073213 +O 0.4916110 0.5299802 -0.9774840 +H 0.2927072 0.0761699 -0.4317066 +H 0.2003213 -1.1786342 -0.3469842 +H 0.1831673 1.8576316 1.1553721 +H -0.2155868 0.6914499 -0.8531730 +C -1.2743601 -0.0367103 -0.5959750 +C 0.4173697 -0.1092654 -1.0307557 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9445554 -0.9615298 1.3929661 +O 1.2471156 0.0297573 -1.1690344 +H 0.0372293 0.3020545 -1.5080988 +H 0.8157737 -0.5165385 0.0195908 +H 0.2346540 0.9671748 1.3248107 +H 0.0350439 1.5623113 -1.8295509 +C -1.7974674 -0.1043547 -1.2982770 +C 0.2687766 1.0133520 -1.4182108 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6814644 -1.4734357 1.2526573 +O 2.0440597 0.2957492 -0.3160335 +H 0.7698549 1.3464541 -1.8654560 +H 0.7604314 -0.1255168 -0.1456757 +H -0.3164104 0.0557994 0.8842806 +H 0.3563141 1.8184463 -1.0205398 +C -1.6544140 -0.7224164 -1.8212207 +C 0.5231614 0.9265321 -1.2901915 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2435159 -1.1056664 0.2398535 +O 1.3060732 0.5128286 0.8289855 +H 0.5345934 1.7678374 -1.5434373 +H 0.5221036 -1.1247733 -0.2814724 +H -0.3150745 0.1960275 0.4415824 +H -0.5214996 1.1708409 -0.3601059 +C -0.8945256 -1.5987770 -1.2926432 +C 0.5815786 0.5857486 -0.8139931 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2618904 0.2690016 -0.6580825 +O 0.6324858 -0.0118086 1.3998563 +H -0.2325498 1.6583597 -0.3827511 +H -0.2942359 -1.0704645 -0.0713952 +H 0.4791638 0.7492443 0.7310652 +H -1.4947196 0.2465048 0.7827981 +C -0.2611159 -1.7352285 -0.5786122 +C 0.2295975 0.4473141 -0.4585476 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 2.0243892 0.6821418 -0.7460908 +O -0.0524229 -1.0285085 1.2769409 +H -1.0816872 0.8840666 -0.2438313 +H -1.3086636 -0.9382334 0.4800271 +H 1.4361368 0.8540468 0.8751430 +H -1.5524676 -0.5655956 1.1502183 +C -0.3971956 -1.0997129 -0.2088012 +C -0.8982088 0.8618188 -1.1443614 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0644725 0.8713571 -0.2677647 +O 0.2689955 -1.7982678 0.8265991 +H -1.6058402 -0.0867505 -0.2243629 +H -1.5612217 0.6428167 1.6087363 +H 1.9039906 0.1069127 1.4837076 +H -1.6252511 -0.1799523 0.6169532 +C -0.7838473 -0.3009885 -0.4033517 +C -1.6057058 1.4318050 -1.4843575 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.4511056 0.5437081 -0.2347850 +O 0.6401274 -1.6751165 0.6477437 +H -1.5486360 0.0010171 -0.4138847 +H -1.2584372 1.2501195 1.5527258 +H 1.0476718 -1.3001601 0.8619249 +H -0.5901773 -0.0940748 0.3191718 +C -0.5663513 -0.2786669 -0.6869706 +C -1.6722994 1.6950518 -0.8309430 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5789881 0.1338290 -0.7726781 +O 0.2540902 -0.9186061 1.0465495 +H -0.8056037 0.3606743 -0.2340246 +H -0.5173710 1.6655351 1.1492768 +H 0.4318397 -1.8860063 -0.4905702 +H -0.4753161 -0.0135083 0.9507311 +C 0.4422800 -0.8803283 -0.2862756 +C -0.8789669 0.9140108 0.0041571 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0889855 1.2138254 -1.6214909 +O -0.8810074 -0.5521863 1.6369298 +H -0.3773507 0.3688937 0.5409059 +H -0.8620751 0.6382050 0.4012976 +H 0.6833055 -1.1233962 -1.1151722 +H -0.7815701 -1.0755379 1.5484671 +C 1.3889326 -0.7429916 0.5312355 +C -0.4968100 -0.1019046 1.0527763 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6323968 1.5732013 -1.9062904 +O -1.5667823 -0.5656772 1.5414410 +H -0.5207614 -0.1664845 1.6061361 +H -1.3534020 0.6451661 0.4405465 +H 0.8388168 -0.3378872 -1.0027908 +H -0.8626943 -1.7508282 1.6394371 +C 1.6136288 -0.2072236 1.3171188 +C -0.8882965 -0.4193639 0.9743798 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7462325 1.9721297 -0.9166052 +O -1.3919748 -1.1111359 0.4898100 +H -0.9380421 -1.1942362 1.4957956 +H -1.2698348 1.4405963 1.0010824 +H 0.9887622 -0.4690302 -0.5519207 +H -0.2903768 -1.4765027 1.0536282 +C 0.8838409 0.6786424 1.3162488 +C -1.2910342 -0.2526498 0.4356888 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4886372 0.8226939 -0.0820164 +O -0.9081701 -1.0012932 -0.7671958 +H -0.9521595 -1.9713955 0.7915688 +H -0.8068652 1.7124822 1.1525095 +H 0.5290555 -0.9356019 -0.4897747 +H 0.4176943 -0.8291196 -0.1657251 +C 0.5794635 1.8542676 0.7909999 +C -1.2109426 -0.0530770 0.1943819 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3708462 -0.1895051 0.0574294 +O -0.4490374 -0.3163661 -0.8823872 +H 0.3047481 -1.2908422 0.3439068 +H 0.2528057 1.1923154 0.3686158 +H -0.7281211 -1.3597043 -0.9017400 +H 1.1856509 -0.1945882 -0.4262150 +C 0.6022662 1.4936488 0.3893898 +C -0.2673572 -0.3355238 0.8648900 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8312077 -0.4437860 0.2757039 +O -0.8348133 0.9663201 -0.3059831 +H 1.1483557 -0.5167332 0.6543552 +H 1.2112938 0.5130834 -0.8092455 +H -1.6389125 -0.8588812 -1.4596324 +H 1.5140169 -0.2980065 -0.3351166 +C 1.3835587 0.6472283 0.6936705 +C 0.8095295 -1.1637297 1.5835173 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5828843 -0.0498679 -0.0397791 +O -1.0611286 1.4862106 -0.2644561 +H 1.1549179 -0.5830934 1.2642240 +H 0.8181033 -0.6696567 -1.1783532 +H -1.3782148 0.1320236 -1.4789923 +H 1.1425596 -0.8398445 -0.0537846 +C 1.2645685 0.6233281 1.3677668 +C 1.1920478 -1.5721125 1.8562791 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4774443 0.1311009 0.4613791 +O -1.1096103 0.7649231 -0.7131441 +H 0.7526935 -0.8696507 1.0783418 +H 0.4442424 -0.9979035 -1.1128628 +H -0.3499361 0.8312417 -0.2975971 +H 0.6113258 -0.3694231 -0.3094027 +C 1.0999250 1.0177667 1.3157552 +C 0.6385498 -1.4790777 0.7790865 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4250743 -0.5892060 1.2498952 +O -0.1470531 0.7094813 -1.8063669 +H 0.5816462 -1.2784119 0.1264749 +H 0.7704477 -0.4264462 -0.6362142 +H -0.7788905 1.1055815 0.0907674 +H 0.8253563 0.4832374 -1.2270630 +C -0.1891663 1.6430214 0.2886947 +C 0.4869099 -0.6741080 -0.0785137 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.7330129 -1.5896085 2.1221120 +O 0.5877152 0.5538536 -1.9520682 +H 0.8176756 -0.5653429 -0.8742697 +H 1.2520096 -0.1301718 -0.4653288 +H -1.0770858 0.6568015 0.4123127 +H 1.3513057 1.3433754 -1.8659560 +C -1.0494267 0.9900357 -0.7912793 +C 0.6263532 -0.0376141 -0.3180176 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4587986 -1.9460259 1.6269452 +O 1.1655844 1.1865441 -1.0672366 +H 1.7143246 0.5657351 -1.3372430 +H 1.8569088 -0.6632510 -1.0078001 +H -1.5656292 0.3773830 0.2337214 +H 1.2052650 1.6419671 -1.4174042 +C -0.8544577 -0.0805888 -1.0260160 +C 1.3799371 -0.1772026 -0.2983330 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5907949 -1.4097405 0.5850505 +O 0.8485656 1.5095266 -0.2582002 +H 1.5271785 1.1430765 -0.7623903 +H 1.3994168 -1.3394251 -1.3590069 +H -1.4185116 0.8502380 0.2881291 +H 0.4513023 1.1944675 -0.5477016 +C -0.3388970 -0.9657455 -1.0366602 +C 1.8017826 -0.6398150 0.1870000 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2155202 -0.6412489 0.1287810 +O 0.3766741 0.8972775 0.0828640 +H 0.6331156 1.5350719 -0.5373837 +H 0.4189279 -1.8278902 -1.2803311 +H -0.2613085 1.7725064 0.6470493 +H -0.6505320 0.4449358 -0.2048310 +C -0.5876853 -1.1651702 -0.0317195 +C 1.1398108 -0.4981902 -0.2923727 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3528661 -0.1572067 0.4794245 +O 0.8142694 -0.1970377 -0.0713695 +H -0.3061750 0.6357391 -0.5594620 +H -0.3532317 -1.4318827 0.1323403 +H 0.8619214 1.7264252 1.6600426 +H -0.9277446 0.7719795 -0.0393300 +C -0.8658640 -0.6550860 -0.9022072 +C -0.1132318 0.3600478 -1.3117559 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1760508 -0.5690663 0.9018542 +O 1.5456116 -1.0074564 -0.1965742 +H -0.6247535 0.5252641 -1.4299835 +H -0.0632329 -0.3293493 0.8391919 +H 1.1431863 1.0772115 1.9096260 +H -0.8810878 1.1555541 -0.5018705 +C -1.5280497 -0.4658544 -1.7487219 +C -0.8977729 1.5958332 -2.2027459 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1190585 -0.5900304 0.7129749 +O 1.9426915 -1.1896181 0.2865641 +H -0.5227490 1.2234549 -1.6335526 +H 0.1210620 0.1132895 1.0239397 +H 0.8690685 -0.0884557 1.3483594 +H -0.5227532 1.4086397 -0.3641673 +C -1.5914388 -0.6985169 -1.8875469 +C -0.3894446 1.8658101 -1.3898302 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6564276 -0.4483156 -0.5404215 +O 1.0964380 -0.5504716 1.1012792 +H -0.1758381 1.5658812 -1.0200854 +H -0.0851909 0.1110774 0.5105297 +H 0.3194530 -0.7344086 0.3992011 +H -0.3675146 0.7950098 0.4803196 +C -0.5407339 -1.5466132 -1.3117181 +C -0.1138449 1.2706184 -0.6051778 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4220748 0.1752386 -1.4662739 +O 0.1693598 -0.2787707 1.8547367 +H -0.4655804 1.3747440 0.2859642 +H -0.7801888 -0.2986081 0.3379453 +H 0.7678006 -0.1835942 -0.0107283 +H -1.4826907 -0.2474044 1.5398875 +C 0.4763608 -1.8195735 0.0792693 +C -0.1707916 0.6073479 -0.3868123 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6492395 1.5800189 -1.7498421 +O -0.6365005 -0.9737608 1.9145051 +H -1.1511425 0.2462342 0.5204935 +H -1.7525771 0.1862630 1.0235034 +H 1.4725078 0.2266381 0.3328618 +H -1.6802961 -1.2358757 1.6407334 +C 0.5621406 -0.9978769 0.5431253 +C -0.7271544 0.6109630 -0.4169930 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4208435 1.7609821 -0.5269713 +O -0.4648633 -1.9145954 0.8723956 +H -1.8117858 -0.6249222 0.7431782 +H -2.1075348 1.0068697 1.5689699 +H 1.7347483 -0.6348745 0.4266222 +H -1.3877225 -0.9759476 1.2045823 +C -0.1498611 0.1872354 0.1146361 +C -1.6872836 1.1016817 -0.8876654 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3434493 0.9256349 -0.6364388 +O -0.2013912 -1.5351414 0.3531629 +H -1.4172548 -0.9537278 0.1119677 +H -1.0758971 1.8299974 1.7499812 +H 1.0227521 -1.6055370 0.3309624 +H -0.2883434 -0.3732521 0.5284087 +C -0.0542557 0.5086550 0.1185116 +C -1.9369204 0.8980483 -0.2116290 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2342178 0.4195231 -0.7433520 +O -0.1949086 -0.8685219 0.6301547 +H -0.8428776 -0.5530737 0.5021980 +H -0.2389581 1.7959009 1.4797381 +H 0.2324066 -1.9322794 -0.9721228 +H 0.5699962 -0.3938264 0.4219903 +C 0.8869626 0.3387968 0.0557710 +C -0.8314189 0.8289833 0.9653322 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1165248 0.4411213 -1.2920737 +O -0.8794824 0.2331688 0.5631543 +H 0.2408471 -0.2495687 1.2319662 +H -0.3445767 0.7904425 0.0766725 +H -0.4085331 -1.2097463 -1.7715085 +H 0.3739880 -1.2761208 0.9691207 +C 1.6369670 0.1462803 1.1962167 +C -0.2825454 -0.6545829 1.6141643 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7469430 1.5316359 -1.3990225 +O -1.8725163 0.2276004 0.7479582 +H 0.1564095 -0.7728493 1.8171554 +H -0.5323382 0.1272041 -0.4180751 +H -0.1306210 -0.8392524 -1.6811844 +H 0.0471477 -1.6378211 1.1128942 +C 1.8618638 0.4380706 1.9330502 +C -0.3332731 -1.0705017 1.6349927 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1055515 1.3893020 -0.4762464 +O -1.6737002 -0.3052635 -0.4203290 +H -0.1423098 -1.5508337 1.9341432 +H -0.4708544 0.8484268 0.2048613 +H 0.2711001 0.0578062 -0.9517437 +H -0.0237718 -1.3163197 0.2479658 +C 1.3924020 1.2360230 1.5593584 +C -0.1627858 -1.0071406 1.2809117 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9038424 0.4346849 0.5628138 +O -0.9272460 -0.3891033 -1.3379156 +H -0.3639142 -1.8264491 0.6849678 +H -0.0227738 0.9427966 0.2228749 +H -0.0797917 -0.5037359 -0.1863488 +H 0.8492936 -0.5729866 -0.7190022 +C 0.3769257 1.9805175 0.9677859 +C -0.7371763 -0.2699137 0.4807160 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.8146536 -0.7802023 1.0420989 +O -0.2001835 0.3762385 -1.5588950 +H 0.7677609 -1.2838143 0.0902531 +H 1.1178730 0.8508938 -0.5081287 +H -1.1489209 -0.6187633 -0.5431322 +H 1.5627042 0.5793829 -1.2891573 +C -0.0543020 1.7013401 0.2243563 +C 0.6690090 -0.5753733 0.6514971 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4777843 -1.0455076 0.6847382 +O 0.1845821 1.4703885 -1.1161836 +H 1.7363632 -0.3140607 -0.1377617 +H 1.6653225 0.0750268 -1.2747726 +H -1.7789290 -0.0230063 -0.8475251 +H 1.6295905 0.6948917 -1.0431025 +C 0.4474351 0.3684503 0.2029454 +C 1.5125806 -1.4765814 1.0473069 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9987022 -0.9578303 0.2585739 +O -0.4700353 2.0464846 -0.4028430 +H 1.8171090 0.2415231 0.3214962 +H 1.1407128 -1.1736244 -1.8945170 +H -1.9344856 0.5081311 -0.8021103 +H 0.7386482 0.3304242 -0.7738943 +C 0.7326294 0.0694680 0.6292659 +C 1.7738231 -1.6111786 1.2954742 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4479393 -0.7048816 0.7574362 +O -0.4921137 1.6085347 -0.8911578 +H 1.3363858 -0.1165612 0.2638799 +H 0.7549990 -1.8499620 -1.4934120 +H -1.0406024 1.4881092 0.0553683 +H 0.3245329 0.0043929 -0.6553663 +C 0.1836473 0.2068095 0.7534877 +C 1.1423279 -1.4455281 0.7183220 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7025975 -0.4616724 1.3721326 +O 0.3574147 0.3894124 -1.0353441 +H 0.3746040 -0.3040461 -0.2225730 +H 0.5487311 -1.1319502 -0.7176029 +H -0.2875737 1.7869628 1.0082754 +H 0.3279860 0.5048786 -1.0063978 +C -0.7523260 0.7800375 -0.2098281 +C 0.6466810 -0.2526635 -0.8878212 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1229955 -1.1663999 1.7707400 +O 1.5067452 -0.0115691 -1.1414140 +H 0.0298925 0.0726750 -1.5234201 +H 0.8418017 -0.5515248 -0.1701145 +H -0.5125429 0.7166886 1.4164171 +H 0.5499754 1.6967634 -1.5000935 +C -1.7722099 0.3536134 -1.3706430 +C 0.6251555 0.5483379 -1.3890853 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1028790 -1.6941625 1.3144426 +O 1.8059877 0.5567578 -0.6294149 +H 0.8034675 0.7949123 -1.8451921 +H 1.2993688 -0.5509548 -0.7172711 +H -0.9512657 0.4865074 0.8093063 +H 0.5494386 1.9279429 -1.0957025 +C -1.6172296 -0.9554250 -1.5826315 +C 1.1539927 0.6547647 -0.8917542 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2698401 -1.4261245 0.3846286 +O 1.4365585 0.8922561 0.1737002 +H 0.9283123 2.0211305 -0.9821081 +H 0.9979931 -1.1726443 -1.2397407 +H -0.7169128 0.2341508 0.3310600 +H -0.1020082 1.2428251 -0.5238420 +C -0.6861708 -1.6495517 -1.1385052 +C 1.0909262 0.3469163 -0.4325539 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2187248 -0.4248886 -0.4988703 +O 0.6160797 0.1980840 0.9794001 +H 0.3907051 1.6778014 -0.6497917 +H -0.2842537 -1.5483765 -0.5232219 +H 0.1779399 0.9988374 0.7500504 +H -1.2162591 0.2965107 0.4649544 +C -0.3500187 -1.7832772 -0.6747827 +C 0.6947036 0.2987101 -0.4504875 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2676646 0.3302139 -0.3472951 +O 0.5158681 -0.8373292 0.9388692 +H -0.5783440 1.1745370 -0.4086073 +H -0.7900860 -0.8112688 0.2403637 +H 1.4227321 0.9763034 1.5613646 +H -1.7661899 -0.1502651 0.4496071 +C -0.6186519 -1.0847317 -0.5859939 +C -0.5339245 0.9043584 -1.0897460 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5911881 0.3608709 0.0212581 +O 0.5842525 -1.3369349 0.6264585 +H -1.5245364 0.5828550 -0.8668800 +H -1.0028591 0.1976099 1.5883944 +H 2.2715245 0.3709029 1.4521360 +H -1.2938571 0.4741782 0.3503402 +C -1.3009058 -0.3335242 -0.8884568 +C -1.1004949 1.7692015 -1.7021709 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5740581 0.2470090 0.1680854 +O 1.3893009 -1.8127932 0.6711912 +H -1.1461128 0.1401255 -1.0260753 +H -0.6957734 0.9073731 1.4880587 +H 1.1594574 -1.0299123 1.1150629 +H -0.6645193 0.3566337 0.2123190 +C -1.1735915 -0.7182952 -1.2365943 +C -1.2242180 1.7970191 -1.3978619 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6313502 0.0254086 -0.9747598 +O 0.7453027 -0.9789730 1.2227195 +H -0.7240833 1.0420655 -0.1919648 +H -0.2468153 0.6770237 0.8404439 +H 0.2116060 -1.4322591 0.1186212 +H -0.4316022 0.0391227 0.6384904 +C -0.1547171 -1.1850368 -0.8018101 +C -0.4297920 1.2958085 -0.2121432 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4195658 0.9728325 -1.6183341 +O -0.3818277 -0.2968692 1.8097240 +H -0.4707885 0.5509712 0.7566593 +H -1.1162521 0.2846155 0.6978364 +H 0.5243701 -0.9148345 -0.7255221 +H -1.2879437 -1.0203653 1.5909133 +C 1.0995532 -0.9877411 0.4582637 +C -0.4583110 0.3514333 0.6080885 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6267153 1.4882423 -1.9697000 +O -1.2698340 -0.4075061 1.4529324 +H -1.3688721 -0.1361613 1.2744908 +H -1.4475594 0.5390486 0.7749490 +H 0.9528290 -0.6068721 -0.5555220 +H -1.3852021 -1.8077087 2.1260981 +C 1.1526993 -0.3790864 1.1952620 +C -0.9156644 0.3265540 0.5191804 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9452345 1.6490318 -0.8548107 +O -1.1687298 -1.2447702 0.5158306 +H -1.5467529 -0.7953786 1.3195819 +H -1.4761298 1.0186807 1.0214392 +H 1.3315000 -0.4563235 -0.4283003 +H -0.6225170 -1.5714184 1.0188546 +C 0.9241619 0.6695071 1.3121891 +C -1.6832995 0.3829975 0.3968383 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1129208 1.3369053 -0.3340930 +O -0.5146974 -1.4827463 -0.1481818 +H -0.9748873 -1.5753904 0.8187060 +H -1.0487858 1.8670997 1.2546086 +H 0.5030939 -1.2516443 -0.2014705 +H 0.2072405 -0.9216421 0.1229186 +C 0.4684060 1.4049893 0.4454985 +C -1.2611536 0.5861214 0.1703602 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5784186 0.3613994 -0.1573167 +O -0.3951568 -0.4641595 -0.5860642 +H -0.2323368 -1.2640061 0.4996341 +H -0.0805880 1.3246974 0.5976291 +H -0.1924408 -1.7707453 -1.1481128 +H 1.1152268 -0.2749951 0.0035913 +C 0.7706733 1.0712942 0.7499616 +C -0.4353654 -0.1176316 0.7427798 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5722961 -0.2067121 -0.6265212 +O -0.8168157 0.6289464 0.3285531 +H 0.7892714 -0.5639614 1.0079972 +H 0.5695190 0.7407789 -0.5436903 +H -1.2635855 -0.9323390 -1.9684615 +H 1.2812044 -0.5745854 0.1602821 +C 1.5673638 0.3863440 0.9600836 +C 0.6801693 -1.0053985 1.8098764 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2327889 0.6095319 -0.6995027 +O -1.4035343 0.9994532 -0.1335053 +H 0.8152596 -0.6788525 1.6377734 +H 0.4406437 -0.0971277 -0.9415198 +H -1.0468203 0.1255481 -1.9354205 +H 0.6884553 -0.8040585 0.5221860 +C 1.7029661 0.2941430 1.6732819 +C 0.8422774 -1.9186200 1.7636957 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3402076 0.5129428 -0.1194806 +O -1.5857928 0.6880781 -0.6238770 +H 0.5591818 -0.9029819 1.2850454 +H 0.1442723 -0.7054104 -0.9727207 +H -0.5345205 0.8079813 -0.4905663 +H 0.4817675 -0.8854902 -0.2505402 +C 0.9626321 1.4680596 1.7300221 +C 0.0764511 -1.6174755 1.1471668 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5089136 0.0184968 0.9872269 +O -0.6295017 0.4297334 -1.7052437 +H 0.2922151 -1.2484140 0.0731258 +H 0.5170083 -0.0224169 -0.2318756 +H -0.3100803 0.5102773 -0.0472236 +H 0.7866019 -0.1937731 -1.2705301 +C -0.0327024 1.7119433 0.3796050 +C 0.1604801 -0.6706645 0.2895023 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6858099 -1.3938341 1.6657656 +O 0.5699220 0.7681156 -1.8195012 +H 0.9939716 -0.6230248 -0.5772095 +H 1.4776797 -0.1583060 -0.7822918 +H -0.9859004 0.2086030 0.5055865 +H 1.6094220 1.2331996 -1.8841518 +C -0.7211862 1.2779707 -0.4912319 +C 0.7526611 -0.2770120 -0.1118259 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5583634 -1.9939727 1.6158999 +O 0.8864821 1.5443943 -1.1778377 +H 1.6801406 0.2017864 -0.8582107 +H 1.7733002 -0.5423419 -1.2580826 +H -1.7889061 0.2407465 -0.2994909 +H 1.4857708 1.2241173 -1.6637103 +C -0.4499983 0.3922749 -0.3162393 +C 1.3934268 -0.6823629 0.4717692 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7644064 -1.3815129 0.7532667 +O 0.4803884 2.1650230 -0.6130686 +H 1.8728845 1.1372688 -0.6427612 +H 1.3290075 -1.3198512 -1.8157059 +H -1.4902985 0.9457167 -0.1961732 +H 0.7038782 1.0450191 -0.8618319 +C -0.3517879 -0.7083827 -0.3406428 +C 1.9882368 -1.3227920 0.4246750 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2299787 -0.6176759 0.3902200 +O 0.3436213 1.1797169 -0.0281753 +H 0.9861005 0.8680496 -0.2211679 +H 0.5359734 -1.8872413 -1.3263312 +H -0.4946038 1.7783120 0.6694452 +H -0.3293315 0.3805373 -0.4147111 +C -0.5531434 -0.6298035 -0.0726359 +C 1.2578379 -0.7862886 -0.3282340 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0400698 -0.5959390 0.8839882 +O 0.4704449 0.2018892 -0.4779155 +H -0.4777849 0.5633074 -0.6911958 +H -0.0029797 -1.4298330 -0.2875313 +H 0.4044239 1.9787309 1.2691403 +H -0.6922302 0.6496004 -0.6288455 +C -1.0233295 -0.3446074 -0.5367983 +C 0.6114853 0.3628917 -0.9950557 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.1272063 -0.6414731 1.0121217 +O 1.7056281 -0.6113223 -0.8215079 +H -0.3875202 0.3673833 -1.5848376 +H 0.3835820 -0.4321686 0.1674781 +H 0.5324092 1.1176706 2.0281838 +H -0.2195639 1.2638911 -1.1053750 +C -1.9855596 0.0442196 -1.4642522 +C -0.3015078 1.0296602 -1.8984349 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.0344441 -1.1175925 0.8179966 +O 1.9009250 -0.1954638 -0.1397301 +H -0.3611903 1.5028209 -1.8985707 +H 0.5140675 0.1324492 0.7564354 +H 0.4153165 0.2522864 1.5374255 +H -0.1701605 1.9388723 -0.9924052 +C -1.6834096 -1.0021724 -1.7384195 +C -0.1893444 1.1083823 -1.4392223 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6749883 -0.9283714 -0.3411162 +O 1.0781717 -0.0611819 0.8963328 +H 0.2466562 1.5935471 -1.3087452 +H 0.1335377 -0.5880656 -0.0367295 +H 0.1406414 -0.1674333 0.5676609 +H -0.5245899 0.9055550 0.4503623 +C -0.8204926 -1.6559878 -1.0239649 +C 0.3431087 1.0951664 -0.5262572 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2386971 0.2164742 -0.8143747 +O 0.5144819 -0.0947386 1.6552087 +H -0.3396585 1.4931920 -0.2259224 +H -0.6562441 -0.7122367 0.1404839 +H 0.8099393 0.1210209 0.2856637 +H -1.5402451 -0.4853853 1.5625057 +C 0.1419899 -1.7674840 -0.3882350 +C -0.0350787 0.5007308 -0.2627566 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7288107 1.3552976 -1.2816580 +O -0.3617302 -1.2648645 1.4125647 +H -1.2102798 0.4162674 0.1493289 +H -1.5317875 -0.2439828 0.8938686 +H 1.6741353 0.3242570 0.6485948 +H -1.9173162 -0.7881902 1.4079923 +C 0.0594064 -1.0829995 0.1971761 +C -0.9978971 0.8062364 -0.5584406 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3184534 1.1644368 -0.7468298 +O 0.0113986 -1.8461606 0.8236194 +H -1.7642582 -0.3112044 0.0767583 +H -1.7195855 0.4751056 1.6962691 +H 2.0868340 -0.0991337 1.0770669 +H -1.1793339 -0.5074159 0.8051004 +C -0.1951506 -0.1753003 -0.0599271 +C -1.8505913 1.3115259 -0.9463615 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7535633 1.0006487 -0.4500306 +O 0.3990187 -1.7185787 0.2583766 +H -1.6026973 -0.3377674 -0.2262731 +H -1.0719208 1.4637762 1.8236591 +H 1.2453691 -1.1393954 0.6693810 +H -0.4028713 -0.3353098 0.7129629 +C -0.1723429 0.3044757 -0.5237677 +C -1.5378226 1.3941879 -0.8458510 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1567465 0.5716099 -0.8744827 +O -0.0541291 -0.6402363 0.6129040 +H -0.7224771 0.0609571 0.0609979 +H -0.2562878 1.6517619 0.9591531 +H 0.1571072 -1.7976982 -0.8209976 +H -0.1409616 -0.4223705 0.4002097 +C 0.2991972 -0.2207410 -0.0494537 +C -0.8979091 0.9031962 0.3127558 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7280292 0.8680373 -1.4411349 +O -0.7017436 -0.3884042 1.2787308 +H -0.2682430 0.2071321 1.0505745 +H -0.5552301 0.8933796 0.2230729 +H 0.2794274 -1.3693904 -1.1783945 +H -0.1344745 -1.2423521 1.3743910 +C 1.3079957 -0.4238779 0.8110244 +C -0.3331670 -0.5372463 1.4216538 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.0648992 1.5782518 -1.5066327 +O -1.7352075 -0.0722636 1.0213598 +H -0.4105723 -0.5956836 1.6499771 +H -0.9103616 0.4224405 0.0016119 +H 0.3118949 -0.6255853 -1.2966136 +H -0.6260663 -1.8823774 1.5467052 +C 1.9120530 0.1303288 1.7302652 +C -0.4625863 -0.8057933 1.1634566 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5691858 1.7395580 -0.7089038 +O -1.5305999 -0.3501308 0.0267640 +H -0.5693298 -1.6400349 1.7970702 +H -1.0868170 1.0879031 0.4119981 +H 0.3097522 -0.0953770 -0.9263300 +H -0.2541731 -1.4139992 0.8752550 +C 1.1752094 1.3481211 1.4594678 +C -0.7919429 -0.5823091 0.8350172 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8459085 0.5487673 0.5040778 +O -1.1019253 -0.4171507 -1.1790402 +H -0.0952751 -1.8610786 1.0648501 +H -0.3976177 1.1239097 0.8747815 +H 0.1164367 -0.8354835 -0.5541373 +H 0.9814584 -0.5009193 -0.5609268 +C 0.5970934 1.8646143 0.9589373 +C -0.7470007 -0.1407204 0.7064000 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.3775731 -0.3629714 0.9631756 +O -0.4430570 0.2272556 -1.5427443 +H 0.3354949 -1.8399373 0.3105811 +H 0.6088608 1.3584313 0.1036198 +H -0.9245211 -0.9111496 -0.7374169 +H 1.8770150 0.3181506 -0.7352277 +C 0.4225929 1.5718845 0.3925251 +C -0.2297426 -0.3533846 1.0225130 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.2719861 -0.9853452 0.5163103 +O -0.2510935 1.2189011 -0.8655914 +H 1.5229293 -0.5924545 0.1175751 +H 1.3429003 -0.0152444 -1.1396873 +H -1.8169516 -0.8298523 -1.5497482 +H 1.8925637 0.0267589 -0.6387041 +C 0.7467791 0.9743402 0.6040853 +C 1.4434676 -1.1015345 1.5038334 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6405796 -0.4885662 0.0704624 +O -0.7619320 1.6932162 -0.6400360 +H 1.6172252 0.0696988 0.8389500 +H 1.0024344 -0.7019118 -1.6492906 +H -1.6461757 0.3212022 -1.2918568 +H 0.9743061 -0.1848975 -0.5918453 +C 1.1320736 0.3983848 0.8309809 +C 1.6265026 -1.8706084 1.4679035 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5150284 -0.3993224 0.5153260 +O -0.9029628 1.1639242 -0.8202306 +H 0.9948066 -0.3798071 0.8450040 +H 0.5990607 -1.3964748 -1.3623430 +H -0.7978522 1.2150072 -0.1907379 +H 0.4499393 -0.3984983 -0.3164740 +C 0.6707822 0.9413952 0.6250456 +C 1.1419339 -2.0170295 0.8629909 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9161032 -0.4283568 1.4224973 +O -0.1730507 0.5594982 -1.4091514 +H 0.4164588 -0.4690372 -0.1788389 +H 0.5372388 -0.8758779 -0.6297412 +H -0.1241187 1.2604376 0.6648914 +H 0.6356682 0.7258406 -1.3258181 +C -0.6931214 1.1587868 -0.1597524 +C 0.4111999 -0.7219647 -0.5911206 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6181523 -1.2486849 1.9987964 +O 1.3519614 0.4311792 -1.4316200 +H 0.8264227 -0.4535533 -1.3509904 +H 1.1584508 -0.3659444 -0.3826009 +H -0.3865449 0.9585341 0.9673495 +H 1.2235222 1.6272435 -1.9150896 +C -1.4027824 0.7980065 -1.0957281 +C 0.6939465 0.1817076 -0.9099419 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1387931 -1.6897577 1.6917418 +O 1.6306562 0.7297384 -1.0932139 +H 1.3648238 0.7024579 -1.7690821 +H 1.5061660 -0.8556833 -0.6854665 +H -1.0986234 0.5624227 0.6439079 +H 0.9589437 1.9299680 -1.6892564 +C -1.1920974 -0.3727368 -1.3612810 +C 1.0866088 0.1635387 -0.4191941 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3321509 -1.2247012 0.4356870 +O 1.1831878 1.1082780 -0.2519624 +H 1.2399582 1.5481981 -0.8600816 +H 1.4926238 -1.1336215 -1.2668517 +H -0.9935293 0.6846319 0.1900406 +H 0.1411023 1.3043652 -0.6543175 +C -0.6080920 -0.9816352 -0.9437659 +C 1.0165365 -0.2687207 -0.4038972 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7921838 -0.5524492 -0.0570245 +O 0.5191222 1.1251687 0.6516774 +H 0.6559636 1.5812029 -0.5981454 +H 0.0491032 -1.5441441 -0.9651310 +H -0.1707103 1.5307398 0.9547477 +H -1.1104091 0.6054502 0.2395554 +C -0.5956695 -1.6985512 -0.4458002 +C 0.7163277 -0.3530770 -0.4585474 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8710996 0.0732706 0.2817718 +O 0.7668497 -0.3677959 0.3461974 +H -0.6077569 0.8134492 -0.8205754 +H -0.4392721 -1.3169008 0.0169282 +H 0.9982163 1.5761436 1.6489931 +H -1.6082069 0.3488302 0.1882675 +C -1.0650418 -0.8440235 -0.7771631 +C -0.2901166 0.7130904 -1.3410135 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3634506 0.0882777 0.4934926 +O 1.3214466 -1.1189711 0.0477507 +H -1.3423704 0.5507779 -0.9722545 +H -0.9496219 -0.0352765 1.0871290 +H 1.2725229 0.6962162 1.8305074 +H -1.1524669 0.6774424 0.1239933 +C -1.6867406 -0.5461973 -1.3867719 +C -0.9583221 1.7476914 -1.9936633 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2583367 -0.3346247 0.4482249 +O 1.3767601 -1.3703203 0.4990718 +H -0.5367768 0.8068896 -1.3782652 +H -0.2453490 0.5255493 1.2498156 +H 0.8605141 -0.6213456 1.1255094 +H -0.7699728 0.8298947 -0.0263025 +C -1.3167047 -0.7881387 -1.4268244 +C -0.8526142 1.9418467 -1.5711151 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5975384 0.0936552 -0.7438837 +O 0.9994197 -0.9991523 1.2282892 +H -0.4163702 1.1177512 -0.9773799 +H -0.3830756 0.6467963 0.8417158 +H 0.3171275 -0.9412901 0.3389967 +H -0.6036706 0.1981827 0.6020060 +C -0.4880783 -1.4745089 -1.0715912 +C -0.3995061 0.9446233 -0.4260618 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6092200 0.8269654 -1.5051189 +O -0.1049375 -0.3925525 1.8827718 +H -0.6493312 0.9526365 0.3029070 +H -0.9665982 0.1025730 0.5074411 +H 0.6099234 -0.8149085 -0.3049825 +H -1.4940491 -0.7279290 1.3739835 +C 0.7840793 -1.6625173 0.3984032 +C -0.6131546 0.4487865 0.0386363 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.8480412 1.8277345 -1.6626007 +O -0.9835402 -1.0229897 1.7087042 +H -1.3853060 0.3202077 1.3300849 +H -1.9276833 0.5275327 0.7829487 +H 1.1674414 -0.2739013 -0.1801873 +H -1.2757562 -1.4304099 1.9085385 +C 0.7466994 -0.7746595 0.8825544 +C -1.2904179 0.3059376 0.3548132 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.3833094 1.8554473 -0.9352314 +O -1.0331066 -1.5242903 0.6930916 +H -1.9236285 -1.0682056 0.8983211 +H -1.8943130 1.1139243 1.8765535 +H 1.6958119 -0.6154594 0.0740958 +H -0.9295392 -1.4860221 1.2192139 +C 0.2560773 0.4071668 0.7379877 +C -2.0260046 0.7086830 -0.3893107 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1440026 1.1505645 -0.3072116 +O -0.5232994 -1.5123651 -0.2827520 +H -1.2558147 -1.3895726 0.5524155 +H -1.1068731 2.0301606 1.8079087 +H 0.9515539 -1.6433373 -0.2216230 +H 0.1984181 -0.8552867 0.5571742 +C 0.3345317 1.0173143 0.4138383 +C -1.8182113 0.9777018 0.0051882 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0340227 0.4579390 -0.5270550 +O -0.3172959 -0.4724218 -0.0868591 +H -0.1628355 -0.5911919 0.3689236 +H -0.0346722 2.0517749 0.9883855 +H -0.1430695 -1.6084309 -0.9501681 +H 0.8755324 -0.5782184 0.4518460 +C 0.6444092 0.9503598 0.5622539 +C -0.5343889 0.1544843 1.1714422 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2701176 0.3989689 -1.0366153 +O -1.0241854 0.2317097 0.4896968 +H 0.5980423 -0.4430743 1.0816636 +H 0.1793322 1.0519114 -0.2077829 +H -0.9412279 -1.5473584 -1.8390790 +H 0.6538838 -1.0506635 0.5513652 +C 1.4041289 0.2549593 1.2880502 +C 0.2659465 -0.9669566 1.8413284 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0996564 1.0221239 -0.8459244 +O -1.8523328 0.6923491 0.3431461 +H 0.3576448 -0.6001329 1.8099959 +H -0.1405733 0.0234832 -0.7696492 +H -0.7040652 -0.2902231 -1.5298466 +H 0.6520147 -1.3013269 0.7743331 +C 1.8558025 0.4737585 1.8356845 +C 0.3517933 -1.5789193 1.7829507 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4325864 0.7385423 -0.0604249 +O -1.1420143 0.3547400 -0.8192002 +H 0.0489314 -1.5569476 1.7059028 +H -0.6964142 -0.0323334 -0.3419710 +H -0.1614394 0.4385577 -0.8769933 +H 0.4682989 -1.0398042 0.1807521 +C 1.2941119 1.1633177 1.7940119 +C 0.1368880 -1.6267665 1.1976060 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0132213 -0.1916248 0.7143817 +O -0.6213370 0.0651445 -1.4232100 +H 0.1831804 -1.5083131 0.5423355 +H 0.0489121 0.3726908 -0.3436313 +H -0.3817340 0.4626270 -0.0500029 +H 0.9936733 -0.2498541 -0.8444075 +C 0.3565162 1.9466614 0.7041770 +C -0.1344817 -0.6329554 0.2928696 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6550207 -0.9266944 1.5143294 +O -0.0120977 0.8369561 -1.8005332 +H 1.1909149 -1.1899409 -0.5085608 +H 1.2225440 0.0461815 -0.6286477 +H -1.1956492 0.2190731 -0.2597220 +H 1.6135801 0.8014641 -1.5471437 +C -0.2085555 1.5834246 0.0786866 +C 0.8388085 -0.4868909 0.4009579 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.6847545 -1.7220604 1.1046282 +O 0.1921040 1.4709828 -1.2921220 +H 1.8198992 -0.0632526 -0.5150975 +H 1.7325340 -0.5076574 -1.2716168 +H -1.7567069 0.0993509 -0.8469326 +H 1.7112724 1.2694963 -1.2468256 +C 0.1117130 0.4223064 -0.0905362 +C 1.2162523 -1.1257105 0.8729189 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.8977455 -1.2321563 0.7780394 +O 0.0244541 1.7250820 -0.4427189 +H 2.0952539 0.3156957 -0.1341476 +H 1.2675646 -1.4676550 -1.9525155 +H -1.5118967 0.7976525 -0.6829769 +H 0.8958177 0.4692627 -0.9525341 +C 0.0874874 -0.2710976 0.0201565 +C 1.9399698 -1.2166878 0.6013858 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.3903731 -0.6717300 0.2748197 +O -0.2623969 1.3575028 -0.5298387 +H 1.3452874 0.4101104 -0.0531219 +H 0.9638944 -1.9026110 -1.5586456 +H -1.0084578 1.6949745 0.1736472 +H 0.0983642 0.3856499 -0.4302567 +C -0.0284338 0.0187077 0.2744525 +C 1.4204910 -1.1421044 0.1213617 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2780305 -0.7104080 1.2117170 +O 0.3599318 0.5222596 -0.8385810 +H 0.0713698 0.2396754 -0.6271261 +H 0.0720859 -1.4838783 -0.5761365 +H -0.1162095 1.7222013 1.4025471 +H -0.4376291 0.8426456 -0.8220301 +C -1.1829397 0.3184515 -0.4104867 +C 0.5747769 -0.3555843 -1.2249265 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.7644417 -0.8903858 1.5212534 +O 1.3123682 0.0569677 -1.1025472 +H 0.1400758 0.2176222 -1.3806748 +H 0.5534752 -0.5824962 -0.0540290 +H 0.0944879 1.0224332 1.5767157 +H 0.2752683 1.5508275 -1.0746027 +C -1.8592393 -0.1228842 -1.2819828 +C 0.1615637 0.7133432 -1.4156757 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5902702 -1.3736442 1.1829715 +O 2.1164363 0.1977698 -0.5190300 +H 0.3904207 1.1698812 -1.7873338 +H 0.6936562 -0.5895858 -0.0486036 +H -0.2153522 0.4240043 1.3297380 +H 0.2898027 1.9640915 -1.0192095 +C -1.6025511 -1.0505491 -1.7647675 +C 0.4335386 1.0656851 -1.3476503 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3336587 -1.2393209 0.0632994 +O 1.3872500 0.3749972 0.6666213 +H 0.5018938 1.8086051 -1.2137953 +H 0.7616773 -0.9981499 -0.4594740 +H -0.4917399 -0.1299676 0.5976212 +H -0.4087907 1.0233131 0.0871053 +C -0.7759843 -1.9990142 -1.4946910 +C 0.4507722 0.7650262 -0.6571624 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1453404 0.2508649 -0.9718360 +O 0.4238440 -0.0469436 1.3537208 +H -0.0269196 2.0153477 -0.2270234 +H -0.3529837 -1.2249949 -0.2538629 +H 0.7081680 0.5735588 0.5549125 +H -1.4619671 0.2464519 0.9492251 +C -0.0324215 -1.8178869 -0.4654485 +C 0.0101118 0.3848535 -0.3687830 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7808375 1.0412546 -0.7055190 +O 0.1680727 -0.8944789 1.3600823 +H -1.2971708 0.7113837 -0.2706004 +H -1.3330093 -0.7911788 0.5792280 +H 1.2699724 0.8260774 1.1552856 +H -2.0808330 -0.4533583 1.2050619 +C -0.1724240 -1.1685518 -0.2366194 +C -0.7772303 1.0723324 -1.0664108 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1112378 0.8289157 -0.3401964 +O 0.2911450 -1.6420961 0.7054849 +H -1.7555873 -0.0052762 -0.2727232 +H -1.5533717 0.3568855 1.6758075 +H 1.6916281 -0.1478543 1.4057683 +H -1.4019884 -0.0293843 0.9795606 +C -0.7394627 -0.2464583 -0.9478337 +C -1.6612401 1.8788989 -1.4981062 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5709665 0.4602937 -0.5439179 +O 0.7252513 -1.6781113 0.7763297 +H -1.1069358 0.1311247 -0.7244926 +H -0.9335261 1.2713443 1.9094269 +H 1.2572110 -1.0733696 0.5339763 +H -0.7937316 0.1222696 0.3821511 +C -0.8759285 -0.4177357 -0.7105042 +C -1.2257009 1.5663627 -1.2192535 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.8686656 0.2643410 -0.7868947 +O 0.6665118 -1.0546485 1.1896970 +H -0.8728506 0.1509374 0.1960856 +H -0.4835315 1.3049339 1.5486016 +H 0.4548091 -1.5038305 -0.0628239 +H -0.3539881 0.0662341 0.7978503 +C 0.2548108 -0.6430308 -0.4021266 +C -0.7869719 1.3299226 0.0110153 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.1887795 1.0291195 -1.6289786 +O -0.7288850 -0.4049954 1.7148565 +H -0.3152546 0.3550696 1.0050146 +H -0.5111414 0.6488318 0.4475890 +H 0.2594324 -1.3093178 -1.1280246 +H -0.5311892 -1.0875278 1.4450483 +C 1.3007618 -0.7580582 0.7777249 +C -0.4482981 0.3554923 1.1502697 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6480620 1.6739124 -1.9454442 +O -1.6212418 -0.6589024 1.1668881 +H -0.8562982 -0.3096442 1.4755282 +H -1.5128144 0.4816309 0.5337847 +H 0.5733341 -0.7662348 -1.1980334 +H -0.5595936 -1.8727440 1.6690153 +C 1.6133552 -0.0053296 1.7706305 +C -0.7093617 -0.7098272 1.1232800 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6422240 1.6658070 -0.9057451 +O -1.3093757 -0.9627141 0.2727182 +H -1.2929315 -1.3843596 1.4629654 +H -1.5045697 0.8876560 0.8854785 +H 0.9872101 -0.5654861 -0.5541403 +H -0.6581046 -1.5351335 0.8547334 +C 1.1081381 1.2095075 1.4192961 +C -0.7658204 0.1074425 0.6998358 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6094654 0.8987248 0.0610086 +O -0.9859505 -1.0702926 -0.6209112 +H -0.9573207 -1.6554872 0.7205496 +H -0.6624592 1.1604808 0.8613545 +H 0.2040194 -1.0042625 -0.3924912 +H 0.6533226 -0.8029845 -0.1566788 +C 0.3876772 1.6023513 0.9042641 +C -1.1861772 0.0213748 0.2547215 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1979862 -0.0331691 0.1993837 +O -0.5752737 -0.2652979 -0.6175213 +H 0.4230362 -1.3803836 0.4688340 +H 0.4914654 1.3190111 0.4980957 +H -0.8128140 -1.1750491 -1.3183978 +H 1.3537677 -0.1323017 -0.7110257 +C 0.4148779 1.3927834 0.5219586 +C -0.0684877 -0.4723703 1.0463107 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.0986194 -0.5809766 -0.0898724 +O -0.5763872 1.0226218 -0.4356628 +H 1.3558759 -0.4672507 0.7902123 +H 1.0074551 0.2799458 -0.8801587 +H -1.2083647 -1.0097680 -1.5148282 +H 1.5221100 -0.3578821 -0.1062654 +C 1.2988087 0.8429366 0.7864964 +C 0.7471406 -1.0461944 1.5198404 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2270342 -0.2549751 -0.4740871 +O -1.2696209 1.5271830 -0.1030073 +H 1.3510577 -0.4821043 1.1437948 +H 0.8234057 -0.5111230 -1.3960049 +H -1.1086627 0.2217641 -1.5571955 +H 0.8814760 -0.6147352 0.0526922 +C 1.7374639 0.5352420 1.3531831 +C 1.3587569 -1.8248454 1.7589464 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5248126 0.0982606 0.2897639 +O -0.9506183 1.1280746 -0.9322726 +H 0.5348000 -0.9181138 1.1786981 +H 0.0637061 -0.8850721 -1.3354179 +H -0.6288523 1.0181957 -0.6966148 +H 0.2754763 -0.5415940 -0.1459151 +C 0.8344254 0.9261707 0.9204480 +C 0.9437812 -1.6907347 0.7515321 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9567188 -0.4461323 1.3446399 +O -0.4879599 0.5364470 -1.4808966 +H 0.3974148 -1.1468644 0.0603735 +H 0.5533938 -0.5120647 -0.6733438 +H -0.4156811 0.8299225 0.2129800 +H 0.9485582 0.3159940 -1.0371084 +C -0.1624047 1.1774474 0.3673569 +C 0.2760925 -0.8392256 0.0502426 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5696769 -1.3001915 1.6639246 +O 0.9660563 0.8350976 -2.1691022 +H 0.5441648 -0.6865710 -1.1002490 +H 1.1013520 -0.2801619 -0.6793680 +H -0.9627273 0.9389764 0.7424605 +H 1.4936345 1.3076195 -1.7768432 +C -1.0611564 1.1077869 -0.8193920 +C 0.6094986 0.0918432 -0.1133519 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.4678273 -1.8438084 1.4949927 +O 1.3558920 1.3981285 -1.0903358 +H 1.5656413 0.3541845 -1.2841459 +H 1.9092993 -0.7183623 -1.3205337 +H -1.4752542 0.2516294 0.0929025 +H 1.2721329 1.5242101 -1.7950300 +C -0.6788920 0.0097814 -1.1090607 +C 1.6561525 -0.3359997 -0.1669763 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.2526143 -1.8261825 0.7940325 +O 0.9105433 1.5367805 -0.2899110 +H 1.5747602 1.2703174 -0.8564450 +H 1.2741461 -1.5426180 -1.4563225 +H -1.1748419 0.7924114 0.2108455 +H 0.4405680 1.0514198 -0.4671664 +C -0.3716403 -1.0819097 -0.6661211 +C 1.7053528 -0.5885290 0.2240559 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3494073 -0.8086744 0.0231170 +O 0.4326839 0.8481025 0.1326746 +H 0.9205069 1.0914377 -0.7151668 +H 0.4921306 -1.8810296 -1.1621817 +H -0.3672199 1.9710324 0.5873815 +H -0.3411065 0.5185399 -0.1609683 +C -0.4265080 -1.1757363 -0.3021357 +C 1.2328112 -0.3464482 -0.6010967 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.6285982 -0.1735112 0.6986986 +O 0.6092108 -0.1044734 -0.0779211 +H -0.2877376 0.9959303 -0.6198498 +H -0.3988824 -1.3561633 -0.0707713 +H 0.9509660 1.5031007 1.5683092 +H -1.5248703 0.5409357 0.1028952 +C -1.4084642 -0.3209185 -0.9271121 +C -0.0338047 0.5095255 -1.3637133 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.1678769 -0.3251320 0.9928171 +O 1.2864873 -0.5432845 -0.0900998 +H -0.9379598 0.5553886 -1.1274004 +H -0.1950800 -0.3268769 0.6152603 +H 1.1222918 0.9561940 1.6003970 +H -0.7691400 1.1803639 -0.6419562 +C -1.8235747 -0.6835822 -1.7437769 +C -0.5353585 1.4119053 -1.7193401 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2198127 -0.6092823 0.4780848 +O 2.1339098 -0.8768282 0.0222571 +H -0.3410683 0.9550517 -1.6270004 +H 0.1992562 0.3740189 0.8749410 +H 0.6190724 -0.0406646 1.3853995 +H -0.3570143 0.8472170 -0.2969538 +C -1.5120909 -0.6569264 -1.9654954 +C -0.2142443 1.8963382 -1.4411382 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7107652 -0.2199582 -0.8064693 +O 1.3457689 -0.3841616 1.1915570 +H -0.0039685 1.4144131 -1.1154461 +H 0.3117177 0.1782281 0.3981764 +H 0.4884892 -0.6494228 0.2569091 +H -0.5945638 0.7052115 0.4160278 +C -0.4807031 -1.8984622 -1.3396983 +C 0.1126972 1.1546906 -0.5519846 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6844505 0.5134525 -1.2006356 +O 0.1951469 -0.6348501 1.8711371 +H -0.7599648 1.5500339 0.2171802 +H -0.6967487 -0.1877565 0.2353546 +H 0.7095819 -0.2368501 -0.0520975 +H -1.6901600 -0.3447099 1.2721648 +C 0.4487170 -1.7190850 -0.0157046 +C -0.1657028 0.4520478 -0.0698324 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.9269237 1.4988479 -1.5153155 +O -0.3054137 -1.0681950 1.4169648 +H -1.3519512 0.3204717 0.7119503 +H -1.5648447 -0.1740424 0.8799105 +H 1.5930049 0.0706014 0.0163523 +H -1.8136511 -0.9336662 1.7938443 +C 0.6915868 -0.7593999 0.4548819 +C -1.1669490 0.4149414 -0.2853634 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2365165 1.6320107 -0.7810086 +O -0.4943033 -1.6714167 0.5293710 +H -1.9006741 -0.3930659 0.4413485 +H -1.8324545 0.9091659 1.5356366 +H 1.9645475 -0.5053955 0.4175908 +H -1.2436097 -1.2300648 1.1967453 +C 0.1704706 0.0786493 0.3751417 +C -1.8002212 0.8425687 -0.3301233 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3493331 0.9845593 -0.8586177 +O -0.0399741 -1.7871079 0.3791725 +H -1.5182060 -1.0409907 0.3163597 +H -1.1105601 1.6441656 1.7263050 +H 1.3046612 -1.8145274 0.1062074 +H -0.0978825 -0.5987211 0.4408529 +C -0.0141234 0.6357172 -0.0889587 +C -1.7283419 1.1845888 -0.2524782 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3231916 0.5399858 -0.9451186 +O -0.2218260 -0.6176078 0.4954652 +H -0.6717273 -0.3246410 0.5599070 +H -0.3492011 1.7759793 1.3185288 +H 0.3048773 -1.8680939 -0.9570069 +H 0.6546142 -0.6007494 0.4414846 +C 0.7031908 -0.0519877 0.0400261 +C -0.7014715 0.7222532 0.5735818 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.5083901 0.5726571 -1.3128743 +O -1.3480291 0.2767087 0.8508564 +H 0.0127967 -0.3056284 1.1737131 +H -0.0989486 0.7532456 -0.0882205 +H -0.6562093 -1.5348202 -1.8571463 +H 0.3167729 -1.2246170 1.1827160 +C 1.5840477 0.0059289 1.0778573 +C -0.1105323 -0.7007366 1.2846743 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7450524 0.9407035 -1.3079190 +O -1.8789263 0.4550683 0.4086389 +H 0.3312000 -0.7049101 1.8826386 +H -0.8027272 0.3862546 -0.1526008 +H -0.1675864 -0.6093215 -1.9197405 +H 0.1343570 -1.6165305 1.4669924 +C 1.8464045 0.3012290 1.7795586 +C -0.2438180 -1.3396654 1.6832110 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.2367655 1.0732902 -0.3579393 +O -1.5777606 -0.0176892 -0.2789991 +H -0.1614419 -1.5834122 1.7613595 +H -0.9041379 0.4819973 -0.0461584 +H 0.2220004 -0.1799748 -0.7743165 +H 0.3688955 -1.2916122 0.1148318 +C 1.2260531 1.4888074 1.7381197 +C -0.3120608 -0.6585542 1.1238385 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9936491 0.2385378 0.5454168 +O -0.9203540 0.0430339 -1.1121999 +H -0.0861102 -1.9297782 0.8352293 +H -0.1813118 0.6890739 0.2911874 +H 0.0349021 -0.0739657 -0.4596242 +H 1.1006175 -0.4453278 -0.8126958 +C 0.6695297 1.9275714 0.6907844 +C -0.3692230 -0.3362312 0.5001490 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5366694 -0.8785892 1.2465692 +O -0.0996872 0.3945767 -1.6616986 +H 0.7630852 -1.2367548 -0.0568201 +H 0.8931596 0.8734191 -0.3179522 +H -1.1300613 -0.5382035 -0.8821080 +H 1.8133832 0.3973180 -1.3258081 +C 0.0913327 1.4552481 0.2809162 +C 0.2448921 -0.6378156 0.5244277 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.5588016 -1.4615327 0.9331161 +O -0.3196424 1.5701235 -1.4045281 +H 1.6584650 -0.2214844 -0.1855789 +H 1.6074987 0.0492234 -1.1184619 +H -1.6166211 -0.4312480 -1.4893458 +H 1.7083340 0.6549130 -0.7734341 +C 0.4946783 0.5967461 0.2977997 +C 1.1069747 -1.2289874 1.1599929 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.5492991 -0.9518311 0.4261660 +O -0.6375679 1.6891309 -0.4427431 +H 1.8401667 0.0351633 0.3252470 +H 1.2522466 -1.1891829 -1.8149017 +H -1.7330338 0.8790736 -0.7869403 +H 1.1249598 0.1244985 -0.5539610 +C 0.6341599 0.1553561 0.4257788 +C 1.7042963 -1.6934935 1.1839699 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.4799268 -0.2542677 0.5945901 +O -0.3353130 1.2349403 -0.8026497 +H 1.0270297 0.1245864 -0.3174606 +H 0.8445915 -1.7588762 -1.2868955 +H -0.8345208 1.6670316 -0.1012499 +H 0.0331478 0.1581087 -0.8023282 +C 0.2960939 0.2309979 0.4899250 +C 1.3062424 -1.5862659 0.3417806 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.6938932 -0.5227407 1.6228566 +O 0.3283957 0.6183050 -1.0819378 +H 0.6784470 -0.5526492 -0.5843845 +H 0.7972226 -1.2583611 -0.4515807 +H -0.3734900 1.7263807 1.0921874 +H -0.1249974 0.7489430 -1.1124313 +C -0.8984742 0.4173310 -0.3437582 +C 0.6362158 -0.5082341 -0.6983267 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -1.1203307 -1.4175927 1.9573018 +O 1.4036646 0.4741882 -1.4395079 +H 0.3826977 0.0450477 -1.7073736 +H 1.0689315 -0.2571431 -0.2920908 +H -0.4117740 0.8164703 1.3980889 +H 0.5356001 1.7753463 -1.7204470 +C -1.7083487 0.4901453 -1.0893879 +C 0.6879484 0.6851435 -1.3241861 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O -0.9370606 -1.5808380 1.5574254 +O 1.8618994 0.6957468 -0.7396679 +H 0.8280377 1.0117571 -1.9674236 +H 1.3430876 -0.4458155 -0.5509423 +H -0.6636440 0.2858770 1.0689707 +H 0.5775916 1.8431273 -1.2647834 +C -1.4647507 -0.3998820 -1.8487659 +C 0.9296067 0.6091658 -1.0822964 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.0464569 -1.3987142 0.4032914 +O 1.4492557 0.8782838 0.3789402 +H 0.8402115 1.9675818 -1.0679235 +H 0.9557815 -0.9070389 -0.9595091 +H -0.5408141 0.5374486 0.4509931 +H -0.2172678 1.4540246 -0.0578874 +C -0.6917971 -1.5567477 -1.3071324 +C 1.0420240 0.1778817 -0.4460753 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.2145207 -0.1738932 -0.0892271 +O 0.8020869 0.3318039 1.0731110 +H 0.0446174 1.8807146 -0.4941872 +H -0.0186922 -1.3496169 -0.6801716 +H 0.1388553 1.1816271 0.8157912 +H -1.2214628 0.4152705 0.5646886 +C -0.7526625 -1.5978970 -0.2597947 +C 0.9380960 0.3209533 -0.6984884 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.4136289 0.3476708 -0.2326763 +O 0.3069809 -0.6427489 0.7635890 +H -0.9437277 0.8739907 -0.6651100 +H -0.8187420 -0.8744392 0.2470504 +H 1.4939457 1.2070649 1.2548534 +H -1.5516987 0.0767980 0.6197326 +C -0.2810403 -1.2275451 -0.4799770 +C -0.5547869 0.9599147 -1.3275709 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.9988396 0.5617336 -0.0961031 +O 0.8137142 -1.6895476 0.2003438 +H -1.4718982 0.3877160 -0.7991454 +H -1.2468152 0.1785096 1.6180974 +H 1.7149358 0.2043628 1.4499427 +H -1.2640159 0.3483361 0.1613090 +C -1.5050507 -0.5767269 -1.1522549 +C -1.3204728 1.6315333 -1.6989133 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.3203056 0.3853558 -0.2667463 +O 1.2261347 -1.4458644 0.6394013 +H -1.0388368 0.5456569 -1.0943024 +H -0.7419344 1.1579699 1.7301547 +H 1.1810271 -1.1915219 1.1076433 +H -0.5175935 0.5665095 0.2292661 +C -1.1077561 -0.7428789 -1.2560935 +C -1.0241489 1.8353668 -1.3486218 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 0.7069222 0.1063469 -0.7909262 +O 0.5616543 -0.8218488 1.0466480 +H -0.8028543 0.7720445 -0.7066691 +H -0.6759641 1.0611555 1.0618178 +H 0.5558430 -1.0953999 -0.1524737 +H -0.3556602 0.1604906 0.8333045 +C -0.1147714 -1.0449002 -0.9003618 +C -0.4791072 1.0609174 -0.1713538 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.6868723 0.8864806 -1.7300109 +O -0.4091326 -0.6813091 1.8143562 +H -0.6827736 0.7061227 0.4407102 +H -0.9104505 0.4913709 0.6628180 +H 0.7892226 -0.6947825 -0.6464621 +H -0.9521781 -0.8762412 1.5558177 +C 0.8608941 -1.4037924 0.2858294 +C -0.6207421 0.3488664 0.5905236 +9 20.0 20.0 20.0 + +X 0.0000000 0.0000000 0.0000000 +O 1.7240335 1.6803697 -1.8283685 +O -1.2696344 -0.8049932 1.6188946 +H -1.1785533 -0.2822558 1.4653113 +H -1.4163194 0.3734298 0.6585214 +H 1.1628177 -0.7324241 -0.6058632 +H -1.2001109 -1.9281508 1.6809579 +C 0.8468871 -0.4255947 1.5458711 +C -1.1077169 0.1674152 0.6162011 diff --git a/tests/data/vacf/vacf_ref.dat b/tests/data/vacf/vacf_ref.dat new file mode 100644 index 00000000..8e56c1c4 --- /dev/null +++ b/tests/data/vacf/vacf_ref.dat @@ -0,0 +1,101 @@ + 0.000000 1.00000000 + 0.002000 0.81100607 + 0.004000 0.45503623 + 0.006000 0.21647285 + 0.008000 0.18979879 + 0.010000 0.18928596 + 0.012000 -0.02384016 + 0.014000 -0.45085893 + 0.016000 -0.82132708 + 0.018000 -0.88664530 + 0.020000 -0.68101031 + 0.022000 -0.48054853 + 0.024000 -0.48209200 + 0.026000 -0.56759993 + 0.028000 -0.46075984 + 0.030000 -0.07628917 + 0.032000 0.40020815 + 0.034000 0.64656428 + 0.036000 0.62364851 + 0.038000 0.51564931 + 0.040000 0.56311503 + 0.042000 0.75255336 + 0.044000 0.82636262 + 0.046000 0.59183764 + 0.048000 0.13614188 + 0.050000 -0.23208280 + 0.052000 -0.33369519 + 0.054000 -0.28998577 + 0.056000 -0.37819503 + 0.058000 -0.67381108 + 0.060000 -0.93636403 + 0.062000 -0.91927823 + 0.064000 -0.58631536 + 0.066000 -0.22500937 + 0.068000 -0.06419598 + 0.070000 -0.06863552 + 0.072000 -0.00019336 + 0.074000 0.31205437 + 0.076000 0.72951688 + 0.078000 0.95063401 + 0.080000 0.82468126 + 0.082000 0.54763432 + 0.084000 0.38917230 + 0.086000 0.42801266 + 0.088000 0.43612465 + 0.090000 0.19179981 + 0.092000 -0.27454913 + 0.094000 -0.65537143 + 0.096000 -0.75794524 + 0.098000 -0.61933061 + 0.100000 -0.51935911 + 0.102000 -0.61133439 + 0.104000 -0.74848035 + 0.106000 -0.66685066 + 0.108000 -0.27597066 + 0.110000 0.18660672 + 0.112000 0.44244789 + 0.114000 0.42092370 + 0.116000 0.39197597 + 0.118000 0.55276297 + 0.120000 0.81911596 + 0.122000 0.94779020 + 0.124000 0.72470384 + 0.126000 0.31759665 + 0.128000 0.00460078 + 0.130000 -0.07487094 + 0.132000 -0.06813980 + 0.134000 -0.22322645 + 0.136000 -0.59020764 + 0.138000 -0.92328205 + 0.140000 -0.93773576 + 0.142000 -0.67583794 + 0.144000 -0.38207310 + 0.146000 -0.29413495 + 0.148000 -0.33039885 + 0.150000 -0.23720036 + 0.152000 0.13131675 + 0.154000 0.57788105 + 0.156000 0.83238459 + 0.158000 0.76324464 + 0.160000 0.56575610 + 0.162000 0.50771190 + 0.164000 0.62015305 + 0.166000 0.65835867 + 0.168000 0.40000244 + 0.170000 -0.06630091 + 0.172000 -0.46697043 + 0.174000 -0.55609850 + 0.176000 -0.48314877 + 0.178000 -0.48944916 + 0.180000 -0.68000778 + 0.182000 -0.88204253 + 0.184000 -0.81768059 + 0.186000 -0.45854038 + 0.188000 -0.03092570 + 0.190000 0.18954862 + 0.192000 0.19218890 + 0.194000 0.21366084 + 0.196000 0.45647381 + 0.198000 0.81729673 + 0.200000 0.98330655 diff --git a/tests/data/vacf/windowed_blackman_ref.dat b/tests/data/vacf/windowed_blackman_ref.dat new file mode 100644 index 00000000..e14e2831 --- /dev/null +++ b/tests/data/vacf/windowed_blackman_ref.dat @@ -0,0 +1,101 @@ + 0.0000 1.0000000000 + 0.0020 0.8110060700 + 0.0040 0.4550362300 + 0.0060 0.2164728500 + 0.0080 0.1897987900 + 0.0100 0.1892859600 + 0.0120 -0.0238401600 + 0.0140 -0.4508589300 + 0.0160 -0.8213270800 + 0.0180 -0.8866453000 + 0.0200 -0.6810102999 + 0.0220 -0.4802029334 + 0.0240 -0.4807065147 + 0.0260 -0.5639354984 + 0.0280 -0.4554832705 + 0.0300 -0.0749279746 + 0.0320 0.3899612607 + 0.0340 0.6241242538 + 0.0360 0.5955117638 + 0.0380 0.4863633780 + 0.0400 0.5238676936 + 0.0420 0.6895072955 + 0.0440 0.7445688095 + 0.0460 0.5236258656 + 0.0480 0.1180978876 + 0.0500 -0.1970916398 + 0.0520 -0.2770053108 + 0.0540 -0.2349418765 + 0.0560 -0.2985878285 + 0.0580 -0.5175922016 + 0.0600 -0.6987176606 + 0.0620 -0.6653013983 + 0.0640 -0.4108815719 + 0.0660 -0.1524373246 + 0.0680 -0.0419746084 + 0.0700 -0.0432403768 + 0.0720 -0.0001171744 + 0.0740 0.1815831006 + 0.0760 0.4069133644 + 0.0780 0.5073784750 + 0.0800 0.4204118894 + 0.0820 0.2661671236 + 0.0840 0.1799993817 + 0.0860 0.1880296112 + 0.0880 0.1816267024 + 0.0900 0.0755715058 + 0.0920 -0.1021394345 + 0.0940 -0.2297348004 + 0.0960 -0.2498179570 + 0.0980 -0.1915190435 + 0.1000 -0.1503461261 + 0.1020 -0.1652882608 + 0.1040 -0.1885625681 + 0.1060 -0.1561548270 + 0.1080 -0.0599162487 + 0.1100 0.0374650557 + 0.1120 0.0819211560 + 0.1140 0.0716703112 + 0.1160 0.0611938864 + 0.1180 0.0788764484 + 0.1200 0.1064850648 + 0.1220 0.1118622245 + 0.1240 0.0773675266 + 0.1260 0.0305486195 + 0.1280 0.0003970358 + 0.1300 -0.0057704835 + 0.1320 -0.0046670941 + 0.1340 -0.0135138870 + 0.1360 -0.0313926138 + 0.1380 -0.0428599783 + 0.1400 -0.0377090262 + 0.1420 -0.0233438566 + 0.1440 -0.0112258956 + 0.1460 -0.0072688951 + 0.1480 -0.0067771527 + 0.1500 -0.0000000000 + 0.1520 0.0000000000 + 0.1540 0.0000000000 + 0.1560 0.0000000000 + 0.1580 0.0000000000 + 0.1600 0.0000000000 + 0.1620 0.0000000000 + 0.1640 0.0000000000 + 0.1660 0.0000000000 + 0.1680 0.0000000000 + 0.1700 -0.0000000000 + 0.1720 -0.0000000000 + 0.1740 -0.0000000000 + 0.1760 -0.0000000000 + 0.1780 -0.0000000000 + 0.1800 -0.0000000000 + 0.1820 -0.0000000000 + 0.1840 -0.0000000000 + 0.1860 -0.0000000000 + 0.1880 -0.0000000000 + 0.1900 0.0000000000 + 0.1920 0.0000000000 + 0.1940 0.0000000000 + 0.1960 0.0000000000 + 0.1980 0.0000000000 + 0.2000 0.0000000000 diff --git a/tests/data/vacf/windowed_exponential_ref.dat b/tests/data/vacf/windowed_exponential_ref.dat new file mode 100644 index 00000000..9921f2fd --- /dev/null +++ b/tests/data/vacf/windowed_exponential_ref.dat @@ -0,0 +1,101 @@ + 0.0000 1.0000000000 + 0.0020 0.8110060700 + 0.0040 0.4550362300 + 0.0060 0.2164728500 + 0.0080 0.1897987900 + 0.0100 0.1892859600 + 0.0120 -0.0238401600 + 0.0140 -0.4508589300 + 0.0160 -0.8213270800 + 0.0180 -0.8866453000 + 0.0200 -0.6810103100 + 0.0220 -0.4617059526 + 0.0240 -0.4450270057 + 0.0260 -0.5034159778 + 0.0280 -0.3926336359 + 0.0300 -0.0624602896 + 0.0320 0.3148148810 + 0.0340 0.4886627706 + 0.0360 0.4528617650 + 0.0380 0.3597563161 + 0.0400 0.3774672928 + 0.0420 0.4846717726 + 0.0440 0.5113394649 + 0.0460 0.3518596380 + 0.0480 0.0777654758 + 0.0500 -0.1273697412 + 0.0520 -0.1759549456 + 0.0540 -0.1469117186 + 0.0560 -0.1840872840 + 0.0580 -0.3151188203 + 0.0600 -0.4207354796 + 0.0620 -0.3968620859 + 0.0640 -0.2431935922 + 0.0660 -0.0896705184 + 0.0680 -0.0245801841 + 0.0700 -0.0252495967 + 0.0720 -0.0000683440 + 0.0740 0.1059722678 + 0.0760 0.2380266178 + 0.0780 0.2980106252 + 0.0800 0.2483892222 + 0.0820 0.1584767294 + 0.0840 0.1082044157 + 0.0860 0.1143372912 + 0.0880 0.1119360915 + 0.0900 0.0472972508 + 0.0920 -0.0650483100 + 0.0940 -0.1491872374 + 0.0960 -0.1657716336 + 0.0980 -0.1301437012 + 0.1000 -0.1048567959 + 0.1020 -0.1185866708 + 0.1040 -0.1394972588 + 0.1060 -0.1194103789 + 0.1080 -0.0474793346 + 0.1100 0.0308458834 + 0.1120 0.0702684351 + 0.1140 0.0642287919 + 0.1160 0.0574664062 + 0.1180 0.0778613191 + 0.1200 0.1108552905 + 0.1220 0.1232399379 + 0.1240 0.0905374045 + 0.1260 0.0381216431 + 0.1280 0.0005305855 + 0.1300 -0.0082959366 + 0.1320 -0.0072540612 + 0.1340 -0.0228325404 + 0.1360 -0.0580018210 + 0.1380 -0.0871764972 + 0.1400 -0.0850694689 + 0.1420 -0.0589066103 + 0.1440 -0.0319960338 + 0.1460 -0.0236659824 + 0.1480 -0.0255413973 + 0.1500 -0.0000000000 + 0.1520 0.0000000000 + 0.1540 0.0000000000 + 0.1560 0.0000000000 + 0.1580 0.0000000000 + 0.1600 0.0000000000 + 0.1620 0.0000000000 + 0.1640 0.0000000000 + 0.1660 0.0000000000 + 0.1680 0.0000000000 + 0.1700 -0.0000000000 + 0.1720 -0.0000000000 + 0.1740 -0.0000000000 + 0.1760 -0.0000000000 + 0.1780 -0.0000000000 + 0.1800 -0.0000000000 + 0.1820 -0.0000000000 + 0.1840 -0.0000000000 + 0.1860 -0.0000000000 + 0.1880 -0.0000000000 + 0.1900 0.0000000000 + 0.1920 0.0000000000 + 0.1940 0.0000000000 + 0.1960 0.0000000000 + 0.1980 0.0000000000 + 0.2000 0.0000000000 diff --git a/tests/data/vacf/windowed_hann_ref.dat b/tests/data/vacf/windowed_hann_ref.dat new file mode 100644 index 00000000..19af7306 --- /dev/null +++ b/tests/data/vacf/windowed_hann_ref.dat @@ -0,0 +1,101 @@ + 0.0000 1.0000000000 + 0.0020 0.8110060700 + 0.0040 0.4550362300 + 0.0060 0.2164728500 + 0.0080 0.1897987900 + 0.0100 0.1892859600 + 0.0120 -0.0238401600 + 0.0140 -0.4508589300 + 0.0160 -0.8213270800 + 0.0180 -0.8866453000 + 0.0200 -0.6806126772 + 0.0220 -0.4794268420 + 0.0240 -0.4795625596 + 0.0260 -0.5623127725 + 0.0280 -0.4540654182 + 0.0300 -0.0746964745 + 0.0320 0.3888646128 + 0.0340 0.6226978625 + 0.0360 0.5946096770 + 0.0380 0.4861170493 + 0.0400 0.5242515524 + 0.0420 0.6910208864 + 0.0440 0.7474520115 + 0.0460 0.5266391348 + 0.0480 0.1190227702 + 0.0500 -0.1990805052 + 0.0520 -0.2804734532 + 0.0540 -0.2384904178 + 0.0560 -0.3039104364 + 0.0580 -0.5282897003 + 0.0600 -0.7152136877 + 0.0620 -0.6830161010 + 0.0640 -0.4230826853 + 0.0660 -0.1574350717 + 0.0680 -0.0434800941 + 0.0700 -0.0449225310 + 0.0720 -0.0001220785 + 0.0740 0.1896953858 + 0.0760 0.4261680918 + 0.0780 0.5326101389 + 0.0800 0.4422084411 + 0.0820 0.2804336081 + 0.0840 0.1898842198 + 0.0860 0.1985048243 + 0.0880 0.1917778163 + 0.0900 0.0797544807 + 0.0920 -0.1076528833 + 0.0940 -0.2416002599 + 0.0960 -0.2618636400 + 0.0980 -0.1998564745 + 0.1000 -0.1559727377 + 0.1020 -0.1701980784 + 0.1040 -0.1923656574 + 0.1060 -0.1574967075 + 0.1080 -0.0596007285 + 0.1100 0.0366530580 + 0.1120 0.0785694068 + 0.1140 0.0671339925 + 0.1160 0.0557391866 + 0.1180 0.0695069729 + 0.1200 0.0902361265 + 0.1220 0.0905059105 + 0.1240 0.0592553595 + 0.1260 0.0219189857 + 0.1280 0.0002634958 + 0.1300 -0.0034862021 + 0.1320 -0.0025152223 + 0.1340 -0.0063271513 + 0.1360 -0.0123218153 + 0.1380 -0.0134144492 + 0.1400 -0.0087349495 + 0.1420 -0.0035459867 + 0.1440 -0.0008918284 + 0.1460 -0.0001717415 + 0.1480 -0.0000000000 + 0.1500 -0.0000000000 + 0.1520 0.0000000000 + 0.1540 0.0000000000 + 0.1560 0.0000000000 + 0.1580 0.0000000000 + 0.1600 0.0000000000 + 0.1620 0.0000000000 + 0.1640 0.0000000000 + 0.1660 0.0000000000 + 0.1680 0.0000000000 + 0.1700 -0.0000000000 + 0.1720 -0.0000000000 + 0.1740 -0.0000000000 + 0.1760 -0.0000000000 + 0.1780 -0.0000000000 + 0.1800 -0.0000000000 + 0.1820 -0.0000000000 + 0.1840 -0.0000000000 + 0.1860 -0.0000000000 + 0.1880 -0.0000000000 + 0.1900 0.0000000000 + 0.1920 0.0000000000 + 0.1940 0.0000000000 + 0.1960 0.0000000000 + 0.1980 0.0000000000 + 0.2000 0.0000000000 diff --git a/tests/data/vibrational/h2o.rst b/tests/data/vibrational/h2o.rst new file mode 100644 index 00000000..7226c55e --- /dev/null +++ b/tests/data/vibrational/h2o.rst @@ -0,0 +1,5 @@ +Step 100 +Box 10000.00000000000000000000 10000.00000000000000000000 10000.00000000000000000000 +o 1 1 -0.01294293652 -0.00022738404 -0.00072569662 -2.25292229963757e-04 6.28852028732295e-04 6.86433511395749e-04 -0.00008324796963 0.00011709551580 0.00012630346959 -0.01294293652 -0.00022738404 -0.00072569662 -2.25292229963757e-04 6.28852028732295e-04 6.86433511395749e-04 -0.00008324796963 0.00011709551580 0.00012630346959 +h 1 1 0.43396012267 0.59193103593 0.66981595463 -2.70676037467477e-04 -1.23075940459605e-04 -1.45885375156416e-04 -0.00003512911329 -0.00000732676868 -0.00000938176397 0.43396012267 0.59193103593 0.66981595463 -2.70676037467477e-04 -1.23075940459605e-04 -1.45885375156416e-04 -0.00003512911329 -0.00000732676868 -0.00000938176397 +h 1 1 0.68120631717 -0.49583217141 -0.52277201300 4.95968267431234e-04 -5.05776088272690e-04 -5.40548136239333e-04 0.00011837708292 -0.00010976874712 -0.00011692170561 0.68120631717 -0.49583217141 -0.52277201300 4.95968267431234e-04 -5.05776088272690e-04 -5.40548136239333e-04 0.00011837708292 -0.00010976874712 -0.00011692170561 diff --git a/tests/data/vibrational/hessian.dat b/tests/data/vibrational/hessian.dat new file mode 100644 index 00000000..e5d28f8e --- /dev/null +++ b/tests/data/vibrational/hessian.dat @@ -0,0 +1,9 @@ +-972.27114865125 72.703300706 44.6584165134 341.259656515 243.63212434735 281.65414616979996 631.0114921362499 -316.33542505335 -326.3125626832 +72.43640742024999 -674.5852443028 -742.8405429819501 308.6780010301 391.22178112439997 443.67901089414994 -381.11440845029995 283.36346317835 299.16153208785 +44.3263200225 -742.95022798165 -818.7729118656999 353.58191376975003 441.3895651482 500.3370296489 -397.90823379225 301.5606628335 318.4358822168 +341.27123099364997 308.57797712085 353.40052818494996 -291.11349558269995 -269.41069350065004 -308.29360805150003 -50.1577354109 -39.167283620199996 -45.106920133399996 +243.72273244809998 391.21029794015004 441.29128983615004 -269.50523028199996 -401.40821941129997 -453.50515752649994 25.782497833899995 10.19792147115 12.2138676904 +281.82713682195 443.76241595775 500.3238973269 -308.46941658410003 -453.5947744466499 -512.15979234805 26.642279762199998 9.8323584889 11.83589502115 +631.0308902554999 -381.29072072444995 -398.0677850221 -50.149908116249996 25.779137909399996 26.639581397449994 -580.88098213925 355.51158281495 371.42820362465 +-316.1501723482 283.3513250057 301.53670756820003 -39.1708521425 10.1972669614 9.8331803144 355.3210244907 -293.5485919671 -311.36988788254996 +-326.138221318 299.1705863244 318.4220430644 -45.11062007875 12.2147735595 11.8351888897 371.24884139665 -311.3853598839 -330.2572319541 diff --git a/tests/data/vibrational/input.in b/tests/data/vibrational/input.in new file mode 100644 index 00000000..975e00e8 --- /dev/null +++ b/tests/data/vibrational/input.in @@ -0,0 +1,7 @@ +structure_file = h2o.rst +hessian_file = hessian.dat +moldescriptor_file = moldescriptor.dat +out_file = wavenumbers.dat +normal_modes_file = normal_modes.dat +unit = kcal +hessian_sign = auto diff --git a/tests/data/vibrational/invalid_unit.in b/tests/data/vibrational/invalid_unit.in new file mode 100644 index 00000000..965a5a23 --- /dev/null +++ b/tests/data/vibrational/invalid_unit.in @@ -0,0 +1,4 @@ +structure_file = h2o.rst +hessian_file = hessian.dat +out_file = wavenumbers.dat +unit = kj diff --git a/tests/data/vibrational/mode_output.in b/tests/data/vibrational/mode_output.in new file mode 100644 index 00000000..53e98c99 --- /dev/null +++ b/tests/data/vibrational/mode_output.in @@ -0,0 +1,14 @@ +structure_file = h2o.rst +hessian_file = hessian.dat +moldescriptor_file = moldescriptor.dat +out_file = wavenumbers.dat +normal_modes_file = normal_modes.dat +modes_prefix = mode +modes_file = modes.xyz +modes = [6, 7, 9] +modes_frames = 8 +modes_amplitude = 0.3 +modes_temperature = 300.0 +modes_threshold = 0.5 +unit = kcal +hessian_sign = auto diff --git a/tests/data/vibrational/moldescriptor.dat b/tests/data/vibrational/moldescriptor.dat new file mode 100644 index 00000000..b1f60394 --- /dev/null +++ b/tests/data/vibrational/moldescriptor.dat @@ -0,0 +1,5 @@ +# Molecule 1 +H2O 3 0.0 +O 0 -0.65966 +H 1 0.32983 +H 1 0.32983 diff --git a/tests/io/inputFileReader/PQ/test_PQ_inputFileReader.py b/tests/io/inputFileReader/PQ/test_PQ_inputFileReader.py index 381d2719..eaf03b04 100644 --- a/tests/io/inputFileReader/PQ/test_PQ_inputFileReader.py +++ b/tests/io/inputFileReader/PQ/test_PQ_inputFileReader.py @@ -7,6 +7,7 @@ from PQAnalysis.io.input_file_reader.pq.pq_input_file_reader import _increase_digit_string, _get_digit_string_from_filename from PQAnalysis.io.input_file_reader import PQInputFileReader as InputFileReader from PQAnalysis.io.input_file_reader.formats import InputFileFormat +from PQAnalysis.io import continue_input_file from PQAnalysis.exceptions import PQValueError @@ -75,6 +76,13 @@ def test__init__(self, test_with_data_dir): assert input_file_reader.parser.filename == "run-08.in" assert input_file_reader.parser.input_format == InputFileFormat("PQ") + with pytest.raises(PQValueError) as exception: + InputFileReader("run-08.in", InputFileFormat.PQANALYSIS) + + assert str(exception.value) == ( + "Input file format InputFileFormat.PQANALYSIS not supported." + ) + @pytest.mark.parametrize( "example_dir", ["inputFileReader/PQ_input/"], @@ -263,6 +271,44 @@ def test_continue_input_file_with_unnumbered_start_file(self): "traj_file = md-10.xyz;\n" ) + @pytest.mark.usefixtures("tmpdir") + def test_continue_input_file_uses_qmcfc_format(self): + with open("run-02.in", "w", encoding="utf-8") as file: + file.write( + "jobtype = qmcf-md;\n" + "qm_center = 8:1;\n" + "qm_blacklist = 1-6, 9-13, 15-16, 18, 20-48;\n" + "start_file = amy-zn-qmmm-01_mod.rst;\n" + "output_file = amy-zn-qmmm-02.out;\n" + "info_file = amy-zn-qmmm-02.info;\n" + "energy_file = amy-zn-qmmm-02.en;\n" + "traj_file = amy-zn-qmmm-02.xyz;\n" + "vel_file = amy-zn-qmmm-02.vel;\n" + "charge_file = amy-zn-qmmm-02.chrg;\n" + "temperature_file = amy-zn-qmmm-02.tmp;\n" + "momentum_file = amy-zn-qmmm-02.mom;\n" + "restart_file = amy-zn-qmmm-02.rst;\n" + ) + + continue_input_file("run-02.in", input_format=InputFileFormat.QMCFC) + + with open("run-03.in", "r", encoding="utf-8") as file: + assert file.read() == ( + "jobtype = qmcf-md;\n" + "qm_center = 8:1;\n" + "qm_blacklist = 1-6, 9-13, 15-16, 18, 20-48;\n" + "start_file = amy-zn-qmmm-02.rst;\n" + "output_file = amy-zn-qmmm-03.out;\n" + "info_file = amy-zn-qmmm-03.info;\n" + "energy_file = amy-zn-qmmm-03.en;\n" + "traj_file = amy-zn-qmmm-03.xyz;\n" + "vel_file = amy-zn-qmmm-03.vel;\n" + "charge_file = amy-zn-qmmm-03.chrg;\n" + "temperature_file = amy-zn-qmmm-03.tmp;\n" + "momentum_file = amy-zn-qmmm-03.mom;\n" + "restart_file = amy-zn-qmmm-03.rst;\n" + ) + @pytest.mark.usefixtures("tmpdir") def test_parse_start_file_ns_rejects_mismatched_numbered_start_files(self): with open("run-08.in", "w", encoding="utf-8") as file: diff --git a/tests/io/inputFileReader/test_inputFileParser.py b/tests/io/inputFileReader/test_inputFileParser.py index 0d637102..773acdb7 100644 --- a/tests/io/inputFileReader/test_inputFileParser.py +++ b/tests/io/inputFileReader/test_inputFileParser.py @@ -88,3 +88,44 @@ def test_parse_boolean_false(self, tmp_path): assert input_dictionary["enabled"] == (True, "bool", "1") assert input_dictionary["disabled"] == (False, "bool", "2") + + def test_parse_qmcfc_selectors(self, tmp_path): + input_file = tmp_path / "qmcfc.in" + input_file.write_text( + "jobtype = qmcf-md;\n" + "nstep = 5000; timestep = 0.2; omega = 3E13;\n" + "solute_charge = +2.0;\n" + "qm_center = 8:1;\n" + "qm_blacklist = 1-6, 9-13, 15-16, 18, 20-48;\n" + "qm_whitelist = 7, 14, 17, 19;\n", + encoding="utf-8" + ) + + input_dictionary = InputFileParser(str(input_file), "qmcfc").parse() + + assert input_dictionary["jobtype"] == ("qmcf-md", "str", "1") + assert input_dictionary["nstep"] == (5000, "int", "2") + assert input_dictionary["timestep"] == (0.2, "float", "2") + assert input_dictionary["omega"] == (3e13, "float", "2") + assert input_dictionary["solute_charge"] == (2.0, "float", "3") + assert input_dictionary["qm_center"] == ("8:1", "str", "4") + assert input_dictionary["qm_blacklist"] == ( + ["1-6", "9-13", "15-16", "18", "20-48"], + "list(str)", + "5" + ) + assert input_dictionary["qm_whitelist"] == ( + ["7", "14", "17", "19"], + "list(str)", + "6" + ) + + def test_parse_qmcfc_latin1_comments(self, tmp_path): + input_file = tmp_path / "qmcfc.in" + input_file.write_bytes(b"# force constant in A\xb2*kcal/mol\njobtype = mm-md;\n") + + parser = InputFileParser(str(input_file), "qmcfc") + input_dictionary = parser.parse() + + assert "A\u00b2*kcal/mol" in parser.raw_input_file + assert input_dictionary["jobtype"] == ("mm-md", "str", "2") diff --git a/tests/io/test_optimizerFileReader.py b/tests/io/test_optimizerFileReader.py new file mode 100644 index 00000000..2a6f300b --- /dev/null +++ b/tests/io/test_optimizerFileReader.py @@ -0,0 +1,121 @@ +import numpy as np +import pytest + +from . import pytestmark + +from PQAnalysis.exceptions import PQFileNotFoundError +from PQAnalysis.io import OptimizerFileReader, read_optimizer_file +from PQAnalysis.io.exceptions import OptimizerReaderError + + + +class TestOptimizerFileReader: + + @pytest.mark.parametrize( + "example_dir", ["readOptimizerFile"], indirect=False + ) + def test__init__(self, test_with_data_dir): + with pytest.raises(PQFileNotFoundError) as exception: + OptimizerFileReader("missing.opt") + assert str(exception.value) == "File missing.opt not found." + + reader = OptimizerFileReader("optimization.opt") + + assert reader.filename == "optimization.opt" + assert reader.multiple_files is False + + @pytest.mark.parametrize( + "example_dir", ["readOptimizerFile"], indirect=False + ) + def test_read_real_pq_output(self, test_with_data_dir): + energy = OptimizerFileReader("optimization.opt").read() + + expected_parameters = ( + "SIMULATION-TIME", + "ABS-ENERGY-CHANGE", + "REL-ENERGY-CHANGE", + "MAX-FORCE", + "RMS-FORCE", + "REL-ENERGY-CONV", + "ABS-ENERGY-CONV", + "MAX-FORCE-CONV", + "RMS-FORCE-CONV", + "REL-ENERGY-LIMIT", + "ABS-ENERGY-LIMIT", + "MAX-FORCE-LIMIT", + "RMS-FORCE-LIMIT", + ) + + assert energy.data.shape == (13, 11) + assert energy.info == { + parameter: index + for index, parameter in enumerate(expected_parameters) + } + assert energy.units == { + "SIMULATION-TIME": "step", + "ABS-ENERGY-CHANGE": "kcal/mol", + "REL-ENERGY-CHANGE": "-", + "MAX-FORCE": "kcal/mol/A", + "RMS-FORCE": "kcal/mol/A", + "REL-ENERGY-CONV": "state", + "ABS-ENERGY-CONV": "state", + "MAX-FORCE-CONV": "state", + "RMS-FORCE-CONV": "state", + "REL-ENERGY-LIMIT": "-", + "ABS-ENERGY-LIMIT": "kcal/mol", + "MAX-FORCE-LIMIT": "kcal/mol/A", + "RMS-FORCE-LIMIT": "kcal/mol/A", + } + assert np.array_equal(energy.simulation_time, np.arange(1, 12)) + assert energy.simulation_time_unit == "step" + assert energy.data[1, -1] == pytest.approx(388.243509) + assert np.array_equal(energy.data[5:9, -1], np.full(4, -1.0)) + + @pytest.mark.usefixtures("tmpdir") + def test_read_optimizer_file_with_one_data_row(self): + with open("optimization.opt", "w", encoding="utf-8") as file: + print("# PQ optimizer output", file=file) + print("", file=file) + print("1 2 3 4 5 6 7 8 9 10 11 12 13", file=file) + + energy = read_optimizer_file("optimization.opt") + + assert energy.data.shape == (13, 1) + assert np.array_equal(energy.data[:, 0], np.arange(1, 14)) + + @pytest.mark.usefixtures("tmpdir") + def test_invalid_number_of_columns(self): + with open("optimization.opt", "w", encoding="utf-8") as file: + print("# PQ optimizer output", file=file) + print("", file=file) + print("1 2 3", file=file) + + with pytest.raises(OptimizerReaderError) as exception: + OptimizerFileReader("optimization.opt").read() + assert str(exception.value) == ( + "Invalid number of columns in optimizer file line 3. " + "Expected 13 columns." + ) + + @pytest.mark.usefixtures("tmpdir") + def test_invalid_numeric_value(self): + with open("optimization.opt", "w", encoding="utf-8") as file: + print("1 2 3 4 5 1 1 1 1 10 11 bad 13", file=file) + + with pytest.raises(OptimizerReaderError) as exception: + OptimizerFileReader("optimization.opt").read() + assert str(exception.value) == ( + "Invalid numeric value in optimizer file line 1: " + "1 2 3 4 5 1 1 1 1 10 11 bad 13" + ) + + @pytest.mark.usefixtures("tmpdir") + def test_empty_file(self): + with open("optimization.opt", "w", encoding="utf-8") as file: + print("# PQ optimizer output", file=file) + + with pytest.raises(OptimizerReaderError) as exception: + OptimizerFileReader("optimization.opt").read() + assert str(exception.value) == ( + "Optimizer file optimization.opt does not contain optimizer data." + ) diff --git a/tests/io/test_raw_frame_reader.py b/tests/io/test_raw_frame_reader.py new file mode 100644 index 00000000..6bf45423 --- /dev/null +++ b/tests/io/test_raw_frame_reader.py @@ -0,0 +1,605 @@ +import importlib +import logging +import sys + +import numpy as np +import pytest + +from PQAnalysis.core import Cell +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io.traj_file import RawTrajectoryReader, _slab_parser_py +from PQAnalysis.io.traj_file import raw_frame_reader +from PQAnalysis.io.traj_file.exceptions import ( + FrameReaderError, + TrajectoryReaderError, +) +from PQAnalysis.traj import MDEngineFormat, TrajectoryFormat + +from . import pytestmark + +try: + from PQAnalysis.io.traj_file import _slab_parser +except ModuleNotFoundError: # pragma: no cover - build-dependent + _slab_parser = None + +#: Both slab parser implementations (the reader is exercised with +#: each one via the parser_module fixture). +PARSER_MODULES = [ + pytest.param(_slab_parser_py, id="python-fallback"), + pytest.param( + _slab_parser, + id="cython", + marks=pytest.mark.skipif( + _slab_parser is None, + reason="compiled slab parser not available", + ), + ), +] + + + +@pytest.fixture(params=PARSER_MODULES) +def parser_module(request, monkeypatch): + """ + Runs the test with each slab parser implementation wired into + the raw frame reader module. + """ + + module = request.param + + monkeypatch.setattr(raw_frame_reader, "scan_header", module.scan_header) + monkeypatch.setattr(raw_frame_reader, "parse_body", module.parse_body) + + return module + + + +def assert_raw_stream_matches_frame_generator( + filenames, + traj_format=TrajectoryFormat.AUTO, + md_format=MDEngineFormat.PQ, +): + """ + Asserts that the raw fast-path stream matches the values and + cells of TrajectoryReader.frame_generator exactly. + """ + + reader = TrajectoryReader( + filenames, traj_format=traj_format, md_format=md_format + ) + raw_reader = RawTrajectoryReader( + filenames, traj_format=traj_format, md_format=md_format + ) + + frames = list(reader.frame_generator()) + raw_frames = list(raw_reader.raw_frame_generator()) + + assert len(raw_frames) == len(frames) + + for frame, (values, cell) in zip(frames, raw_frames): + if reader.traj_format == TrajectoryFormat.XYZ: + expected_values = frame.pos + elif reader.traj_format == TrajectoryFormat.VEL: + expected_values = frame.vel + else: + expected_values = frame.forces + + assert values.dtype == np.float32 + assert values.shape == expected_values.shape + assert np.array_equal(values, expected_values) + + assert np.array_equal(cell.box_lengths, frame.cell.box_lengths) + assert np.array_equal(cell.box_angles, frame.cell.box_angles) + assert np.array_equal(cell.box_matrix, frame.cell.box_matrix) + assert cell.is_vacuum == frame.cell.is_vacuum + + return raw_frames + + + +@pytest.mark.usefixtures("tmpdir", "parser_module") +class TestRawTrajectoryReaderEquivalence: + + def test_pq_xyz(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("o -0.1234567 0.98765432 12.3456789", file=file) + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("o -1.1234567 1.98765432 13.3456789", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator(["tmp.xyz"]) + + # unchanged header box text -> the same Cell object is reused + assert raw_frames[0][1] is raw_frames[1][1] + + def test_pq_vel(self): + with open("tmp.vel", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 0.0012345 -0.0023456 0.0034567", file=file) + print("o -0.0001234 0.0009876 0.0123456", file=file) + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 0.0022345 -0.0033456 0.0044567", file=file) + print("o -0.0011234 0.0019876 0.0133456", file=file) + + raw_reader = RawTrajectoryReader("tmp.vel") + assert raw_reader.traj_format == TrajectoryFormat.VEL + + assert_raw_stream_matches_frame_generator(["tmp.vel"]) + + def test_qmcfc_xyz(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("3 11.1 12.2 13.3", file=file) + print("", file=file) + print("X 0.0 0.0 0.0", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("o -0.1234567 0.98765432 12.3456789", file=file) + print("3 11.1 12.2 13.3", file=file) + print("", file=file) + print("x 0.0 0.0 0.0", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("o -1.1234567 1.98765432 13.3456789", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator( + ["tmp.xyz"], md_format=MDEngineFormat.QMCFC + ) + + # the dummy atom row must be stripped + assert raw_frames[0][0].shape == (2, 3) + + def test_qmcfc_vel(self): + with open("tmp.vel", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("X 0.0 0.0 0.0", file=file) + print("h 0.0012345 -0.0023456 0.0034567", file=file) + + assert_raw_stream_matches_frame_generator( + ["tmp.vel"], md_format=MDEngineFormat.QMCFC + ) + + def test_qmcfc_first_atom_not_x_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("Xe 0.0 0.0 0.0", file=file) + print("h 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader( + "tmp.xyz", md_format=MDEngineFormat.QMCFC + ) + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "is not X" in str(exception.value) + + def test_multiple_files(self): + with open("tmp1.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("o -0.1234567 0.98765432 12.3456789", file=file) + + # second file with a different number of atoms and a vacuum + # header in its first frame (must inherit the cell of the + # last frame of the first file) + with open("tmp2.xyz", "w", encoding="utf-8") as file: + print("3", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("o -1.1234567 1.98765432 13.3456789", file=file) + print("n 5.5555555 6.6666666 7.7777777", file=file) + print("3 14.4 15.5 16.6", file=file) + print("", file=file) + print("h 3.2345678 -4.3456789 5.4567891", file=file) + print("o -2.1234567 2.98765432 14.3456789", file=file) + print("n 6.5555555 7.6666666 8.7777777", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator( + ["tmp1.xyz", "tmp2.xyz"] + ) + + assert len(raw_frames) == 3 + # cross-file vacuum propagation reuses the last cell object + assert raw_frames[1][1] is raw_frames[0][1] + + def test_npt_box_change(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("1 11.2 12.3 13.4", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("1 11.3 12.4 13.5 88.8 89.9 90.1", file=file) + print("", file=file) + print("h 3.2345678 -4.3456789 5.4567891", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator(["tmp.xyz"]) + + cells = [cell for _, cell in raw_frames] + assert cells[0] is not cells[1] + assert cells[1] is not cells[2] + assert not np.array_equal(cells[0].box_lengths, cells[1].box_lengths) + assert not np.array_equal(cells[1].box_angles, cells[2].box_angles) + + def test_vacuum_frame_inherits_last_cell(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("1", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("1 14.4 15.5 16.6", file=file) + print("", file=file) + print("h 3.2345678 -4.3456789 5.4567891", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator(["tmp.xyz"]) + + assert raw_frames[1][1] is raw_frames[0][1] + assert not raw_frames[2][1].is_vacuum + + def test_leading_vacuum_frames(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("1", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + + raw_frames = assert_raw_stream_matches_frame_generator(["tmp.xyz"]) + + assert raw_frames[0][1].is_vacuum + assert np.array_equal(raw_frames[0][1].box_matrix, Cell().box_matrix) + + def test_exact_values(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.25 -2.5 3.75", file=file) + print("o -0.125 0.5 12.25", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + values, cell = next(raw_reader.raw_frame_generator()) + + assert values.dtype == np.float32 + assert np.array_equal( + values, + np.array( + [[1.25, -2.5, 3.75], [-0.125, 0.5, 12.25]], + dtype=np.float32, + ), + ) + assert np.array_equal(cell.box_lengths, [11.1, 12.2, 13.3]) + + + +@pytest.mark.usefixtures("tmpdir") +class TestRawTrajectoryReaderFirstFrame: + + def test_read_first_frame(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("o -0.1234567 0.98765432 12.3456789", file=file) + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 2.2345678 -3.3456789 4.4567891", file=file) + print("o -1.1234567 1.98765432 13.3456789", file=file) + + reader = TrajectoryReader("tmp.xyz") + expected_first_frame = next(reader.frame_generator()) + + raw_reader = RawTrajectoryReader("tmp.xyz") + first_frame = raw_reader.read_first_frame() + + assert first_frame.atoms == expected_first_frame.atoms + assert np.array_equal(first_frame.pos, expected_first_frame.pos) + assert first_frame.cell == expected_first_frame.cell + + # reading the first frame does not consume any raw frames + raw_frames = list(raw_reader.raw_frame_generator()) + assert len(raw_frames) == 2 + assert np.array_equal(raw_frames[0][0], expected_first_frame.pos) + + def test_read_first_frame_qmcfc(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("3 11.1 12.2 13.3", file=file) + print("", file=file) + print("X 0.0 0.0 0.0", file=file) + print("h 1.2345678 -2.3456789 3.4567891", file=file) + print("o -0.1234567 0.98765432 12.3456789", file=file) + + reader = TrajectoryReader("tmp.xyz", md_format=MDEngineFormat.QMCFC) + expected_first_frame = next(reader.frame_generator()) + + raw_reader = RawTrajectoryReader( + "tmp.xyz", md_format=MDEngineFormat.QMCFC + ) + first_frame = raw_reader.read_first_frame() + + assert first_frame.n_atoms == 2 + assert first_frame.atoms == expected_first_frame.atoms + assert np.array_equal(first_frame.pos, expected_first_frame.pos) + + def test_read_first_frame_vel(self): + with open("tmp.vel", "w", encoding="utf-8") as file: + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 0.0012345 -0.0023456 0.0034567", file=file) + + raw_reader = RawTrajectoryReader("tmp.vel") + first_frame = raw_reader.read_first_frame() + + assert np.array_equal( + first_frame.vel, + np.array( + [[0.0012345, -0.0023456, 0.0034567]], + dtype=np.float32, + ), + ) + + def test_read_first_frame_empty_trajectory_raises(self): + with open("tmp.xyz", "w", encoding="utf-8"): + pass + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(TrajectoryReaderError) as exception: + raw_reader.read_first_frame() + + assert "does not contain any frames" in str(exception.value) + + + +@pytest.mark.usefixtures("tmpdir") +class TestRawTrajectoryReaderCountFrames: + + def test_count_frames_matches_trajectory_reader(self): + with open("tmp1.xyz", "w", encoding="utf-8") as file: + for _ in range(3): + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + print("o 4.0 5.0 6.0", file=file) + + with open("tmp2.xyz", "w", encoding="utf-8") as file: + for _ in range(2): + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + filenames = ["tmp1.xyz", "tmp2.xyz"] + + reader = TrajectoryReader(filenames) + raw_reader = RawTrajectoryReader(filenames) + + assert raw_reader.count_frames() == sum( + reader.calculate_number_of_frames_per_file() + ) + assert raw_reader.count_frames() == 5 + + def test_count_frames_without_trailing_newline(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + file.write("1 11.1 12.2 13.3\n") + file.write("\n") + file.write("h 1.0 2.0 3.0\n") + file.write("1 11.1 12.2 13.3\n") + file.write("\n") + file.write("h 4.0 5.0 6.0") # no trailing newline + + raw_reader = RawTrajectoryReader("tmp.xyz") + assert raw_reader.count_frames() == 2 + + def test_count_frames_empty_file(self): + with open("tmp1.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + with open("tmp2.xyz", "w", encoding="utf-8"): + pass + + raw_reader = RawTrajectoryReader(["tmp1.xyz", "tmp2.xyz"]) + assert raw_reader.count_frames() == 1 + + def test_count_frames_not_divisible_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + print("o 4.0 5.0 6.0", file=file) + print("2 11.1 12.2 13.3", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(TrajectoryReaderError) as exception: + raw_reader.count_frames() + + assert "not divisible" in str(exception.value) + + def test_count_frames_invalid_first_line_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("invalid", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(TrajectoryReaderError) as exception: + raw_reader.count_frames() + + assert "Invalid number of atoms" in str(exception.value) + + + +@pytest.mark.usefixtures("tmpdir", "parser_module") +class TestRawTrajectoryReaderErrors: + + def test_unsupported_traj_format_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + with pytest.raises(TrajectoryReaderError) as exception: + RawTrajectoryReader("tmp.xyz", traj_format=TrajectoryFormat.CHARGE) + + assert "supports only" in str(exception.value) + + def test_invalid_header_line_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "header line" in str(exception.value) + + def test_incomplete_frame_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "incomplete frame" in str(exception.value) + + def test_invalid_body_line_raises(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + print("o 4.0 bad 6.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "Invalid file format" in str(exception.value) + + def test_negative_atom_count_raises_value_error(self): + # a header count token that is a valid but negative integer + # literal (with a valid box, so the box validation passes): + # scan_header reports a bad header, the reader converts the + # token to an int and rejects the negative count, replicating + # the islice() error of the line based reader. + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("-3 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(ValueError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "islice()" in str(exception.value) + + def test_invalid_box_count_raises_frame_reader_error_directly(self): + # when ERROR logging is disabled, self.logger.error does not + # raise, so the explicit raise after it is reached (the header + # box has only two values, which is not 0, 3 or 6). + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("1 11.1 12.2", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + original_level = raw_reader.logger.level + raw_reader.logger.setLevel(logging.CRITICAL + 1) + + try: + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + finally: + raw_reader.logger.setLevel(original_level) + + assert "header line" in str(exception.value) + + def test_qmcfc_frame_without_atom_rows_raises_index_error(self): + # a QMCFC frame whose header declares zero atoms: the frame + # has no atom row, so no first name is available and the dummy + # atom stripping fails with the same IndexError as the line + # based reader. + with open("tmp.vel", "w", encoding="utf-8") as file: + print("0 11.1 12.2 13.3", file=file) + print("", file=file) + + raw_reader = RawTrajectoryReader( + "tmp.vel", md_format=MDEngineFormat.QMCFC + ) + + with pytest.raises(IndexError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "list index out of range" in str(exception.value) + + + +class TestRawFrameReaderSlabParserFallbackImport: + + """ + Covers the ``except ModuleNotFoundError`` fallback import of + ``scan_header``/``parse_body`` from the pure Python slab parser + module at the top of the raw frame reader module. + """ + + def test_slab_parser_fallback_import(self): + # remember the currently wired parser functions so the module + # can be restored to exactly this state afterwards. + original_module = raw_frame_reader.scan_header.__module__ + + target = "PQAnalysis.io.traj_file._slab_parser" + saved = sys.modules.pop(target, None) + + class _Block: + + def find_spec(self, name, path=None, target=None): # pylint: disable=unused-argument + if name == "PQAnalysis.io.traj_file._slab_parser": + raise ModuleNotFoundError(name) + + return None + + blocker = _Block() + sys.meta_path.insert(0, blocker) + + try: + importlib.reload(raw_frame_reader) + + # with the compiled slab parser blocked, the pure Python + # implementation is imported instead. + assert raw_frame_reader.scan_header.__module__.endswith( + "_slab_parser_py" + ) + assert raw_frame_reader.parse_body.__module__.endswith( + "_slab_parser_py" + ) + finally: + sys.meta_path.remove(blocker) + + if saved is not None: + sys.modules[target] = saved + + importlib.reload(raw_frame_reader) + + # the module is restored to exactly the state the rest of the + # test suite relies on. + assert raw_frame_reader.scan_header.__module__ == original_module diff --git a/tests/io/test_slab_parser.py b/tests/io/test_slab_parser.py new file mode 100644 index 00000000..03a3a876 --- /dev/null +++ b/tests/io/test_slab_parser.py @@ -0,0 +1,560 @@ +""" +Tests of the byte-slab frame parser used by the raw fast-path +readers. + +The slab parser (Cython and pure Python fallback) must produce +bitwise identical values compared to the line based +:py:meth:`~PQAnalysis.io.traj_file.trajectory_reader.TrajectoryReader.frame_generator` +path - including adversarial decimal strings near float32 rounding +boundaries, which would differ if the parser rounded twice (parsing +a float64 first and casting to float32 afterwards). The chunked +buffer handling is additionally exercised with tiny chunk sizes, so +that every frame spans multiple chunk boundaries. +""" + +import importlib +import os +import sys + +import numpy as np +import pytest + +from PQAnalysis.analysis.vacf._raw_charge_reader import ( + RawChargeTrajectoryReader, +) +from PQAnalysis.io import TrajectoryReader +from PQAnalysis.io.traj_file import RawTrajectoryReader, _slab_parser_py +from PQAnalysis.io.traj_file import raw_frame_reader +from PQAnalysis.io.traj_file.exceptions import FrameReaderError +from PQAnalysis.traj import MDEngineFormat, TrajectoryFormat + +from . import pytestmark # pylint: disable=unused-import + +try: + from PQAnalysis.io.traj_file import _slab_parser +except ModuleNotFoundError: # pragma: no cover - build-dependent + _slab_parser = None + +try: + from PQAnalysis.io.traj_file import process_lines as _process_lines_ext +except ModuleNotFoundError: # pragma: no cover - build-dependent + _process_lines_ext = None + +#: Both slab parser implementations. +PARSER_MODULES = [ + pytest.param(_slab_parser_py, id="python-fallback"), + pytest.param( + _slab_parser, + id="cython", + marks=pytest.mark.skipif( + _slab_parser is None, + reason="compiled slab parser not available", + ), + ), +] + +#: Adversarial decimal strings: values near float32 rounding +#: boundaries (where single and double rounding differ), exponents, +#: leading signs, missing digits and many-digit mantissas. +ADVERSARIAL_VALUES = [ + "16777217.0", # float32 tie at 2**24 + "16777217.000000001", # above the tie only without double rounding + "-16777217.000000001", + "1.000000059604644775390625", # midpoint of 1.0 and 1 + 2**-23 + "1.00000005960464477539062501", # just above that midpoint + "-1.00000005960464477539062501", + "0.1", + "0.2", + "0.30000000000000004", + "3.4028234663852886e+38", # float32 max + "3.4028236e38", # overflows float32 to inf + "-3.4028236e38", + "1.1754943508222875e-38", # smallest normal float32 + "1e-45", # subnormal + "1.4012984643248171e-45", # smallest subnormal float32 + "7.006492321624085e-46", # half the smallest subnormal (tie) + "7.0064923216240854e-46", # just above that tie + "1e-46", # underflows to zero + "+4.75", + "-.25", + "+.5", + "5.", + ".5e1", + "1E5", + "2e-3", + "1e+10", + "123456789.123456789123456789123456789", + "9.999999999999999999999999e-8", + "0.00000000000000000000000000000000000000000000001", + "-0.0", + "0", + "42", + "6.103515624999999e-05", # near a float32 tie with many digits + "6.103515625e-05", + "6.10351562500000001e-05", +] + + + +@pytest.fixture(params=PARSER_MODULES) +def parser_module(request, monkeypatch): + """ + Runs the test with each slab parser implementation wired into + the raw frame reader module. + """ + + module = request.param + + monkeypatch.setattr(raw_frame_reader, "scan_header", module.scan_header) + monkeypatch.setattr(raw_frame_reader, "parse_body", module.parse_body) + + return module + + + +def write_xyz(filename, frames, header="{n} 11.1 12.2 13.3"): + """ + Writes frames (lists of atom line strings) to an xyz-family file. + """ + + with open(filename, "w", encoding="utf-8") as file: + for frame in frames: + print(header.format(n=len(frame)), file=file) + print("", file=file) + + for line in frame: + print(line, file=file) + + +def assert_matches_frame_generator(filenames, **kwargs): + """ + Asserts that the raw fast-path stream matches the values and + cells of TrajectoryReader.frame_generator bitwise. + """ + + reader = TrajectoryReader(filenames, **kwargs) + raw_reader = RawTrajectoryReader(filenames, **kwargs) + + frames = list(reader.frame_generator()) + raw_frames = list(raw_reader.raw_frame_generator()) + + assert len(raw_frames) == len(frames) + + for frame, (values, cell) in zip(frames, raw_frames): + if reader.traj_format == TrajectoryFormat.VEL: + expected = frame.vel + elif reader.traj_format == TrajectoryFormat.FORCE: + expected = frame.forces + else: + expected = frame.pos + + assert values.dtype == np.float32 + assert np.array_equal(values, expected) + assert np.array_equal(cell.box_matrix, frame.cell.box_matrix) + assert cell.is_vacuum == frame.cell.is_vacuum + + return raw_frames + + + +@pytest.mark.usefixtures("tmpdir", "parser_module") +class TestSlabParserAdversarialFloats: + + def test_xyz_values_bitwise_identical(self): + # cycle the adversarial strings through all three columns + values = ADVERSARIAL_VALUES + lines = [ + f"a{i} {values[i % len(values)]} " + f"{values[(i + 1) % len(values)]} " + f"{values[(i + 2) % len(values)]}" + for i in range(len(values)) + ] + + # one file with all lines in one frame and one file with one + # line per frame (the line based reference reader requires a + # constant frame size per file) + write_xyz("tmp1.xyz", [lines, lines]) + write_xyz("tmp2.xyz", [[line] for line in lines]) + + assert_matches_frame_generator(["tmp1.xyz", "tmp2.xyz"]) + + def test_charge_values_bitwise_identical(self): + lines = [ + f"a{i} {value}" for i, value in enumerate(ADVERSARIAL_VALUES) + ] + + write_xyz("tmp1.chrg", [lines, lines]) + write_xyz("tmp2.chrg", [[line] for line in lines]) + + filenames = ["tmp1.chrg", "tmp2.chrg"] + + reader = TrajectoryReader( + filenames, traj_format=TrajectoryFormat.CHARGE + ) + raw_reader = RawChargeTrajectoryReader(filenames) + + frames = list(reader.frame_generator()) + raw_frames = list(raw_reader.raw_frame_generator()) + + assert len(raw_frames) == len(frames) + + for frame, (values, _) in zip(frames, raw_frames): + assert values.dtype == np.float64 + assert np.array_equal(values, frame.charges) + + def test_whitespace_and_extra_tokens(self): + lines = [ + "h\t1.25\t-2.5\t3.75", + " o -0.125\t 0.5 12.25 ", + "n 1.0 2.0 3.0 extra tokens 4.0", + ] + + if _process_lines_ext is not None: + # sscanf and strtof both stop after the longest valid + # float prefix of the last token (the pure Python + # process_lines fallback rejects such tokens instead) + lines.append("c 1.0 2.0 3.0extra") + + write_xyz("tmp.xyz", [lines]) + + assert_matches_frame_generator(["tmp.xyz"]) + + + +@pytest.mark.usefixtures("tmpdir", "parser_module") +class TestSlabParserChunkBoundaries: + + @pytest.mark.parametrize("chunk_size", [1, 3, 7, 17, 64, 256]) + def test_frames_spanning_chunk_boundaries( + self, chunk_size, monkeypatch + ): + frames = [ + ["h 1.2345678 -2.3456789 3.4567891", "o 4.0 5.0 6.0"], + ["h 2.2345678 -3.3456789 4.4567891", "o 5.0 6.0 7.0"], + ["h 3.2345678 -4.3456789 5.4567891", "o 6.0 7.0 8.0"], + ] + + write_xyz("tmp.xyz", frames) + + # a second file with a vacuum frame (cell inheritance across + # files must survive the chunked reading) + write_xyz("tmp2.xyz", [["n 7.0 8.0 9.0"]], header="{n}") + + monkeypatch.setattr(raw_frame_reader, "_CHUNK_SIZE", chunk_size) + + raw_frames = assert_matches_frame_generator(["tmp.xyz", "tmp2.xyz"]) + + assert len(raw_frames) == 4 + assert not raw_frames[3][1].is_vacuum + + @pytest.mark.parametrize("chunk_size", [1, 7, 64]) + def test_qmcfc_and_charges_with_chunk_boundaries( + self, chunk_size, monkeypatch + ): + monkeypatch.setattr(raw_frame_reader, "_CHUNK_SIZE", chunk_size) + + write_xyz( + "tmp.xyz", + [ + ["X 0.0 0.0 0.0", "h 1.0 2.0 3.0"], + ["x 0.0 0.0 0.0", "h 4.0 5.0 6.0"], + ], + ) + + raw_frames = assert_matches_frame_generator( + ["tmp.xyz"], md_format=MDEngineFormat.QMCFC + ) + + assert raw_frames[0][0].shape == (1, 3) + + write_xyz("tmp.chrg", [["o -0.89076318", "h 0.44538159"]] * 3) + + raw_reader = RawChargeTrajectoryReader("tmp.chrg") + raw_frames = list(raw_reader.raw_frame_generator()) + + assert len(raw_frames) == 3 + + for values, _ in raw_frames: + assert np.array_equal( + values, np.array([-0.89076318, 0.44538159]) + ) + + def test_file_without_trailing_newline(self, monkeypatch): + monkeypatch.setattr(raw_frame_reader, "_CHUNK_SIZE", 5) + + with open("tmp.xyz", "w", encoding="utf-8") as file: + file.write("1 11.1 12.2 13.3\n\nh 1.25 -2.5 3.75") + + raw_reader = RawTrajectoryReader("tmp.xyz") + values, _ = next(raw_reader.raw_frame_generator()) + + assert np.array_equal( + values, np.array([[1.25, -2.5, 3.75]], dtype=np.float32) + ) + + + +@pytest.mark.usefixtures("tmpdir", "parser_module") +class TestSlabParserErrors: + + def test_trailing_garbage_raises_value_error(self): + write_xyz("tmp.xyz", [["h 1.0 2.0 3.0"]]) + + with open("tmp.xyz", "a", encoding="utf-8") as file: + print("banana", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + generator = raw_reader.raw_frame_generator() + + # the valid frame is still yielded before the error is raised + values, _ = next(generator) + assert np.array_equal( + values, np.array([[1.0, 2.0, 3.0]], dtype=np.float32) + ) + + with pytest.raises(ValueError): + next(generator) + + def test_bad_count_with_invalid_box_raises_frame_reader_error(self): + # the box substring is validated before the atom count, so + # the FrameReaderError of the header line wins + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("banana 1.0 2.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "header line" in str(exception.value) + + def test_bad_count_with_valid_box_raises_value_error(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("banana 1.0 2.0 3.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + with pytest.raises(ValueError): + list(raw_reader.raw_frame_generator()) + + def test_underscore_count_is_accepted_like_int(self): + # int("1_1") == 11: the slab path must replicate the int() + # semantics of the line based header parsing + write_xyz( + "tmp.xyz", + [[f"a{i} 1.0 2.0 3.0" for i in range(11)]], + header="1_1 11.1 12.2 13.3", + ) + + raw_reader = RawTrajectoryReader("tmp.xyz") + values, _ = next(raw_reader.raw_frame_generator()) + + assert values.shape == (11, 3) + + def test_short_body_raises_incomplete_frame(self): + with open("tmp.xyz", "w", encoding="utf-8") as file: + print("3 11.1 12.2 13.3", file=file) + print("", file=file) + print("h 1.0 2.0 3.0", file=file) + print("o 4.0 bad 6.0", file=file) + + raw_reader = RawTrajectoryReader("tmp.xyz") + + # the truncation wins over the (also) malformed atom line + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "incomplete frame" in str(exception.value) + + def test_charge_bad_line_raises_scalar_values_error(self): + write_xyz("tmp.chrg", [["o -0.5", "h 0.25 0.25"]]) + + raw_reader = RawChargeTrajectoryReader("tmp.chrg") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "scalar values" in str(exception.value) + + def test_charge_qmcfc_first_atom_not_x_raises(self): + write_xyz("tmp.chrg", [["Xe 0.0", "h 0.25"]]) + + raw_reader = RawChargeTrajectoryReader( + "tmp.chrg", md_format=MDEngineFormat.QMCFC + ) + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "is not X" in str(exception.value) + + def test_charge_incomplete_frame_raises(self): + with open("tmp.chrg", "w", encoding="utf-8") as file: + print("2 11.1 12.2 13.3", file=file) + print("", file=file) + print("o -0.5", file=file) + + raw_reader = RawChargeTrajectoryReader("tmp.chrg") + + with pytest.raises(FrameReaderError) as exception: + list(raw_reader.raw_frame_generator()) + + assert "incomplete frame" in str(exception.value) + + + +class TestSlabParserContract: + + def test_status_and_mode_constants_are_shared(self): + if _slab_parser is None: + pytest.skip("compiled slab parser not available") + + # the compiled module re-imports the constants of the pure + # Python module, so they can never drift apart + assert _slab_parser.STATUS_FRAME == _slab_parser_py.STATUS_FRAME + assert _slab_parser.STATUS_EOF == _slab_parser_py.STATUS_EOF + assert ( + _slab_parser.STATUS_NEED_MORE == _slab_parser_py.STATUS_NEED_MORE + ) + assert ( + _slab_parser.STATUS_BAD_HEADER + == _slab_parser_py.STATUS_BAD_HEADER + ) + assert _slab_parser.MODE_XYZ == _slab_parser_py.MODE_XYZ + assert _slab_parser.MODE_CHARGE == _slab_parser_py.MODE_CHARGE + + + +@pytest.mark.skipif( + not os.environ.get("PQANALYSIS_SLAB_BENCH_DIR"), + reason="PQANALYSIS_SLAB_BENCH_DIR not set", +) +@pytest.mark.usefixtures("parser_module") +class TestSlabParserBenchFileParity: + + """ + Full bit-parity over all frames of the local benchmark + trajectories (only run when PQANALYSIS_SLAB_BENCH_DIR is set). + """ + + def test_bench_xyz_and_vel_parity(self): + bench_dir = os.environ["PQANALYSIS_SLAB_BENCH_DIR"] + + for name in ("traj.xyz", "traj.vel"): + assert_matches_frame_generator( + [os.path.join(bench_dir, name)] + ) + + def test_bench_charge_parity(self): + bench_dir = os.environ["PQANALYSIS_SLAB_BENCH_DIR"] + filename = os.path.join(bench_dir, "traj.chrg") + + reader = TrajectoryReader( + filename, traj_format=TrajectoryFormat.CHARGE + ) + raw_reader = RawChargeTrajectoryReader(filename) + + generator = reader.frame_generator() + + for values, _ in raw_reader.raw_frame_generator(): + assert np.array_equal(values, next(generator).charges) + + + +class TestSlabParserPyLowLevel: + + """ + Directly exercises the pure Python slab parser helpers on hand + crafted byte buffers to reach the buffer/EOF edge branches that + the end-to-end reader tests do not hit. + """ + + def test_scan_header_body_line_without_trailing_newline_at_eof(self): + # a header line that is the last line of the file and has no + # trailing newline: the parser must treat the end of the + # buffer as the end of the line (line_end = n_data). + status, n_atoms, box_bytes, header_token, next_offset = ( + _slab_parser_py.scan_header(b"2 11.1 12.2 13.3", 0, True) + ) + + assert status == _slab_parser_py.STATUS_FRAME + assert n_atoms == 2 + assert box_bytes == b"11.1 12.2 13.3" + assert header_token is None + # the (virtual) body offset is one past the end of the buffer + assert next_offset == len(b"2 11.1 12.2 13.3") + 1 + + def test_scan_header_skips_leading_blank_lines(self): + # two whitespace-only lines precede the header line and must + # be skipped before the header is parsed. + status, n_atoms, box_bytes, _, _ = _slab_parser_py.scan_header( + b"\n \n2 11.1 12.2 13.3\n", 0, True + ) + + assert status == _slab_parser_py.STATUS_FRAME + assert n_atoms == 2 + assert box_bytes == b"11.1 12.2 13.3" + + def test_parse_body_incomplete_comment_line_at_eof_raises(self): + # the comment line of the frame has no trailing newline and + # the buffer is at EOF: the frame is incomplete. + with pytest.raises(EOFError) as exception: + _slab_parser_py.parse_body( + b"comment-without-newline", + 0, + 1, + True, + False, + _slab_parser_py.MODE_XYZ, + ) + + assert "incomplete frame" in str(exception.value) + + + +class TestSlabParserPyProcessLinesFallbackImport: + + """ + Covers the ``except ModuleNotFoundError`` fallback import of + ``process_lines`` at the top of the pure Python slab parser + module. + """ + + def test_process_lines_fallback_import(self): + # remember the currently wired process_lines implementation so + # the module can be restored to exactly this state afterwards. + original_module = _slab_parser_py.process_lines.__module__ + + target = "PQAnalysis.io.traj_file.process_lines" + saved = sys.modules.pop(target, None) + + class _Block: + + def find_spec(self, name, path=None, target=None): # pylint: disable=unused-argument + if name == "PQAnalysis.io.traj_file.process_lines": + raise ModuleNotFoundError(name) + + return None + + blocker = _Block() + sys.meta_path.insert(0, blocker) + + try: + importlib.reload(_slab_parser_py) + + # with the compiled process_lines blocked, the pure Python + # implementation is imported instead. + assert _slab_parser_py.process_lines.__module__.endswith( + "_process_lines_py" + ) + finally: + sys.meta_path.remove(blocker) + + if saved is not None: + sys.modules[target] = saved + + importlib.reload(_slab_parser_py) + + # the module is restored to exactly the state the rest of the + # test suite relies on. + assert _slab_parser_py.process_lines.__module__ == original_module