diff --git a/.gitignore b/.gitignore index 398ef4b..7839ad8 100644 --- a/.gitignore +++ b/.gitignore @@ -166,6 +166,25 @@ ENV/ env.bak/ venv.bak/ +# Локальные инструменты, распакованные не из пакетного менеджера (GHDL для +# анализа и симуляции VHDL, clangd). Ставятся скриптом, в репозиторий не идут. +.tools/ + +# База компиляции для clangd: абсолютные пути этой машины. +# Генерируется .claude/tools/gen_compile_commands.sh из Makefile. +compile_commands.json + +# Граф знаний graphify: 22 МБ, пересобирается из кода за минуту. +# Список исключений для него — в .graphifyignore, он тоже не версионируется +# (см. ниже, вместе с остальной обвязкой Claude Code). +graphify-out/ + +# Payload комплекта установки на Windows: копия файлов из дерева LibreVNA. +# Генерируется install_windows/make_files.sh; в git не идёт, чтобы не разойтись +# с деревом (уже расходился). +device_firmware/multi_libreVNA_firmware/reproduce/install_windows/files/ +device_firmware/multi_libreVNA_firmware/reproduce/install_windows/backup_original/ + # Spyder project settings .spyderproject .spyproject @@ -226,7 +245,12 @@ __marimo__/ python_app/runtime SHARE_INTERNET_TO_PI.md +# Локальная обвязка Claude Code: инструкции, хуки, скилы, конфиги инструментов. +# В репозиторий не идёт. CLAUDE.md +.claude/ +.graphifyignore +pyrightconfig.json /docs/ test_end_2/ diff --git a/README.md b/README.md index fe82660..e3afb6d 100644 --- a/README.md +++ b/README.md @@ -69,9 +69,11 @@ controls plus a pixel-identical live plot through an embedded web UI. ## Requirements -- Linux (POSIX shared memory; GPIO on Raspberry Pi). +- Linux (POSIX shared memory; GPIO on Raspberry Pi). The deployment target is a + **Raspberry Pi 5**; hardware PWM gating for the generator sweep is Pi 5 + specific (GPIO12/13/18/19, `dtoverlay=pwm-2chan`). - A C++20 compiler and `make` — Eigen and nlohmann/json are vendored, so no extra C++ dependencies are needed. -- Python 3.12 with a virtual environment. +- **Python 3.10 or newer**, in a virtual environment. ## Build and run diff --git a/data_acq_and_processing/kamil_adc_collector/README.md b/data_acq_and_processing/kamil_adc_collector/README.md index 835877d..eea20b2 100644 --- a/data_acq_and_processing/kamil_adc_collector/README.md +++ b/data_acq_and_processing/kamil_adc_collector/README.md @@ -13,12 +13,18 @@ counterpart to the C++ `sweep_orchestrator` used by LibreVNA devices. | Path | Contents | |------|----------| | `src/` | Collector implementation (`main.cpp`) and the PTY / capture-file writers. | -| `include/` | Headers for the writers. | +| `include/` | Headers for the writers plus `switch_sequencer.h`. | | `vendor/lcard/` | L-Card X502/E502 SDK headers (`x502api.h`, `e502api.h`, `lcard_pstdint.h`), vendored verbatim so the collector builds with no external include path. | -The sources under `src/` and `include/` are imported verbatim from the original -standalone tool and are kept byte-for-byte identical — the wire format and -acquisition behaviour are unchanged; only their home moved into this repo. +The sources started as a verbatim import of the original standalone tool, but are +**no longer identical to it**: the collector now drives the RF switches itself +(switch-aware mode, `SwitchSequencer`), stepping to the next combination inside +the hardware idle gap between sweeps and flagging a sweep *dirty* when a readout +backlog means the toggle could not have landed in that gap. It therefore reuses +the orchestrator's switch drivers and the shared `run_config` loader, which is why +its build has its own include set and its own `build/kamil/` object tree. + +The wire format towards the Python producer is unchanged. ## Build diff --git a/device_firmware/librevna_protocol.md b/device_firmware/librevna_protocol.md new file mode 100644 index 0000000..cf7c96f --- /dev/null +++ b/device_firmware/librevna_protocol.md @@ -0,0 +1,267 @@ +# Бинарный протокол LibreVNA: что шлёт и парсит наш драйвер + +Разбор USB-протокола LibreVNA и того, какое его подмножество использует +`python_app/hardware_full/librevna_multi_device_driver`. Про переключение +стимула внутри частотной точки — отдельный документ, +[per_point_switching.md](per_point_switching.md). + +Прошивка в репозитории лежит под +`device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Software/VNA_embedded/Application/`, +дальше он сокращён до ``. Версия протокола, заявленная прошивкой — +`Protocol::Version = 14` (`/Communication/Protocol.hpp:13`). + +## 1. Транспорт + +Поверх USB у LibreVNA свой бинарный протокол, а не tty/serial. Endpoints: + +| Endpoint | Направление | +| --- | --- | +| `0x01` | хост -> устройство | +| `0x81` | устройство -> хост | +| `0x82` | отладочные ASCII-логи | + +Наш драйвер шлёт в `0x01`, читает из `0x81`, `0x82` не использует. Приёмный +поток и очередь пакетов — в `librevna_multi_device_driver/transport.py`. + +Очередь принятых пакетов ограничена и работает по принципу drop-oldest: +блокировать USB-поток чтения нельзя, а устаревшие пакеты всё равно +выбрасываются предсборочным дренажом (`transport.py:109`). + +## 2. Структура кадра + +Одна и та же почти для всех типов пакетов +(`/Communication/PacketConstants.h`): + +| Поле | Длина | Значение | +| --- | --- | --- | +| Header | 1 | всегда `0x5A` | +| Length | 2 | длина **всего** кадра, little-endian | +| Type | 1 | номер типа пакета | +| Payload | переменная | | +| CRC32 | 4 | по всему кадру, включая header | + +Итого накладных расходов 8 байт: `длина кадра = 8 + len(payload)`. + +Кодирование и разбор на хосте — в общем модуле одиночного драйвера, а не в +multi-device: `python_app/hardware_full/librevna_driver/protocol/frame.py`, +функции `encode_frame` (строка 25) и `decode_frame` (строка 49). Поток байт +разбирает `FrameScanner`, который умеет ресинхронизироваться после битого кадра, +не роняя устройство. + +### CRC: у `VNADatapoint` особый случай + +Прошивка **не считает** CRC для `VNADatapoint` и пишет туда ноль, потому что +расчёт занимает около 18 мкс — это основная часть времени кодирования и +передачи точки (`/Communication/Protocol.cpp:149`). На приёме она, +наоборот, **требует** ровно нуля: непустой CRC у datapoint считается ошибкой +(`Protocol.cpp:69` и `Protocol.cpp:80`). + +Наш хост повторяет это поведение точно: `decode_frame` проверяет CRC32 для всех +типов, а для `VNADatapoint` требует ноль (`frame.py:20` — список исключений). + +Дополнительно multi-device парсер отбраковывает пакет, у которого тело не +кратно 9 байтам на значение: раз CRC у datapoint нет, это единственная защита +от ресинхронизации на `0x5A`, случайно оказавшийся внутри payload +(`librevna_multi_device_driver/protocol.py:137`). + +## 3. Типы пакетов + +Полный enum — `/Communication/Protocol.hpp:573`, там 30+ типов. Наш драйвер +использует шесть (`librevna_multi_device_driver/protocol.py:17`): + +| Тип | Номер | Зачем | +| --- | --- | --- | +| `SweepSettings` | 2 | настройка развёртки, она же её запуск | +| `Ack` | 7 | подтверждение команды | +| `Nack` | 10 | отказ | +| `Reference` | 11 | выбор источника опорной частоты | +| `SetIdle` | 20 | остановить развёртку, перевести в idle | +| `VNADatapoint` | 27 | поток измерений | + +То есть это узкий VNA-sweep-драйвер, а не полная реализация всех режимов +прибора. Не используются `RequestDeviceInfo`, проверка версии протокола, +`SetTrigger`/`ClearTrigger`, генератор, анализатор спектра, калибровочные +пакеты. + +## 4. Пакеты, которые шлём + +### `Reference` (11) + +Структура — `Protocol.hpp:186`: `uint32 ExtRefOuputFreq` плюс битовое поле +`AutomaticSwitch` и `UseExternalRef`. + +Шлём `output_frequency_hz = 0` и флаг внешней опоры: выход `Ref Out` не +включаем, а устройству принудительно указываем использовать внешние 10 МГц. +Строит `build_reference_settings_payload` (`protocol.py:48`), отправляет +`controller.py`. + +### `SweepSettings` (2) + +Структура — `Protocol.hpp:155`: + +```c +uint64 f_start, f_stop; +uint16 points; +uint32 if_bandwidth; +int16 cdbm_excitation_start; +uint8 standby:1, syncMaster:1, suppressPeaks:1, fixedPowerSetting:1, + logSweep:1, syncMode:2, unused1:1; +uint16 stages:3, port1Stage:3, port2Stage:3, port3Stage:3, port4Stage:3, unused2:1; +int16 cdbm_excitation_stop; +uint16 dwell_time; // в микросекундах +``` + +Что кладём (`build_sweep_settings_payload`, `protocol.py:58`): + +- `f_start`/`f_stop`/`points`/`if_bandwidth` — из `SweepConfiguration`; +- мощность старта и стопа одинаковая, `fixedPowerSetting = 1` — аттенюатор и + мощность PLL не меняются по развёртке; +- `suppressPeaks = 1`, `logSweep = 0`, `standby = 0`; +- `syncMode = 3` (триггерная синхронизация), если синхронизация включена; +- `syncMaster = 1` только у мастера; +- `stages` — номер последней стадии, не их количество; +- порт-стадии — см. ниже. + +Про `syncMode = 3`: в стоковой прошивке рядом с полем стоит комментарий +«Trigger synchronization (not supported yet by hardware)». В нашем форке этот +режим и используется — устройство переводит обе триггерные линии FPGA в Hi-Z. + +**Порт-стадии — не то, что было в первой версии драйвера.** Раньше мастер +получал `port1Stage = 0`, а слейв `1`. Сейчас: + +- мастеру отправляется **первая стадия блока** порта (`index * substage_count`); + без под-стадий это просто индекс порта, то есть стоковая раскладка; +- приёмным устройствам обе порт-стадии выставляются в + `DISABLED_PORT_STAGE = 7` (`protocol.py:36`) — «порт выключен»; +- ширина блока под-стадий передаётся как `log2` в неиспользуемое поле + `port3Stage`. + +Почему именно так и почему семёрка безопасна — в +[per_point_switching.md](per_point_switching.md). + +### `SetIdle` (20) + +Без payload. Выключает активный режим и останавливает развёртку. Используется +как служебная команда: остановить непрерывную развёртку, убраться при ошибке, +`close()`. + +### `Ack` (7) / `Nack` (10) + +Ответы устройства на команды хоста. `wait_for_acknowledgement` +(`transport.py:96`) читает входящие пакеты, на `Ack` считает команду +применённой, на `Nack` бросает исключение, прочие асинхронные пакеты +пропускает. + +## 5. `VNADatapoint` (27) — поток измерений + +Шаблон `VNADatapoint` — `Protocol.hpp:25`; у прошивки `s = 32`, то есть до 32 +значений в точке (три на стадию при восьми стадиях). + +Payload: + +| Поле | Тип | Длина | +| --- | --- | --- | +| `frequency` | uint64 | 8 | +| `cdBm` | int16 | 2 | +| `pointNum` | uint16 | 2 | +| `real_values` | n × float32 | 4n | +| `imag_values` | n × float32 | 4n | +| `descr_values` | n × uint8 | n | + +Фиксированная часть — 12 байт, дальше по 9 байт на значение, причём **не +чередуясь**: сначала все реальные части, потом все мнимые, потом все +дескрипторы. Отсюда `n = (len(payload) - 12) / 9`. + +Разбирает `parse_vna_datapoint_payload` (`protocol.py:137`). + +### Байт дескриптора + +Смещения битов — `/Communication/PacketConstants.h:42`: + +| Биты | Значение | +| --- | --- | +| 0 | порт 1 | +| 1 | порт 2 | +| 2 | порт 3 | +| 3 | порт 4 | +| 4 | опорный приёмник (Reference) | +| 5..7 | номер стадии | + +То же отражено в `enum class Source` (`Protocol.hpp:17`): `Port1 = 0x01`, +`Port2 = 0x02`, `Port3 = 0x04`, `Port4 = 0x08`, `Reference = 0x10`. +Прошивка собирает байт как `stage << 5 | sourceMask`. + +На каждую стадию приходит ровно три значения (`/VNA.cpp:407`): порт 1, порт +2 и опорный приёмник. **Ловушка:** у опорного значения маска не `0x10`, а +`Port1 | Port2 | Reference = 0x13` — то есть биты портов у него тоже стоят. +Поэтому отбирать сигнальное значение только по биту порта нельзя, надо ещё +требовать сброшенный бит 4; именно так и сделано в `find_receiver_value`. + +Ищет значение по этому байту `find_receiver_value` (`protocol.py:174`) — +фильтрует по стадии, по признаку опорного приёмника и, если задан, по порту. +Например: «стадия 0 + ref» — опорный приёмник мастера; «стадия 0 + порт 1, не +ref» — сигнал на первом приёмнике. + +## 6. Как из этого получаются S-параметры + +Устройство S-параметры **не считает** — оно отдаёт только сырые комплексные +отсчёты приёмников. Считает хост, в +`librevna_multi_device_driver/cycle_collection.py`. + +Нормировка (`calculate_last_cycle_s_parameters`, строка 783): каждый канал +делится на опорный приёмник **мастера**, а не на локальный опорный приёмник +слейва — потому что излучает именно мастер. Опорные измерения хранятся по +номеру выходного канала (`master_reference_measurements_by_output`), так как с +переключением стимула выходов больше, чем портов мастера. + +Имена S-параметров: отражение мастера — `master_reflection_s_parameter_name` +(строка 760), прямые каналы — `build_forward_s_parameter_names` (строка 765). +Нумерация приёмных портов слейвов начинается **после** всех выходов, чтобы +`S33`/`S44` отражения не столкнулись с прямыми каналами. + +## 7. Почему поле мощности читается, но не используется + +В парсере стоит: + +```python +frequency_hz, _power_level_centidecibels_milliwatt, point_index = struct.unpack_from( + " device -- `0x81` — device -> host -- `0x82` — debug ASCII logs - -В нашем коде data transport работает только через: -- [librevna_usb_transport.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_usb_transport.py) - -То есть: -- мы шлём команды в `0x01` -- читаем протокольные пакеты из `0x81` -- `0x82` вообще не используем - -**2. Общая структура любого LibreVNA packet** -Общий framing один и тот же для почти всех packet types. Это описано в docs и реализовано в firmware: -- docs: [Device_protocol_v13.tex](/home/europa/Documents/LibreVNA/Documentation/DeveloperInfo/Device_protocol_v13.tex:208) -- firmware decode/encode: [Protocol.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.cpp:5) -- field offsets/constants: [PacketConstants.h](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/PacketConstants.h:10) - -Структура такая: -1. `Header` — 1 байт, всегда `0x5A` -2. `Length` — 2 байта, общая длина всего packet целиком -3. `Type` — 1 байт, номер packet type -4. `Payload` — переменная длина -5. `CRC32` — 4 байта - -В Python это делает: -- `encode_protocol_frame(...)` в [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:31) -- `extract_complete_protocol_frames(...)` в [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:45) - -`encode_protocol_frame(...)`: -- считает `total_frame_length = 8 + len(payload)` -- пакует header/length/type -- считает CRC32 -- дописывает CRC в конец - -`extract_complete_protocol_frames(...)`: -- получает поток байт, а не “готовый packet” -- ищет `0x5A` -- читает `length` -- если полного frame ещё нет, оставляет хвост в буфере -- если frame полный, возвращает `(packet_type, payload)` - -Очень важно: -- наш Python сейчас **не проверяет CRC** -- firmware проверяет CRC для почти всех пакетов, но для `VNADatapoint` у них особый случай: CRC всегда `0`, чтобы не тратить время на вычисление CRC для каждого datapoint, см. [Protocol.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.cpp:69) и [Protocol.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.cpp:147) - -То есть сейчас Python делает “framing by magic + length”, но не “integrity check”. - -**3. Какие packet types вообще бывают** -Полный актуальный enum лежит тут: -- [Protocol.hpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.hpp:573) - -Там есть много типов: -- `SweepSettings = 2` -- `ManualStatus = 3` -- `ManualControl = 4` -- `DeviceInfo = 5` -- `FirmwarePacket = 6` -- `Ack = 7` -- `ClearFlash = 8` -- `PerformFirmwareUpdate = 9` -- `Nack = 10` -- `Reference = 11` -- `Generator = 12` -- `SpectrumAnalyzerSettings = 13` -- `SpectrumAnalyzerResult = 14` -- `RequestDeviceInfo = 15` -- ... -- `SetIdle = 20` -- `DeviceStatus = 25` -- `RequestDeviceStatus = 26` -- `VNADatapoint = 27` -- `SetTrigger = 28` -- `ClearTrigger = 29` -- `InitiateSweep = 32` -- `PerformAction = 33` - -Но наш текущий драйвер использует только маленький поднабор. Это зашито в: -- [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:9) - -Мы используем: -- `SweepSettings = 2` -- `Ack = 7` -- `Nack = 10` -- `Reference = 11` -- `SetIdle = 20` -- `VNADatapoint = 27` - -То есть текущий драйвер — это именно VNA sweep driver, а не “полная реализация всех режимов прибора”. - -**4. Какие именно пакеты использует наш драйвер** -Разберу их по смыслу. - -**`ReferenceSettings` / packet type `11`** -Структура в firmware: -- [Protocol.hpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.hpp:186) - -Поля: -- `uint32 ExtRefOutputFreq` -- битовое поле: - - `AutomaticSwitch` - - `UseExternalRef` - -В Python это строит: -- `build_reference_settings_payload(...)` в [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:74) - -Сейчас мы шлём: -- `output_frequency_hz = 0` -- `force_external_reference = True` - -То есть: -- никакой `Ref Out` не включаем -- просто принудительно говорим устройству использовать внешний `10 MHz` - -Это применяется в controller: -- [multi_device_vna_controller.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/multi_device_vna_controller.py:183) - -**`SweepSettings` / packet type `2`** -Структура в firmware: -- [Protocol.hpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.hpp:155) - -Поля: -- `f_start` -- `f_stop` -- `points` -- `if_bandwidth` -- `cdbm_excitation_start` -- bitfield config: - - `standby` - - `syncMaster` - - `suppressPeaks` - - `fixedPowerSetting` - - `logSweep` - - `syncMode` -- stage mapping bitfield -- `cdbm_excitation_stop` -- `dwell_time` - -В Python это строит: -- `build_sweep_settings_payload(...)` в [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:92) - -Что мы туда кладём: -- start/stop/points/ifbw — из `SweepConfiguration` -- power start/stop — одинаковые -- `fixedPowerSetting = 1` -- `suppressPeaks = 1` -- `logSweep = 0` -- `syncMode = 3`, если есть slaves -- `syncMaster = 1` только у master -- `port_1_stimulus_stage = 0` для master, `1` для slave - -Смысл: -- master возбуждает `Port 1` -- slaves только принимают -- sync идёт через hardware trigger path - -Этот packet реально запускает VNA setup в firmware: -- [App.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/App.cpp:126) - -**`SetIdle` / packet type `20`** -Очень простой packet, без payload. -В firmware: -- [App.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/App.cpp:196) - -Он переводит устройство в idle: -- выключает активный режим -- останавливает sweep path - -У нас он используется только как service-command: -- остановить continuous sweep -- cleanup при ошибке -- `close()` - -Это делает controller: -- [multi_device_vna_controller.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/multi_device_vna_controller.py:173) - -**`Ack` / `Nack` / packet types `7` и `10`** -Это ответы устройства на команды host. -В firmware: -- enum: [Protocol.hpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.hpp:581) -- отправка `Ack`/`Nack`: [App.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/App.cpp:129) - -В transport: -- `wait_for_acknowledgement(...)` в [librevna_usb_transport.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_usb_transport.py:62) - -Логика: -- читаем входящие пакеты -- если пришёл `Ack`, команда считается применённой -- если пришёл `Nack`, бросаем exception -- прочие asynchronous packets просто пропускаем - -**`VNADatapoint` / packet type `27`** -Это главный поток измерения. -Структура в firmware: -- template `VNADatapoint`: [Protocol.hpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.hpp:25) -- декодирование: [Protocol.cpp](/home/europa/Documents/LibreVNA/Software/VNA_embedded/Application/Communication/Protocol.cpp:79) - -Payload такой: -1. `frequency` — `uint64`, 8 байт -2. `cdBm` — `int16`, 2 байта -3. `pointNum` — `uint16`, 2 байта -4. `real_values` — `n * float32` -5. `imag_values` — `n * float32` -6. `descr_values` — `n * uint8` - -То есть фиксированный header payload имеет длину 12 байт: -- `8 + 2 + 2` - -А дальше идёт `n` значений, каждое занимает: -- `4` байта real -- `4` байта imag -- `1` байт descriptor -- итого `9` байт на одно значение - -В Python это парсится тут: -- `parse_vna_datapoint_payload(...)` в [librevna_device_protocol.py](/home/europa/Documents/LibreVNA/Python/librevna_multi_device_driver/librevna_device_protocol.py:134) - -Алгоритм: -- читаем `frequency_hz`, `power`, `point_index` через `struct.unpack_from(" bytes: - """Wrap a packet payload in the LibreVNA transport frame.""" - - total_frame_length = 8 + len(payload) - frame_without_crc = struct.pack( - " tuple[list[tuple[int, bytes]], bytes]: - """ - Extract every complete protocol frame from a byte stream buffer. - - Returns a tuple of: - 1. a list of `(packet_type, payload)` tuples - 2. the unconsumed trailing bytes that do not yet form a full frame - """ - - extracted_packets: list[tuple[int, bytes]] = [] - while len(buffered_bytes) >= 4: - if buffered_bytes[0] != FRAME_HEADER_MAGIC: - buffered_bytes = buffered_bytes[1:] - continue - - total_frame_length = struct.unpack_from(" bytes: - """Build the ReferenceSettings payload.""" - - automatic_reference_switch = 0 - external_input_configuration_bits = ( - automatic_reference_switch << 0 - | force_external_reference << 1 - ) - return struct.pack( - " bytes: - """Build the current protocol-v14 SweepSettings payload.""" - - excitation_power_centidecibels_milliwatt = int(sweep_configuration.power_dbm * 100) - dwell_time_microseconds = max( - 0, - min(int(sweep_configuration.dwell_us), 0xFFFF), - ) - synchronization_mode = ( - SYNC_MODE_HARDWARE_TRIGGER if synchronization_enabled else 0 - ) - - configuration_bits = ( - 0 << 0 - | is_synchronization_master << 1 - | 1 << 2 - | 1 << 3 - | 0 << 4 - | synchronization_mode << 5 - ) - - port_1_stimulus_stage = 0 if is_synchronization_master else 1 - stage_configuration_bits = 0 | port_1_stimulus_stage << 3 | 1 << 6 - - return struct.pack( - " Optional[ParsedVnaDatapoint]: - """Decode one VNADatapoint payload into a structured Python object.""" - - fixed_header_length_bytes = 12 - per_value_storage_length_bytes = 9 - - if len(payload) < fixed_header_length_bytes: - return None - - frequency_hz, _power_level_centidecibels_milliwatt, point_index = struct.unpack_from( - " Optional[complex]: - """Look up one complex receiver value by stage, receiver type, and port number.""" - - required_port_bit = (1 << (required_port_number - 1)) if required_port_number else 0 - for description_mask, complex_value in receiver_values_by_description_mask.items(): - if (description_mask >> 5) != stage_index: - continue - if bool(description_mask & 0x10) != is_reference_receiver: - continue - if required_port_bit and not (description_mask & required_port_bit): - continue - return complex_value - return None diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/librevna_usb_transport.py b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/librevna_usb_transport.py deleted file mode 100644 index 8e72b50..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/librevna_usb_transport.py +++ /dev/null @@ -1,169 +0,0 @@ -import logging -import queue -import threading -import time - -import usb.core -import usb.util - -try: - import libusb_package -except ImportError: - libusb_package = None - -from .librevna_device_protocol import ( - PacketType, - encode_protocol_frame, - extract_complete_protocol_frames, -) - - -USB_VENDOR_ID = 0x1209 -USB_PRODUCT_ID = 0x4121 -USB_DATA_ENDPOINT_OUT = 0x01 -USB_DATA_ENDPOINT_IN = 0x81 - -transport_logger = logging.getLogger(__name__) - - -class LibreVnaUsbBackendError(RuntimeError): - """Raised when PyUSB cannot access a libusb backend.""" - - -def _build_missing_backend_message() -> str: - return ( - "PyUSB could not find a libusb backend. " - "On Windows, install the Python USB backend with " - "`python -m pip install -r Python/requirements.txt` from the repository root " - "or `python -m pip install libusb-package` inside the active virtual environment. " - "If the LibreVNA GUI already sees the device, the USB driver is likely fine and " - "only the Python libusb DLL is missing." - ) - - -def _usb_find(**kwargs): - if libusb_package is not None: - return libusb_package.find(**kwargs) - - try: - return usb.core.find(**kwargs) - except usb.core.NoBackendError as exc: - raise LibreVnaUsbBackendError(_build_missing_backend_message()) from exc - - -class LibreVnaUsbBulkConnection: - """USB bulk transport wrapper for one LibreVNA device.""" - - _USB_TRANSFER_TIMEOUT_MS = 1_000 - - def __init__(self, serial_number: str) -> None: - usb_device = _usb_find( - idVendor=USB_VENDOR_ID, - idProduct=USB_PRODUCT_ID, - serial_number=serial_number, - ) - if usb_device is None: - raise RuntimeError(f"LibreVNA with serial {serial_number!r} not found on USB") - - try: - if usb_device.is_kernel_driver_active(0): - usb_device.detach_kernel_driver(0) - except (usb.core.USBError, NotImplementedError): - pass - - usb_device.set_configuration() - - self.serial_number = serial_number - self._usb_device = usb_device - self._received_packets: queue.Queue[tuple[int, bytes]] = queue.Queue() - self._stop_requested = threading.Event() - self._transmit_lock = threading.Lock() - self._receive_thread = threading.Thread( - target=self._receive_packets_forever, - daemon=True, - name=f"vna-rx-{serial_number[:8]}", - ) - self._receive_thread.start() - - def close(self) -> None: - self._stop_requested.set() - self._receive_thread.join(timeout=0.5) - usb.util.dispose_resources(self._usb_device) - - def drain_received_packets(self) -> list[tuple[int, bytes]]: - """Remove all already-buffered packets without blocking.""" - - drained_packets: list[tuple[int, bytes]] = [] - while True: - try: - drained_packets.append(self._received_packets.get_nowait()) - except queue.Empty: - return drained_packets - - def send_packet(self, packet_type: int, payload: bytes = b"") -> None: - with self._transmit_lock: - self._usb_device.write( - USB_DATA_ENDPOINT_OUT, - encode_protocol_frame(packet_type, payload), - timeout=self._USB_TRANSFER_TIMEOUT_MS, - ) - - def receive_packet(self, timeout_seconds: float = 2.0) -> tuple[int, bytes]: - """Wait for the next received packet.""" - - return self._received_packets.get(timeout=timeout_seconds) - - def wait_for_acknowledgement(self, timeout_seconds: float = 2.0) -> None: - """Wait for an ACK packet while ignoring unrelated asynchronous packets.""" - - end_time_monotonic = time.monotonic() + timeout_seconds - while True: - remaining_seconds = end_time_monotonic - time.monotonic() - if remaining_seconds <= 0: - raise TimeoutError(f"ACK not received within {timeout_seconds} s") - - packet_type, _payload = self.receive_packet(timeout_seconds=remaining_seconds) - if packet_type == PacketType.ACKNOWLEDGE: - return - if packet_type == PacketType.NEGATIVE_ACKNOWLEDGE: - raise RuntimeError("Device returned NACK") - - def _receive_packets_forever(self) -> None: - buffered_bytes = b"" - while not self._stop_requested.is_set(): - try: - usb_chunk = bytes( - self._usb_device.read( - USB_DATA_ENDPOINT_IN, - 4096, - timeout=100, - ) - ) - except usb.core.USBTimeoutError: - continue - except Exception as exc: - if not self._stop_requested.is_set(): - transport_logger.error( - "USB read error on %s: %s", - self.serial_number, - exc, - ) - break - - buffered_bytes += usb_chunk - extracted_packets, buffered_bytes = extract_complete_protocol_frames( - buffered_bytes - ) - for packet in extracted_packets: - self._received_packets.put(packet) - - -def list_connected_device_serial_numbers() -> list[str]: - """Return the serial numbers of all connected LibreVNA devices.""" - - connected_devices = _usb_find( - idVendor=USB_VENDOR_ID, - idProduct=USB_PRODUCT_ID, - find_all=True, - ) - return [device.serial_number for device in (connected_devices or [])] diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/multi_device_vna_controller.py b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/multi_device_vna_controller.py deleted file mode 100644 index e46f47b..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/multi_device_vna_controller.py +++ /dev/null @@ -1,223 +0,0 @@ -import time -from collections.abc import Iterator, Sequence -from dataclasses import replace -from typing import Optional - -from .librevna_device_protocol import ( - PacketType, - build_reference_settings_payload, - build_sweep_settings_payload, -) -from .librevna_usb_transport import ( - LibreVnaUsbBulkConnection, -) -from .running_sweep_cycle_collection import collect_complete_running_sweep_cycles -from .sweep_measurement_models import SweepConfiguration, SweepMeasurementResult - - -class MultiDeviceVnaController: - """ - Multi-device LibreVNA controller for synchronized forward S-parameter sweeps. - - Port mapping: - master Port 1 / Port 2 → S11 / S21 - slave 0 Port 1 / Port 2 → S31 / S41 - slave 1 Port 1 / Port 2 → S51 / S61 - """ - - def __init__( - self, - master_serial_number: str, - slave_serial_numbers: Sequence[str] = (), - force_external_reference: bool = True, - ) -> None: - self._master_device = LibreVnaUsbBulkConnection(master_serial_number) - self._slave_devices = [ - LibreVnaUsbBulkConnection(slave_serial_number) - for slave_serial_number in slave_serial_numbers - ] - self._all_devices = [self._master_device, *self._slave_devices] - self._synchronization_enabled = len(self._slave_devices) > 0 - self._force_external_reference = force_external_reference - self._reference_configuration_applied = False - self._last_applied_sweep_configuration: Optional[SweepConfiguration] = None - self._sweep_is_running = False - self._is_closed = False - - def __enter__(self): - return self - - def __exit__(self, *_): - self.close() - - def close(self) -> None: - if self._is_closed: - return - - self._is_closed = True - self._send_idle_to_all_devices() - for device_connection in self._all_devices: - device_connection.close() - - def stop_continuous_sweep(self) -> None: - """Stop the currently running sweep without closing the controller.""" - - if self._is_closed: - return - self._send_idle_to_all_devices() - - def configure_continuous_sweep( - self, - sweep_configuration: SweepConfiguration, - ) -> None: - """ - Apply reference and sweep settings and leave the devices sweeping. - - Reapplying the same sweep configuration is a no-op. - """ - - if self._is_closed: - raise RuntimeError("Controller is already closed") - - if not self._reference_configuration_applied: - self._configure_reference_clocks() - - if ( - self._sweep_is_running - and self._last_applied_sweep_configuration == sweep_configuration - ): - return - - if self._sweep_is_running: - self._send_idle_to_all_devices() - time.sleep(0.05) - - self._drain_all_received_packets() - self._configure_sweep_on_all_devices(sweep_configuration) - - def collect_running_sweep_cycles( - self, - cycle_count: int = 1, - ) -> SweepMeasurementResult: - """ - Collect one or more complete cycles from the already-running sweep. - - Call configure_continuous_sweep() first. The driver aligns itself to the - next full cycle in the incoming datapoint stream and then captures - exactly `cycle_count` complete cycles. - """ - - if self._is_closed: - raise RuntimeError("Controller is already closed") - if not self._sweep_is_running or self._last_applied_sweep_configuration is None: - raise RuntimeError( - "No running sweep is configured. Call configure_continuous_sweep() first." - ) - - try: - return collect_complete_running_sweep_cycles( - master_device_connection=self._master_device, - slave_device_connections=self._slave_devices, - active_sweep_configuration=self._last_applied_sweep_configuration, - cycle_count=cycle_count, - ) - except Exception: - self._send_idle_to_all_devices() - raise - - def iter_running_sweep_cycles(self) -> Iterator[SweepMeasurementResult]: - """Yield complete sweep cycles forever from the already-running sweep.""" - - while True: - yield self.collect_running_sweep_cycles(1) - - def _send_command_and_wait_for_acknowledgement( - self, - device_connection: LibreVnaUsbBulkConnection, - packet_type: int, - payload: bytes = b"", - timeout_seconds: float = 3.0, - retry_count: int = 1, - ) -> None: - last_error: Optional[Exception] = None - for _attempt_index in range(retry_count + 1): - device_connection.send_packet(packet_type, payload) - try: - device_connection.wait_for_acknowledgement( - timeout_seconds=timeout_seconds - ) - return - except Exception as exc: - last_error = exc - - assert last_error is not None - raise last_error - - def _try_send_command_without_failing( - self, - device_connection: LibreVnaUsbBulkConnection, - packet_type: int, - payload: bytes = b"", - timeout_seconds: float = 3.0, - retry_count: int = 1, - ) -> None: - try: - self._send_command_and_wait_for_acknowledgement( - device_connection, - packet_type, - payload, - timeout_seconds=timeout_seconds, - retry_count=retry_count, - ) - except Exception: - pass - - def _send_idle_to_all_devices(self) -> None: - for device_connection in self._all_devices: - self._try_send_command_without_failing( - device_connection, - PacketType.SET_IDLE, - timeout_seconds=3.0, - retry_count=1, - ) - self._sweep_is_running = False - - def _configure_reference_clocks(self) -> None: - for device_connection in self._all_devices: - self._send_command_and_wait_for_acknowledgement( - device_connection, - PacketType.REFERENCE_SETTINGS, - build_reference_settings_payload(0, self._force_external_reference), - timeout_seconds=3.0, - retry_count=1, - ) - - time.sleep(0.05) - self._reference_configuration_applied = True - - def _configure_sweep_on_all_devices( - self, - sweep_configuration: SweepConfiguration, - ) -> None: - sweep_configuration_commands = [ - *[(slave_device, False) for slave_device in self._slave_devices], - (self._master_device, True), - ] - for device_connection, is_synchronization_master in sweep_configuration_commands: - self._send_command_and_wait_for_acknowledgement( - device_connection, - PacketType.SWEEP_SETTINGS, - build_sweep_settings_payload( - sweep_configuration, - is_synchronization_master=is_synchronization_master, - synchronization_enabled=self._synchronization_enabled, - ), - timeout_seconds=3.0, - retry_count=1, - ) - self._last_applied_sweep_configuration = replace(sweep_configuration) - self._sweep_is_running = True - - def _drain_all_received_packets(self) -> None: - for device_connection in self._all_devices: - device_connection.drain_received_packets() diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/running_sweep_cycle_collection.py b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/running_sweep_cycle_collection.py deleted file mode 100644 index 0d0c795..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/running_sweep_cycle_collection.py +++ /dev/null @@ -1,284 +0,0 @@ -import queue -import threading -import time -from collections.abc import Callable, Sequence -from typing import Optional - -import numpy as np - -from .librevna_device_protocol import ( - PacketType, - ParsedVnaDatapoint, - find_receiver_value, - parse_vna_datapoint_payload, -) -from .librevna_usb_transport import LibreVnaUsbBulkConnection -from .sweep_measurement_models import SweepConfiguration, SweepMeasurementResult - - -def collect_complete_running_sweep_cycles( - master_device_connection: LibreVnaUsbBulkConnection, - slave_device_connections: Sequence[LibreVnaUsbBulkConnection], - active_sweep_configuration: SweepConfiguration, - cycle_count: int, -) -> SweepMeasurementResult: - """Collect complete cycles from an already-running synchronized sweep.""" - - cycle_count = int(cycle_count) - if cycle_count < 1: - raise ValueError("cycle_count must be >= 1") - - all_device_connections = [master_device_connection, *slave_device_connections] - point_count = active_sweep_configuration.points - frequencies_hz = np.zeros(point_count, dtype=np.float64) - raw_receiver_measurements_by_s_parameter = { - s_parameter_name: np.full( - (cycle_count, point_count), - np.nan + 1j * np.nan, - dtype=complex, - ) - for s_parameter_name in build_forward_s_parameter_names(len(slave_device_connections)) - } - master_reference_measurements = np.full( - (cycle_count, point_count), - np.nan + 1j * np.nan, - dtype=complex, - ) - collection_errors: list[Exception] = [] - datapoint_counts_by_device_serial = { - device_connection.serial_number: 0 - for device_connection in all_device_connections - } - stop_collection_requested = threading.Event() - datapoint_timeout_seconds = max( - 10.0, - active_sweep_configuration.dwell_us / 1_000_000 + 2.0, - ) - - def collect_datapoints_from_device( - device_connection: LibreVnaUsbBulkConnection, - handle_datapoint: Callable[[ParsedVnaDatapoint], bool], - ) -> None: - datapoints_received = 0 - expected_datapoint_count = cycle_count * point_count - last_datapoint_timestamp = time.monotonic() - - while datapoints_received < expected_datapoint_count: - if stop_collection_requested.is_set(): - return - - remaining_timeout_seconds = ( - last_datapoint_timestamp + datapoint_timeout_seconds - ) - time.monotonic() - if remaining_timeout_seconds <= 0: - collection_errors.append( - TimeoutError( - f"No datapoints from {device_connection.serial_number} for " - f"{datapoint_timeout_seconds:.1f} s " - f"(received {datapoints_received}/{point_count})" - ) - ) - stop_collection_requested.set() - return - - try: - packet_type, payload = device_connection.receive_packet( - timeout_seconds=min(1.0, remaining_timeout_seconds) - ) - except (queue.Empty, TimeoutError) as exc: - if stop_collection_requested.is_set(): - return - if isinstance(exc, queue.Empty): - continue - collection_errors.append(exc) - stop_collection_requested.set() - return - - if packet_type != PacketType.VNA_DATAPOINT: - continue - - parsed_datapoint = parse_vna_datapoint_payload(payload) - if parsed_datapoint and 0 <= parsed_datapoint.point_index < point_count: - last_datapoint_timestamp = time.monotonic() - datapoint_was_consumed = handle_datapoint(parsed_datapoint) - if datapoint_was_consumed: - datapoint_counts_by_device_serial[device_connection.serial_number] += 1 - datapoints_received += 1 - - def build_cycle_tracking_handler( - cycle_aware_handler: Callable[[ParsedVnaDatapoint, int], None], - ) -> Callable[[ParsedVnaDatapoint], bool]: - cycle_tracking_state = { - "current_cycle_index": 0, - "previous_point_index": -1, - "has_seen_cycle_start": False, - } - - def handle_datapoint(parsed_datapoint: ParsedVnaDatapoint) -> bool: - current_point_index = parsed_datapoint.point_index - if not cycle_tracking_state["has_seen_cycle_start"]: - if current_point_index != 0: - cycle_tracking_state["previous_point_index"] = current_point_index - return False - cycle_tracking_state["has_seen_cycle_start"] = True - - if ( - cycle_tracking_state["previous_point_index"] >= 0 - and current_point_index < cycle_tracking_state["previous_point_index"] - ): - cycle_tracking_state["current_cycle_index"] += 1 - - cycle_tracking_state["previous_point_index"] = current_point_index - current_cycle_index = cycle_tracking_state["current_cycle_index"] - if current_cycle_index >= cycle_count: - return False - - cycle_aware_handler(parsed_datapoint, current_cycle_index) - return True - - return handle_datapoint - - def handle_master_datapoint( - parsed_datapoint: ParsedVnaDatapoint, - cycle_index: int, - ) -> None: - point_index = parsed_datapoint.point_index - reference_receiver_value = find_receiver_value( - parsed_datapoint.receiver_values_by_description_mask, - stage_index=0, - is_reference_receiver=True, - ) - if reference_receiver_value is None: - return - - frequencies_hz[point_index] = parsed_datapoint.frequency_hz - master_reference_measurements[cycle_index, point_index] = reference_receiver_value - - for receiver_port_number, s_parameter_name in ((1, "S11"), (2, "S21")): - port_receiver_value = find_receiver_value( - parsed_datapoint.receiver_values_by_description_mask, - stage_index=0, - is_reference_receiver=False, - required_port_number=receiver_port_number, - ) - if port_receiver_value is not None: - raw_receiver_measurements_by_s_parameter[s_parameter_name][ - cycle_index, - point_index, - ] = port_receiver_value - - def build_slave_datapoint_handler( - slave_index: int, - ) -> Callable[[ParsedVnaDatapoint], bool]: - first_s_parameter_name = f"S{2 * slave_index + 3}1" - second_s_parameter_name = f"S{2 * slave_index + 4}1" - - def handle_slave_datapoint( - parsed_datapoint: ParsedVnaDatapoint, - cycle_index: int, - ) -> None: - point_index = parsed_datapoint.point_index - for receiver_port_number, s_parameter_name in ( - (1, first_s_parameter_name), - (2, second_s_parameter_name), - ): - port_receiver_value = find_receiver_value( - parsed_datapoint.receiver_values_by_description_mask, - stage_index=0, - is_reference_receiver=False, - required_port_number=receiver_port_number, - ) - if port_receiver_value is not None: - raw_receiver_measurements_by_s_parameter[s_parameter_name][ - cycle_index, - point_index, - ] = port_receiver_value - - return build_cycle_tracking_handler(handle_slave_datapoint) - - collection_threads = [ - threading.Thread( - target=collect_datapoints_from_device, - args=( - master_device_connection, - build_cycle_tracking_handler(handle_master_datapoint), - ), - daemon=True, - name="collect-master", - ), - ] - for slave_index, slave_device_connection in enumerate(slave_device_connections): - collection_threads.append( - threading.Thread( - target=collect_datapoints_from_device, - args=(slave_device_connection, build_slave_datapoint_handler(slave_index)), - daemon=True, - name=f"collect-slave{slave_index}", - ) - ) - - for collection_thread in collection_threads: - collection_thread.start() - for collection_thread in collection_threads: - collection_thread.join() - - if collection_errors: - raise RuntimeError( - f"Sweep collection failed: {collection_errors[0]}" - ) from collection_errors[0] - - if slave_device_connections and min(datapoint_counts_by_device_serial.values(), default=0) == 0: - raise RuntimeError( - "No datapoints received from at least one device; " - "hardware trigger sync did not start. Check Trigger Out/In loop " - "and 10 MHz reference wiring." - ) - - return SweepMeasurementResult( - frequencies_hz=frequencies_hz, - s_parameters=calculate_last_cycle_s_parameters( - raw_receiver_measurements_by_s_parameter, - master_reference_measurements, - ), - ) - - -def calculate_last_cycle_s_parameters( - raw_receiver_measurements_by_s_parameter: dict[str, np.ndarray], - master_reference_measurements: np.ndarray, -) -> dict[str, np.ndarray]: - """Convert raw receiver captures from the final sweep cycle into S-parameters.""" - - if np.isnan(master_reference_measurements).any(): - missing_reference_count = int(np.isnan(master_reference_measurements).sum()) - raise RuntimeError( - f"Master reference missing for {missing_reference_count} datapoints" - ) - - s_parameters: dict[str, np.ndarray] = {} - for s_parameter_name, raw_receiver_measurements in ( - raw_receiver_measurements_by_s_parameter.items() - ): - if np.isnan(raw_receiver_measurements).any(): - missing_measurement_count = int(np.isnan(raw_receiver_measurements).sum()) - raise RuntimeError( - f"Measurement {s_parameter_name} missing for " - f"{missing_measurement_count} datapoints" - ) - s_parameters[s_parameter_name] = ( - raw_receiver_measurements[-1] / master_reference_measurements[-1] - ) - - return s_parameters - - -def build_forward_s_parameter_names(slave_device_count: int) -> list[str]: - """Return S-parameter names for the configured forward multi-device topology.""" - - s_parameter_names = ["S11", "S21"] - for slave_index in range(slave_device_count): - s_parameter_names += [ - f"S{2 * slave_index + 3}1", - f"S{2 * slave_index + 4}1", - ] - return s_parameter_names diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/sweep_measurement_models.py b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/sweep_measurement_models.py deleted file mode 100644 index ea225dd..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/librevna_multi_device_driver/sweep_measurement_models.py +++ /dev/null @@ -1,23 +0,0 @@ -from dataclasses import dataclass - -import numpy as np - - -@dataclass -class SweepConfiguration: - """User-facing configuration for one VNA sweep.""" - - start_hz: int = 100_000 - stop_hz: int = 3_000_000_000 - points: int = 201 - if_bandwidth: int = 1_000 - power_dbm: float = -10.0 - dwell_us: int = 0 - - -@dataclass -class SweepMeasurementResult: - """Measured sweep data from one or more complete sweep cycles.""" - - frequencies_hz: np.ndarray - s_parameters: dict[str, np.ndarray] diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/requirements.txt b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/requirements.txt deleted file mode 100644 index 1eb0353..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -pyusb -libusb-package; platform_system == "Windows" -numpy -matplotlib diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.csv b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.csv deleted file mode 100644 index fcf475c..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.csv +++ /dev/null @@ -1,1002 +0,0 @@ -Frequency_Hz,S11_real,S11_imag,S21_real,S21_imag,S31_real,S31_imag,S41_real,S41_imag -1000000000,1.45724177e-02,5.93696327e-02,2.55610633e-01,-2.44513027e-01,-9.21201295e-04,-7.26228651e-04,-1.58124514e-01,-1.04600260e-01 -1001000000,1.49146791e-02,5.95140953e-02,2.50128629e-01,-2.50328372e-01,-1.45212058e-03,-4.40787887e-04,-2.01936019e-01,-9.65899305e-02 -1002000000,1.58466134e-02,5.93556148e-02,2.43742440e-01,-2.56916807e-01,-1.41575604e-03,-5.85210629e-04,-1.94832831e-01,-1.00705759e-01 -1003000000,1.63375491e-02,5.87114441e-02,2.38575233e-01,-2.62054107e-01,-9.95289576e-04,-2.52847952e-04,-1.35010625e-01,-7.52352478e-02 -1004000000,1.67470115e-02,5.85864959e-02,2.33209222e-01,-2.68711419e-01,-9.12004512e-04,-4.88348734e-04,-9.34919917e-02,-5.69341525e-02 -1005000000,1.68527598e-02,5.88570719e-02,2.29775833e-01,-2.77573523e-01,-8.21276965e-04,-4.38218231e-04,-1.18389139e-01,-7.73749881e-02 -1006000000,1.85772023e-02,5.91805897e-02,2.22216648e-01,-2.88463060e-01,-9.06082190e-04,-5.28630911e-04,-1.10948650e-01,-6.56396683e-02 -1007000000,1.93020952e-02,5.88601315e-02,2.14812937e-01,-2.94361068e-01,-9.02798916e-04,-6.45680315e-04,-9.26265102e-02,-6.56082608e-02 -1008000000,1.98541931e-02,5.86231053e-02,2.08204007e-01,-3.00330559e-01,-7.26997375e-04,-4.56417598e-04,-8.16242801e-02,-4.07159177e-02 -1009000000,2.06178923e-02,5.82701286e-02,2.00158029e-01,-3.05949692e-01,-7.03644555e-04,-4.95792633e-04,-9.93451089e-02,-5.98335706e-02 -1010000000,2.13871182e-02,5.77799065e-02,1.92454014e-01,-3.10904195e-01,-7.40812410e-04,-6.39875566e-04,-8.93672223e-02,-6.29112796e-02 -1011000000,2.20229893e-02,5.72325704e-02,1.84894032e-01,-3.15799919e-01,-3.81769455e-04,-6.78103933e-04,-8.94003135e-02,-7.18693866e-02 -1012000000,2.26912921e-02,5.67509142e-02,1.76967299e-01,-3.20760618e-01,-2.76993723e-04,-4.03030018e-04,-9.71953779e-02,-6.88437903e-02 -1013000000,2.32765678e-02,5.61787425e-02,1.69324269e-01,-3.25203257e-01,-4.57580072e-04,-7.03472569e-04,-8.55014354e-02,-6.65091627e-02 -1014000000,2.40014933e-02,5.55572925e-02,1.61120079e-01,-3.29650617e-01,-2.00503253e-04,-5.33163787e-04,-8.70444724e-02,-6.82612441e-02 -1015000000,2.48114730e-02,5.48917742e-02,1.52440391e-01,-3.33467370e-01,-3.99465284e-04,-3.68829068e-04,-9.76833058e-02,-6.31760144e-02 -1016000000,2.54524780e-02,5.43154788e-02,1.43991161e-01,-3.37998663e-01,-4.91733736e-04,-4.34566272e-04,-1.13076529e-01,-6.52098555e-02 -1017000000,2.61585994e-02,5.35923801e-02,1.35341991e-01,-3.41797389e-01,-4.15195086e-04,-5.48207306e-04,-1.45929219e-01,-7.01546939e-02 -1018000000,2.67276726e-02,5.28447266e-02,1.26648485e-01,-3.45247832e-01,-3.49992540e-04,-6.74357702e-04,-8.23082063e-02,-4.16240416e-02 -1019000000,2.60141835e-02,5.15301687e-02,1.21635868e-01,-3.42800127e-01,-2.70480045e-04,-3.95009176e-04,-7.28752574e-02,-5.30946280e-02 -1020000000,2.71809027e-02,5.14764699e-02,1.08624865e-01,-3.51296915e-01,-2.83725484e-04,-4.88576827e-04,-7.28991101e-02,-5.28449105e-02 -1021000000,2.84166490e-02,5.03483722e-02,1.00089587e-01,-3.54700103e-01,-2.74764155e-04,-5.55274324e-04,-7.74912730e-02,-5.25147510e-02 -1022000000,2.90140758e-02,4.94201577e-02,9.07431668e-02,-3.57481739e-01,-2.34643251e-04,-7.21753815e-04,-7.86046760e-02,-5.77667406e-02 -1023000000,2.96409446e-02,4.85560416e-02,8.05174834e-02,-3.60688854e-01,-2.01661570e-04,-5.43202369e-04,-8.38148178e-02,-5.53256955e-02 -1024000000,3.01270375e-02,4.74393716e-02,7.12744866e-02,-3.62372061e-01,-1.89145888e-04,-5.29796956e-04,-8.91213351e-02,-5.77818668e-02 -1025000000,3.06054970e-02,4.64135967e-02,6.17461101e-02,-3.64822294e-01,-1.59149478e-04,-6.68616110e-04,-9.37900951e-02,-6.20633758e-02 -1026000000,3.17487300e-02,4.58014231e-02,5.52050560e-02,-3.70325949e-01,1.01379220e-05,-7.27096093e-04,-9.30588831e-02,-7.77620875e-02 -1027000000,3.22305628e-02,4.47340109e-02,4.48154492e-02,-3.72727537e-01,5.41837531e-06,-6.98252506e-04,-1.07449594e-01,-8.90768921e-02 -1028000000,3.22196428e-02,4.30184951e-02,3.76632286e-02,-3.69366134e-01,6.63216586e-05,-7.56368950e-04,-1.13483114e-01,-9.14936432e-02 -1029000000,3.24837632e-02,4.17887476e-02,2.88108613e-02,-3.70990752e-01,7.87154140e-05,-8.02437103e-04,-1.70362034e-01,-9.38858858e-02 -1030000000,3.25008449e-02,4.09505333e-02,2.04797231e-02,-3.75210976e-01,7.87069090e-05,-7.92478429e-04,-1.71994638e-01,-8.80231569e-02 -1031000000,3.29647277e-02,3.94132641e-02,8.57711712e-03,-3.73278275e-01,5.90915920e-05,-9.00232747e-04,-1.71160158e-01,-8.74461602e-02 -1032000000,3.32344060e-02,3.80954161e-02,-2.55790188e-03,-3.72723125e-01,1.11017218e-04,-8.05700029e-04,-1.75726199e-01,-9.70544686e-02 -1033000000,3.39761437e-02,3.63887099e-02,-1.59798441e-02,-3.69920640e-01,1.83085943e-05,-8.47986648e-04,-1.97540063e-01,-1.48839056e-01 -1034000000,3.34675349e-02,3.60307971e-02,-1.92329370e-02,-3.79333054e-01,2.89363721e-04,-9.62159237e-04,-2.28319888e-01,-1.60402074e-01 -1035000000,3.36063403e-02,3.47952952e-02,-3.07058651e-02,-3.79879969e-01,8.96251068e-05,-8.41236134e-04,-2.58010123e-01,-1.62191613e-01 -1036000000,3.34054339e-02,3.34366443e-02,-4.00576494e-02,-3.79193907e-01,-1.86594680e-04,-6.75502000e-04,-2.68792343e-01,-1.54888535e-01 -1037000000,3.33102384e-02,3.19199100e-02,-5.08009884e-02,-3.75894203e-01,-1.09272420e-04,-7.52719683e-04,-2.60320132e-01,-1.45311633e-01 -1038000000,3.44413550e-02,3.09425314e-02,-7.46291874e-02,-3.79348337e-01,-5.70513693e-05,-7.80733240e-04,-2.34700053e-01,-1.51760624e-01 -1039000000,3.43001980e-02,2.90870500e-02,-8.55456632e-02,-3.73381367e-01,-1.48662557e-04,-7.90298967e-04,-2.77228093e-01,-1.49930338e-01 -1040000000,3.41457984e-02,2.76531808e-02,-9.69758032e-02,-3.70666161e-01,-2.06239744e-05,-8.83543901e-04,-3.16887566e-01,-1.60544026e-01 -1041000000,3.33970318e-02,2.62019950e-02,-1.01094648e-01,-3.67712776e-01,2.00064154e-04,-8.74689769e-04,-3.25448994e-01,-1.62693638e-01 -1042000000,3.30931190e-02,2.46713886e-02,-1.12197828e-01,-3.64351516e-01,1.49355866e-04,-6.83638397e-04,-3.30514866e-01,-1.57798617e-01 -1043000000,3.28540443e-02,2.32044172e-02,-1.25559375e-01,-3.61871039e-01,1.22403494e-04,-8.36520828e-04,-3.29510074e-01,-1.41014294e-01 -1044000000,3.26141715e-02,2.16687379e-02,-1.39607567e-01,-3.57392494e-01,2.30559040e-04,-7.99699981e-04,-3.38209374e-01,-1.38677606e-01 -1045000000,3.22542970e-02,2.00469297e-02,-1.52555447e-01,-3.49599509e-01,1.57338384e-04,-8.88502769e-04,-3.44098998e-01,-1.32775202e-01 -1046000000,3.17070744e-02,1.87605043e-02,-1.61753219e-01,-3.47645584e-01,1.11033904e-04,-8.88019642e-04,-3.48859491e-01,-1.26865585e-01 -1047000000,3.10822905e-02,1.73558232e-02,-1.71565059e-01,-3.43110583e-01,3.10023574e-04,-8.76790912e-04,-3.51413065e-01,-1.17881221e-01 -1048000000,3.04508067e-02,1.59233087e-02,-1.83528506e-01,-3.42383808e-01,1.57740401e-04,-8.09815782e-04,-3.43579817e-01,-1.30854800e-01 -1049000000,2.98064684e-02,1.45035265e-02,-1.94315297e-01,-3.35022925e-01,1.01752721e-04,-7.19652282e-04,-3.50943826e-01,-1.14423270e-01 -1050000000,2.86816283e-02,1.26451677e-02,-1.99754906e-01,-3.18303413e-01,1.81866360e-04,-7.57319077e-04,-3.50220263e-01,-1.18120034e-01 -1051000000,2.77098580e-02,1.13395900e-02,-2.08423335e-01,-3.12725235e-01,9.12400815e-05,-9.23688312e-04,-3.50023895e-01,-1.13970026e-01 -1052000000,2.68036863e-02,1.01142457e-02,-2.19157967e-01,-3.07445033e-01,6.13714615e-05,-9.59162828e-04,-3.49340429e-01,-1.16257814e-01 -1053000000,2.58660898e-02,9.03786769e-03,-2.31301809e-01,-3.03821232e-01,7.32943644e-05,-8.99769234e-04,-3.48974978e-01,-1.16164928e-01 -1054000000,2.46454078e-02,7.61753598e-03,-2.30798922e-01,-3.00309579e-01,2.56982517e-04,-1.02642157e-03,-3.49107938e-01,-1.09393167e-01 -1055000000,2.36999395e-02,6.46198147e-03,-2.46705466e-01,-2.96887723e-01,3.56719676e-04,-9.50662342e-04,-3.50371134e-01,-1.06650537e-01 -1056000000,2.22915735e-02,5.22410031e-03,-2.47835466e-01,-2.86039851e-01,2.26356120e-04,-8.37065628e-04,-3.53399175e-01,-1.00218267e-01 -1057000000,2.09926032e-02,4.07210832e-03,-2.56253036e-01,-2.77445714e-01,2.05779363e-04,-1.02467983e-03,-3.58880974e-01,-8.52181016e-02 -1058000000,1.96960311e-02,2.91639460e-03,-2.65061420e-01,-2.67945074e-01,4.85512451e-04,-1.15911447e-03,-3.51124778e-01,-9.45750310e-02 -1059000000,1.82401911e-02,1.89917937e-03,-2.76949339e-01,-2.59444508e-01,1.44886862e-04,-1.19398435e-03,-3.52996109e-01,-8.99729263e-02 -1060000000,1.67824183e-02,1.01764405e-03,-2.79720916e-01,-2.52093573e-01,3.06358217e-04,-1.11595711e-03,-3.51937010e-01,-9.20050681e-02 -1061000000,1.53611683e-02,3.02637411e-05,-2.91599240e-01,-2.42776484e-01,7.03306204e-04,-1.15116040e-03,-3.57118877e-01,-8.41090767e-02 -1062000000,1.38385058e-02,-8.76273831e-04,-2.98865361e-01,-2.34444457e-01,4.04063307e-04,-1.29982298e-03,-3.62184682e-01,-7.80209271e-02 -1063000000,1.22415615e-02,-1.65197783e-03,-3.01481812e-01,-2.25041628e-01,4.93143756e-04,-1.27579041e-03,-3.59039746e-01,-4.46754441e-02 -1064000000,1.06022071e-02,-2.42286872e-03,-3.08582745e-01,-2.16162118e-01,1.81523290e-04,-1.21941797e-03,-3.60852322e-01,-5.87953953e-02 -1065000000,8.96340595e-03,-3.20042400e-03,-3.11826902e-01,-2.09887027e-01,3.27580109e-04,-1.25206304e-03,-3.62346498e-01,-6.17440678e-02 -1066000000,7.28337559e-03,-4.41829761e-03,-3.25600981e-01,-2.00722694e-01,2.81488066e-04,-1.53394889e-03,-3.63115030e-01,-6.34551692e-02 -1067000000,5.47242087e-03,-5.06678654e-03,-3.30909735e-01,-1.91681582e-01,8.91864192e-05,-1.45909871e-03,-3.58302351e-01,-7.10331548e-02 -1068000000,3.72842160e-03,-5.67593012e-03,-3.37302660e-01,-1.84757279e-01,2.67867226e-04,-1.66868914e-03,-3.56389425e-01,-6.30446217e-02 -1069000000,1.81097511e-03,-6.17735133e-03,-3.36984756e-01,-1.76125835e-01,-2.30533177e-04,-1.97483904e-03,-3.59003383e-01,-6.74026828e-02 -1070000000,-1.45640921e-04,-6.35247763e-03,-3.45616269e-01,-1.62545575e-01,-2.23274799e-04,-1.59584152e-03,-3.54810731e-01,-6.69509037e-02 -1071000000,-1.80395505e-03,-6.86740902e-03,-3.50286349e-01,-1.56281595e-01,2.24988939e-04,-1.76318206e-03,-3.60533721e-01,-5.67053611e-02 -1072000000,-3.73802053e-03,-7.15207243e-03,-3.53908375e-01,-1.46252269e-01,1.19391922e-04,-1.72673219e-03,-3.66771814e-01,-6.08067418e-02 -1073000000,-5.47115291e-03,-7.29849468e-03,-3.54862187e-01,-1.36323552e-01,1.29392088e-04,-1.83980392e-03,-3.56280087e-01,-2.59680037e-02 -1074000000,-7.66151568e-03,-7.40387398e-03,-3.58623704e-01,-1.26380742e-01,-5.76232135e-04,-1.43520482e-03,-3.64887716e-01,-3.24588628e-02 -1075000000,-9.84357689e-03,-7.22319070e-03,-3.59930824e-01,-1.12390224e-01,-2.55415283e-04,-1.38145988e-03,-3.56534182e-01,-3.45316621e-02 -1076000000,-1.19423760e-02,-6.90793654e-03,-3.63017795e-01,-1.02614539e-01,-5.07638979e-04,-1.54744989e-03,-3.55619618e-01,-5.94677330e-02 -1077000000,-1.37168130e-02,-6.83668043e-03,-3.65751526e-01,-9.22063386e-02,-7.17295550e-04,-1.46070628e-03,-3.48909758e-01,-5.71880949e-02 -1078000000,-1.57057629e-02,-6.59086669e-03,-3.68412852e-01,-8.17066412e-02,-7.39948628e-04,-1.58807489e-03,-3.56732098e-01,-2.44064046e-03 -1079000000,-1.75485302e-02,-6.39226557e-03,-3.70146944e-01,-7.18467422e-02,-7.08900500e-04,-1.72844504e-03,-3.58259177e-01,7.99831920e-03 -1080000000,-1.94877651e-02,-6.03109834e-03,-3.71852547e-01,-6.16396227e-02,-1.69899144e-04,-1.71548448e-03,-3.58817349e-01,-2.21283620e-02 -1081000000,-2.18636663e-02,-6.05896394e-03,-3.75091569e-01,-5.20373209e-02,-5.73674261e-04,-1.38456642e-03,-3.42084078e-01,-5.35092528e-02 -1082000000,-2.38981981e-02,-5.67839662e-03,-3.76154589e-01,-4.14137830e-02,-9.46835990e-04,-1.10095205e-03,-3.51679953e-01,-3.91698599e-02 -1083000000,-2.56613488e-02,-5.05389858e-03,-3.77182666e-01,-3.18070736e-02,-1.01400820e-03,-1.23925542e-03,-3.43882804e-01,-5.54423738e-02 -1084000000,-2.84515626e-02,-3.96909700e-03,-3.76385711e-01,-2.19701198e-02,-5.31203640e-04,-1.49430596e-03,-3.31119366e-01,-7.32003296e-02 -1085000000,-3.01980897e-02,-3.25879187e-03,-3.76619871e-01,-1.17512468e-02,-7.39110600e-04,-1.20175476e-03,-3.43887978e-01,-5.30972791e-02 -1086000000,-3.17526557e-02,-2.88112283e-03,-3.76823649e-01,-5.52504818e-04,-1.03987210e-03,-8.76329231e-04,-3.58013211e-01,-1.49265778e-02 -1087000000,-3.38046436e-02,-2.06908014e-03,-3.76703480e-01,1.03812456e-02,-9.48498282e-04,-9.88234135e-04,-3.64902195e-01,4.33280261e-03 -1088000000,-3.55596773e-02,-9.97600282e-04,-3.75995184e-01,1.96484251e-02,-8.13807079e-04,-1.14030306e-03,-3.67081666e-01,1.93844161e-02 -1089000000,-3.74813864e-02,-2.38492976e-04,-3.76392116e-01,3.22360503e-02,-1.12526654e-03,-9.97826048e-04,-3.44335747e-01,2.95011981e-02 -1090000000,-3.95647809e-02,1.13493972e-03,-3.74732634e-01,4.38413674e-02,-1.11166668e-03,-1.13326642e-03,-3.28965091e-01,2.04628414e-02 -1091000000,-4.18098450e-02,2.95247267e-03,-3.72340913e-01,5.36098110e-02,-8.29502939e-04,-1.24318273e-03,-3.20304592e-01,-2.88350302e-03 -1092000000,-4.39960075e-02,4.56262710e-03,-3.69609915e-01,6.36719558e-02,-6.63360260e-04,-1.10258401e-03,-3.15284938e-01,-2.30591430e-02 -1093000000,-4.49680761e-02,5.26935800e-03,-3.66594993e-01,7.63298825e-02,-1.02997817e-03,-1.21800996e-03,-3.12975200e-01,8.65444321e-03 -1094000000,-4.76392220e-02,7.23451565e-03,-3.63494254e-01,8.45586268e-02,-6.93465305e-04,-1.08483798e-03,-2.97105427e-01,-3.25551740e-02 -1095000000,-4.92185211e-02,9.06301106e-03,-3.60363228e-01,9.82085190e-02,-7.16922872e-04,-9.55779161e-04,-3.11989660e-01,-1.10128623e-02 -1096000000,-4.99282776e-02,1.06444182e-02,-3.53877114e-01,1.06333889e-01,-6.53021331e-04,-1.10096413e-03,-3.04636824e-01,-4.85026898e-02 -1097000000,-5.07371336e-02,1.10999936e-02,-3.51949629e-01,1.16816034e-01,-6.03218166e-04,-1.22604006e-03,-2.85820552e-01,-8.25645392e-02 -1098000000,-5.24161917e-02,1.29998874e-02,-3.46693721e-01,1.26229415e-01,-7.01769185e-04,-1.20588642e-03,-3.28885977e-01,3.45476312e-03 -1099000000,-5.39410785e-02,1.46084796e-02,-3.43267293e-01,1.36237943e-01,-7.89100043e-04,-1.11638615e-03,-3.10816843e-01,1.54564800e-02 -1100000000,-5.56094471e-02,1.71718673e-02,-3.36869567e-01,1.44467867e-01,-9.29464486e-04,-1.17536278e-03,-2.94538987e-01,1.01655539e-02 -1101000000,-5.72385576e-02,1.96818009e-02,-3.31776795e-01,1.52818692e-01,-1.26566039e-03,-1.10555266e-03,-2.98290027e-01,-1.45714236e-02 -1102000000,-5.84839789e-02,2.22983661e-02,-3.26007724e-01,1.61010913e-01,-1.10900477e-03,-9.45690718e-04,-2.98304835e-01,-4.73019077e-02 -1103000000,-5.95479280e-02,2.40007611e-02,-3.21395906e-01,1.70304141e-01,-1.32004535e-03,-9.73136184e-04,-3.00228489e-01,-4.77844268e-02 -1104000000,-5.99299643e-02,2.53146984e-02,-3.12211668e-01,1.81448953e-01,-1.47868992e-03,-1.03508592e-03,-2.75844041e-01,-5.04002271e-02 -1105000000,-6.02657534e-02,2.76623559e-02,-3.04473644e-01,1.87103627e-01,-1.43147355e-03,-8.13875096e-04,-2.63560365e-01,-7.09118519e-02 -1106000000,-6.20402209e-02,2.90443630e-02,-3.05157658e-01,1.97847531e-01,-1.31337524e-03,-7.44780346e-04,-2.57391898e-01,-7.76968939e-02 -1107000000,-6.31861906e-02,3.09067795e-02,-3.00100558e-01,2.07300028e-01,-1.37018407e-03,-7.27365749e-04,-2.45807180e-01,-1.01784128e-01 -1108000000,-6.37879912e-02,3.28487200e-02,-2.92424750e-01,2.15605978e-01,-1.33537965e-03,-7.80423379e-04,-2.45133489e-01,-2.28227070e-02 -1109000000,-6.45940089e-02,3.56427954e-02,-2.85627023e-01,2.23291414e-01,-1.32559080e-03,-6.46773027e-04,-2.48552222e-01,-2.90415131e-02 -1110000000,-6.54866654e-02,3.79948456e-02,-2.79343217e-01,2.31611288e-01,-1.28376660e-03,-4.52665514e-04,-2.36401678e-01,-4.43856435e-02 -1111000000,-6.60785443e-02,4.02671932e-02,-2.71767809e-01,2.40199517e-01,-1.26456719e-03,-3.28516566e-04,-2.24302180e-01,-4.30269576e-02 -1112000000,-6.66797915e-02,4.25156990e-02,-2.64732778e-01,2.47769302e-01,-1.11486306e-03,-6.27584657e-04,-2.13731057e-01,-5.40972545e-02 -1113000000,-6.72302970e-02,4.49288876e-02,-2.57871196e-01,2.54481455e-01,-1.20523233e-03,-6.97354449e-04,-2.03012788e-01,-9.99452294e-03 -1114000000,-6.76707807e-02,4.73133600e-02,-2.50525897e-01,2.61062950e-01,-1.40259487e-03,-6.25131706e-04,-1.88037105e-01,-1.70929612e-03 -1115000000,-6.77906247e-02,4.96355370e-02,-2.41845337e-01,2.66637275e-01,-1.23491146e-03,-7.68223009e-04,-1.81448356e-01,6.30153779e-03 -1116000000,-6.79529142e-02,5.21053943e-02,-2.33550022e-01,2.73155932e-01,-1.26979905e-03,-7.49983768e-04,-1.76658868e-01,1.11757916e-02 -1117000000,-6.81331695e-02,5.45519975e-02,-2.25722965e-01,2.79091703e-01,-1.18598969e-03,-4.53377938e-04,-1.76401684e-01,1.22080066e-02 -1118000000,-6.83018100e-02,5.69256386e-02,-2.17997456e-01,2.84630642e-01,-1.21024866e-03,-3.19423315e-04,-1.75008845e-01,7.06670065e-03 -1119000000,-6.86751359e-02,5.95411698e-02,-2.13911330e-01,2.89798425e-01,-1.14571765e-03,-6.82866888e-04,-1.81919368e-01,1.52560384e-02 -1120000000,-6.80958182e-02,6.17331997e-02,-2.04429506e-01,2.97379046e-01,-1.30821417e-03,-7.14174612e-04,-2.14951746e-01,4.15023352e-02 -1121000000,-6.84500246e-02,6.34218134e-02,-1.95625061e-01,3.00708533e-01,-1.50709397e-03,-6.10022477e-04,-2.32035257e-01,6.78412553e-02 -1122000000,-6.84723483e-02,6.61271908e-02,-1.87752395e-01,3.05174833e-01,-1.48358920e-03,-5.40176747e-04,-2.42348544e-01,8.75843937e-02 -1123000000,-6.85611622e-02,6.85688650e-02,-1.79847072e-01,3.07641395e-01,-1.45387098e-03,-3.32406489e-04,-2.57682409e-01,1.20053537e-01 -1124000000,-6.84540284e-02,7.13367453e-02,-1.72168748e-01,3.13534217e-01,-1.45561302e-03,-1.65265049e-04,-2.55408655e-01,1.05924312e-01 -1125000000,-6.80446227e-02,7.34400539e-02,-1.63461394e-01,3.15271877e-01,-1.51253979e-03,1.07342333e-05,-2.73317200e-01,1.01138556e-01 -1126000000,-6.76659451e-02,7.61948718e-02,-1.55339244e-01,3.18319721e-01,-1.32940461e-03,5.29366783e-05,-3.11321690e-01,9.72633164e-02 -1127000000,-6.71418212e-02,7.87866711e-02,-1.47082992e-01,3.21304108e-01,-1.06874615e-03,3.09028251e-04,-3.42713013e-01,9.48038689e-02 -1128000000,-6.71948932e-02,8.03256042e-02,-1.40204139e-01,3.23582037e-01,-1.23266679e-03,2.70608937e-04,-3.29202653e-01,5.20988279e-02 -1129000000,-6.69847880e-02,8.27759988e-02,-1.33699846e-01,3.27810258e-01,-8.48383323e-04,4.00293141e-04,-3.38130449e-01,4.27909421e-02 -1130000000,-6.62187568e-02,8.52377468e-02,-1.24909599e-01,3.32407937e-01,-8.02161384e-04,3.99762611e-04,-3.48261321e-01,3.20912629e-02 -1131000000,-6.52686987e-02,8.78537887e-02,-1.17459868e-01,3.36024009e-01,-7.46493925e-04,2.76919046e-04,-3.34506892e-01,4.94666938e-03 -1132000000,-6.49812042e-02,8.94712383e-02,-1.09451605e-01,3.38612063e-01,-6.97838971e-04,2.42921200e-04,-3.23087703e-01,-4.13616646e-02 -1133000000,-6.41003483e-02,9.09339251e-02,-9.95182258e-02,3.38261861e-01,-6.21448214e-04,3.06933843e-04,-3.34623296e-01,-3.34255878e-02 -1134000000,-6.31205375e-02,9.33363991e-02,-9.09772798e-02,3.40646862e-01,-5.41505706e-04,3.02089166e-04,-3.35049201e-01,-3.63450771e-02 -1135000000,-6.18580555e-02,9.59428761e-02,-8.14771548e-02,3.44016719e-01,-5.22694099e-04,2.91766696e-04,-3.35363921e-01,-5.74176318e-02 -1136000000,-6.01611161e-02,9.82337800e-02,-7.07087914e-02,3.45450392e-01,-5.53253321e-04,2.67672642e-04,-3.28709838e-01,-7.78689995e-02 -1137000000,-5.90751917e-02,1.00503446e-01,-6.21035773e-02,3.46542748e-01,-5.24295308e-04,2.51228276e-04,-3.26096896e-01,-7.44588910e-02 -1138000000,-5.80231625e-02,1.02853253e-01,-5.41129496e-02,3.47989183e-01,-4.89133165e-04,2.39696693e-04,-3.25606973e-01,-7.45109553e-02 -1139000000,-5.66255117e-02,1.05042484e-01,-4.47136990e-02,3.48898982e-01,-4.95126063e-04,2.00688170e-04,-3.26755345e-01,-7.14059481e-02 -1140000000,-5.51762457e-02,1.06889272e-01,-3.54460042e-02,3.48785141e-01,-3.74756120e-04,8.76739028e-05,-3.28739070e-01,-6.28430666e-02 -1141000000,-5.34423974e-02,1.08492536e-01,-2.56169092e-02,3.47544682e-01,-3.11488206e-04,1.78153942e-04,-3.31114051e-01,-6.74887993e-02 -1142000000,-5.15358565e-02,1.10478351e-01,-1.53385320e-02,3.47479998e-01,-3.33132854e-04,1.91144283e-04,-3.31543046e-01,-7.60280886e-02 -1143000000,-5.05111380e-02,1.14431480e-01,-6.11458641e-03,3.54767454e-01,-2.96612138e-04,1.79016358e-04,-3.28648977e-01,-7.70567497e-02 -1144000000,-4.75659764e-02,1.16351382e-01,6.76264310e-03,3.54036217e-01,-2.73737013e-04,1.78462396e-04,-3.28037281e-01,-7.75638564e-02 -1145000000,-4.50961048e-02,1.17594284e-01,1.80624756e-02,3.51412541e-01,-2.68313860e-04,1.58357780e-04,-3.28093234e-01,-8.40974796e-02 -1146000000,-4.34171740e-02,1.16929734e-01,2.41749498e-02,3.41392015e-01,-2.90840774e-04,1.19040706e-04,-3.25721449e-01,-8.68369368e-02 -1147000000,-4.12024329e-02,1.18711303e-01,3.43147227e-02,3.40370698e-01,-2.79288762e-04,9.45167144e-05,-3.24061921e-01,-8.89140341e-02 -1148000000,-3.81449858e-02,1.21114024e-01,4.67436852e-02,3.41254569e-01,-2.44434715e-04,1.32193808e-04,-3.22568648e-01,-9.58721530e-02 -1149000000,-3.79314541e-02,1.22673523e-01,5.09429577e-02,3.39401077e-01,-2.91858621e-04,1.53406711e-04,-3.18870342e-01,-1.03404179e-01 -1150000000,-3.58238761e-02,1.24998610e-01,6.03862883e-02,3.39669170e-01,-2.67413995e-04,1.15760723e-04,-3.20491158e-01,-9.71734663e-02 -1151000000,-3.38718862e-02,1.26709096e-01,6.91728184e-02,3.38191868e-01,-2.60863043e-04,8.98636087e-05,-3.19867569e-01,-9.97093916e-02 -1152000000,-3.17827116e-02,1.27837457e-01,7.81024897e-02,3.35026689e-01,-2.20104791e-04,1.05533111e-04,-3.19545764e-01,-1.04091485e-01 -1153000000,-2.98168515e-02,1.28786361e-01,8.66517695e-02,3.31634415e-01,-2.58221704e-04,9.60479261e-05,-3.18132316e-01,-1.03076100e-01 -1154000000,-2.73506111e-02,1.30614206e-01,9.61977691e-02,3.30155169e-01,-2.08358242e-04,1.36216610e-04,-3.18359755e-01,-1.07045587e-01 -1155000000,-2.46834130e-02,1.32368281e-01,1.06094147e-01,3.28487144e-01,-2.12941819e-04,1.19792177e-04,-3.16362095e-01,-1.09274429e-01 -1156000000,-2.28770669e-02,1.33737216e-01,1.16120834e-01,3.26981406e-01,-2.13976292e-04,1.31112501e-04,-3.15314431e-01,-1.10635285e-01 -1157000000,-2.06591934e-02,1.34739123e-01,1.24327640e-01,3.23329197e-01,-2.10826628e-04,1.33830608e-04,-3.14302636e-01,-1.13686726e-01 -1158000000,-1.86867547e-02,1.34850634e-01,1.31871129e-01,3.17695609e-01,-1.72391182e-04,1.44539595e-04,-3.14396228e-01,-1.14087911e-01 -1159000000,-1.59022063e-02,1.36511870e-01,1.41012708e-01,3.15466529e-01,-1.67880673e-04,1.31762651e-04,-3.12924971e-01,-1.16114569e-01 -1160000000,-1.27090206e-02,1.37116377e-01,1.50955517e-01,3.10961416e-01,-1.37979233e-04,1.17676155e-04,-3.12022598e-01,-1.20443979e-01 -1161000000,-1.09596933e-02,1.37874912e-01,1.57434707e-01,3.06687973e-01,-1.40253045e-04,1.41797552e-04,-3.12056101e-01,-1.20312519e-01 -1162000000,-8.80398648e-03,1.38533107e-01,1.64574226e-01,3.02476355e-01,-1.14197910e-04,1.65034548e-04,-3.11150603e-01,-1.23086580e-01 -1163000000,-7.19158025e-03,1.38492573e-01,1.70406663e-01,2.96683371e-01,-1.39489151e-04,1.37524840e-04,-3.09105243e-01,-1.24224903e-01 -1164000000,-2.61339165e-03,1.37222947e-01,1.79976796e-01,2.87645742e-01,-1.09139634e-04,1.46195068e-04,-3.08747087e-01,-1.25192058e-01 -1165000000,-2.02618174e-03,1.36100504e-01,1.83682592e-01,2.79965890e-01,-1.00659110e-04,1.41660925e-04,-3.07252200e-01,-1.26285668e-01 -1166000000,1.15894339e-03,1.37138928e-01,1.92471377e-01,2.76893817e-01,-8.45852884e-05,1.51110796e-04,-3.07256352e-01,-1.30055642e-01 -1167000000,3.21198695e-03,1.37696553e-01,1.98857756e-01,2.72786816e-01,-9.05525617e-05,1.32366064e-04,-3.05692291e-01,-1.29903569e-01 -1168000000,2.21836147e-03,1.41023515e-01,1.99078121e-01,2.73946496e-01,-7.27154494e-05,1.34806491e-04,-3.03022550e-01,-1.29660423e-01 -1169000000,5.90477000e-03,1.41233153e-01,2.08352116e-01,2.69362788e-01,-7.79060420e-05,1.36184546e-04,-3.04903927e-01,-1.30523122e-01 -1170000000,8.72302142e-03,1.40759886e-01,2.15865232e-01,2.63393964e-01,-8.27339193e-05,1.55607253e-04,-3.04953959e-01,-1.31017826e-01 -1171000000,8.52768453e-03,1.40122651e-01,2.19892417e-01,2.57812070e-01,-8.92948356e-05,1.36002358e-04,-3.04447560e-01,-1.30570295e-01 -1172000000,1.01504725e-02,1.40251511e-01,2.24847194e-01,2.52951001e-01,-7.00104377e-05,1.27258461e-04,-3.04079905e-01,-1.31827670e-01 -1173000000,1.26287535e-02,1.40236899e-01,2.31079076e-01,2.48056296e-01,-6.20909743e-05,1.53259105e-04,-3.04638512e-01,-1.30534655e-01 -1174000000,1.36132466e-02,1.40150022e-01,2.34855243e-01,2.43040860e-01,-7.83057274e-05,1.31752735e-04,-3.04684210e-01,-1.29149974e-01 -1175000000,1.58588758e-02,1.40646795e-01,2.40564864e-01,2.38901552e-01,-5.01456422e-05,1.41326463e-04,-3.04429200e-01,-1.29710151e-01 -1176000000,1.74317971e-02,1.40577325e-01,2.45044623e-01,2.33716361e-01,3.13163040e-05,1.45352061e-04,-3.03879330e-01,-1.30889813e-01 -1177000000,1.89394290e-02,1.40275706e-01,2.49403101e-01,2.28517902e-01,-6.43600161e-05,1.22406103e-04,-3.04202446e-01,-1.30538517e-01 -1178000000,2.00006713e-02,1.39662156e-01,2.52844495e-01,2.23134209e-01,-5.39793292e-05,1.39652395e-04,-3.03823659e-01,-1.28913377e-01 -1179000000,2.06477609e-02,1.40536377e-01,2.53080789e-01,2.19175621e-01,-2.21621674e-05,1.32576736e-04,-3.01789555e-01,-1.27264090e-01 -1180000000,2.37454289e-02,1.39200676e-01,2.59899762e-01,2.12595556e-01,-5.00732379e-05,1.24419814e-04,-3.02425093e-01,-1.27388117e-01 -1181000000,2.41137936e-02,1.40008503e-01,2.62417089e-01,2.09249068e-01,-4.38543328e-05,1.23394704e-04,-3.01560618e-01,-1.28213802e-01 -1182000000,2.52462288e-02,1.39949089e-01,2.66035317e-01,2.04810089e-01,-5.49150893e-05,1.27833224e-04,-3.01577765e-01,-1.27787608e-01 -1183000000,2.45680821e-02,1.39409872e-01,2.66896016e-01,1.99380993e-01,-6.06273657e-05,1.21001971e-04,-3.03409098e-01,-1.29396547e-01 -1184000000,2.84365925e-02,1.38321475e-01,2.74184240e-01,1.93643652e-01,-7.30880731e-05,1.09017517e-04,-3.04876691e-01,-1.22293716e-01 -1185000000,2.76966191e-02,1.34780862e-01,2.75284309e-01,1.84550893e-01,-5.51016689e-05,1.04272573e-04,-3.04631833e-01,-1.22281717e-01 -1186000000,2.87492327e-02,1.37226162e-01,2.80362366e-01,1.83842385e-01,-5.50196465e-05,1.26876530e-04,-3.04652571e-01,-1.25136733e-01 -1187000000,2.95161433e-02,1.36714623e-01,2.82992604e-01,1.79065750e-01,-5.63288477e-05,1.18152779e-04,-3.04335913e-01,-1.25235248e-01 -1188000000,3.02530344e-02,1.35996510e-01,2.85592007e-01,1.73543392e-01,-5.24450680e-05,1.01983021e-04,-3.04395361e-01,-1.23398803e-01 -1189000000,3.10700149e-02,1.35411059e-01,2.88280359e-01,1.68488244e-01,-6.06685089e-05,1.19720423e-04,-3.03825265e-01,-1.24913283e-01 -1190000000,3.22293641e-02,1.34823125e-01,2.91324357e-01,1.63421294e-01,-6.31211562e-05,1.01289492e-04,-3.03046840e-01,-1.27238313e-01 -1191000000,3.38653964e-02,1.33349022e-01,2.92517675e-01,1.56781526e-01,-5.25688692e-05,9.75951164e-05,-3.01626400e-01,-1.28279208e-01 -1192000000,3.48478690e-02,1.32917515e-01,2.95266044e-01,1.51712678e-01,-6.67056460e-05,9.44229926e-05,-3.00797776e-01,-1.30220408e-01 -1193000000,3.33867524e-02,1.33227894e-01,2.95305422e-01,1.47202501e-01,-6.17623159e-05,8.91294842e-05,-2.98576142e-01,-1.31891766e-01 -1194000000,3.57955879e-02,1.32575674e-01,2.99421646e-01,1.41489700e-01,-7.06939483e-05,9.03798487e-05,-2.99301448e-01,-1.33979456e-01 -1195000000,3.71866427e-02,1.31681724e-01,3.02265111e-01,1.35263534e-01,-6.54635405e-05,8.91493474e-05,-2.97529005e-01,-1.36997000e-01 -1196000000,3.78200623e-02,1.30433975e-01,3.07265096e-01,1.29029104e-01,-7.08924300e-05,5.98608900e-05,-2.96691117e-01,-1.37929084e-01 -1197000000,3.87237473e-02,1.29501045e-01,3.09414807e-01,1.22910491e-01,-7.13283071e-05,6.38150877e-05,-2.96278420e-01,-1.38532414e-01 -1198000000,3.98236639e-02,1.28314705e-01,3.11739015e-01,1.15742752e-01,-7.06787822e-05,5.71425899e-05,-2.94277190e-01,-1.42560854e-01 -1199000000,4.14945219e-02,1.27249757e-01,3.14457802e-01,1.08500603e-01,-7.08221868e-05,6.31645920e-05,-2.95331117e-01,-1.40930705e-01 -1200000000,4.21805408e-02,1.25843986e-01,3.16124633e-01,1.01570983e-01,-8.05058611e-05,5.38137759e-05,-2.95135057e-01,-1.39852424e-01 -1201000000,4.34473979e-02,1.24703363e-01,3.18203264e-01,9.40460844e-02,-6.08256470e-05,4.72014968e-05,-2.94106646e-01,-1.41604492e-01 -1202000000,4.50517766e-02,1.23403437e-01,3.20430334e-01,8.56219509e-02,-5.74134905e-05,5.97835511e-05,-2.92381630e-01,-1.45164974e-01 -1203000000,4.62127595e-02,1.22108110e-01,3.22152475e-01,7.78628966e-02,-4.81552078e-05,6.12338474e-05,-2.94241083e-01,-1.41007335e-01 -1204000000,4.76881221e-02,1.21164165e-01,3.23976917e-01,6.99247215e-02,-6.84364082e-05,4.61205521e-05,-2.92788060e-01,-1.44304714e-01 -1205000000,4.93996768e-02,1.19611966e-01,3.25668371e-01,6.10550966e-02,-4.90692769e-05,3.22859039e-05,-2.92284719e-01,-1.45396654e-01 -1206000000,5.05203999e-02,1.18127702e-01,3.26822690e-01,5.22416765e-02,-6.21743152e-05,5.67621169e-05,-2.90834045e-01,-1.47498496e-01 -1207000000,5.21342564e-02,1.16489637e-01,3.28048949e-01,4.28469210e-02,-8.28918829e-05,6.27185141e-05,-2.90192990e-01,-1.48601005e-01 -1208000000,5.35492300e-02,1.14766462e-01,3.28890025e-01,3.33683398e-02,-5.04640204e-05,5.51436563e-05,-2.90886224e-01,-1.46719158e-01 -1209000000,5.50107206e-02,1.09977581e-01,3.24185655e-01,2.32637701e-02,-6.21931927e-05,5.68448444e-05,-2.88050126e-01,-1.47059801e-01 -1210000000,5.45627786e-02,1.08656531e-01,3.24701830e-01,1.37311124e-02,-7.08711443e-05,4.73970941e-05,-2.85257030e-01,-1.49275482e-01 -1211000000,5.79671847e-02,1.06785991e-01,3.25054191e-01,4.12221880e-03,-6.29766777e-05,4.65603492e-05,-2.87545108e-01,-1.50636488e-01 -1212000000,5.94466037e-02,1.04771389e-01,3.25048014e-01,-5.66700884e-03,-5.70933170e-05,3.06419588e-05,-2.88771769e-01,-1.50344244e-01 -1213000000,6.10499904e-02,1.05316462e-01,3.29458361e-01,-1.65896165e-02,-6.87152892e-05,6.11864385e-05,-2.89054477e-01,-1.49521327e-01 -1214000000,6.23022939e-02,1.03382994e-01,3.28626506e-01,-2.64923983e-02,-6.21041725e-05,4.30517906e-05,-2.90087967e-01,-1.46866550e-01 -1215000000,6.38482593e-02,1.01524039e-01,3.27560850e-01,-3.63276146e-02,-7.67150571e-05,6.13713259e-05,-2.90520358e-01,-1.46980979e-01 -1216000000,6.49203361e-02,9.96735314e-02,3.26132475e-01,-4.61697391e-02,-8.10453405e-05,4.36423531e-05,-2.89658076e-01,-1.48163901e-01 -1217000000,6.60091930e-02,9.76648747e-02,3.24389023e-01,-5.59875289e-02,-7.66142613e-05,4.32595646e-05,-2.89691817e-01,-1.47946210e-01 -1218000000,6.67304873e-02,9.54705220e-02,3.22647773e-01,-6.57515055e-02,-8.94615240e-05,6.42371262e-05,-2.90326098e-01,-1.45933579e-01 -1219000000,6.76039054e-02,9.38311164e-02,3.20331865e-01,-7.54079713e-02,-7.62565108e-05,6.31457121e-05,-2.89879530e-01,-1.46613900e-01 -1220000000,6.85229844e-02,9.15121310e-02,3.17863249e-01,-8.45204172e-02,-8.29153102e-05,4.33091434e-05,-2.89758498e-01,-1.46755231e-01 -1221000000,6.93948385e-02,8.95462081e-02,3.14913265e-01,-9.40684079e-02,-6.70823516e-05,4.16376038e-05,-2.90118684e-01,-1.46335590e-01 -1222000000,6.99956616e-02,8.76488526e-02,3.11885585e-01,-1.03309429e-01,-7.05644932e-05,4.16699038e-05,-2.90855538e-01,-1.44790269e-01 -1223000000,7.03814543e-02,8.57784483e-02,3.08837749e-01,-1.12024950e-01,-6.74902406e-05,5.43049416e-05,-2.90894057e-01,-1.44505431e-01 -1224000000,7.08071669e-02,8.38650981e-02,3.05369725e-01,-1.21042180e-01,-7.65542182e-05,4.67551834e-05,-2.91414707e-01,-1.43047200e-01 -1225000000,7.14787878e-02,8.22089381e-02,3.01107649e-01,-1.30244977e-01,-7.44206556e-05,6.43724393e-05,-2.91057464e-01,-1.44428067e-01 -1226000000,7.17801652e-02,8.04195620e-02,2.97195820e-01,-1.38975969e-01,-8.95764722e-05,5.49171522e-05,-2.90304899e-01,-1.45029889e-01 -1227000000,7.20688118e-02,7.85593689e-02,2.92872057e-01,-1.47575323e-01,-7.98852738e-05,3.85065982e-05,-2.91046255e-01,-1.43697183e-01 -1228000000,7.21695120e-02,7.68477766e-02,2.88514640e-01,-1.56677809e-01,-7.03162185e-05,3.51194522e-05,-2.94112109e-01,-1.37037932e-01 -1229000000,6.99126103e-02,7.55497461e-02,2.82046125e-01,-1.63568376e-01,-1.08776630e-04,1.34088856e-05,-2.86038442e-01,-1.38827725e-01 -1230000000,7.21143282e-02,7.37595751e-02,2.72591283e-01,-1.71577468e-01,-8.71026829e-05,5.73507242e-05,-2.90741774e-01,-1.40567621e-01 -1231000000,7.19982120e-02,7.14367136e-02,2.73516794e-01,-1.80346324e-01,-7.28177834e-05,1.57788644e-05,-2.93412141e-01,-1.37062587e-01 -1232000000,7.19512195e-02,6.97743057e-02,2.68224080e-01,-1.88251489e-01,-8.06748615e-05,-3.62888934e-06,-2.95262705e-01,-1.32975932e-01 -1233000000,7.18637560e-02,6.79074794e-02,2.62828024e-01,-1.94701388e-01,-9.78575521e-05,2.49683593e-05,-2.96002504e-01,-1.32587318e-01 -1234000000,7.16049053e-02,6.62824404e-02,2.57396429e-01,-2.01911367e-01,-9.98566888e-05,1.06204072e-05,-2.95119623e-01,-1.33189098e-01 -1235000000,7.12469807e-02,6.47774819e-02,2.52073559e-01,-2.09017452e-01,-1.12228562e-04,-4.06795214e-05,-2.95925836e-01,-1.30789825e-01 -1236000000,7.11814322e-02,6.34284135e-02,2.45267344e-01,-2.16432176e-01,-7.91320673e-05,-4.49836160e-05,-2.97690272e-01,-1.27369463e-01 -1237000000,7.09170007e-02,6.20606593e-02,2.38841235e-01,-2.23769344e-01,-9.13103014e-05,-1.07533954e-04,-2.99902578e-01,-1.21694726e-01 -1238000000,7.01497454e-02,6.06883924e-02,2.34004295e-01,-2.30327095e-01,-1.06622540e-04,-6.09627888e-05,-2.98074580e-01,-1.25780036e-01 -1239000000,6.96290536e-02,5.93060655e-02,2.27926882e-01,-2.36700933e-01,-9.98198142e-05,-1.41957391e-04,-2.99017763e-01,-1.22101592e-01 -1240000000,6.95635421e-02,5.79890416e-02,2.19466519e-01,-2.43257022e-01,-9.34463442e-05,-2.29270723e-04,-3.01676476e-01,-1.16402366e-01 -1241000000,6.86907176e-02,5.66501110e-02,2.14345891e-01,-2.49213569e-01,-1.02682857e-04,-2.18720064e-04,-3.02678916e-01,-1.11669659e-01 -1242000000,6.81454349e-02,5.54492156e-02,2.07428847e-01,-2.55291995e-01,-1.24385946e-04,-1.96665388e-04,-3.03622286e-01,-1.11474645e-01 -1243000000,6.75677134e-02,5.42601190e-02,2.00224627e-01,-2.61257272e-01,-1.53177453e-04,-1.97277667e-04,-3.02771812e-01,-1.14415395e-01 -1244000000,6.73672173e-02,5.29541659e-02,1.90989680e-01,-2.65487843e-01,-1.69286374e-04,-2.85066587e-04,-3.03876795e-01,-1.11353605e-01 -1245000000,6.66025938e-02,5.15953100e-02,1.84221305e-01,-2.69277867e-01,-1.53103090e-04,-1.99039296e-04,-3.02761843e-01,-1.16318004e-01 -1246000000,6.55123449e-02,5.09093245e-02,1.76608544e-01,-2.75715392e-01,-2.20696010e-04,-2.73280476e-04,-3.01304787e-01,-1.15925115e-01 -1247000000,6.48564538e-02,4.98471477e-02,1.68864165e-01,-2.80608090e-01,-2.30900924e-04,-2.95241647e-04,-3.01714535e-01,-1.16586516e-01 -1248000000,6.42745315e-02,4.88418990e-02,1.60168768e-01,-2.85639863e-01,-3.13719405e-04,-4.09974295e-04,-3.04438991e-01,-1.10438159e-01 -1249000000,6.37110488e-02,4.77672085e-02,1.51192987e-01,-2.88881109e-01,-3.86360345e-04,-4.14425025e-04,-3.04651475e-01,-1.09978143e-01 -1250000000,6.30080704e-02,4.67981180e-02,1.42808018e-01,-2.93130839e-01,-3.92007649e-04,-4.06252065e-04,-3.04492580e-01,-1.09720054e-01 -1251000000,6.22609941e-02,4.59290495e-02,1.34406135e-01,-2.97262686e-01,-3.73938910e-04,-3.59970489e-04,-3.04308969e-01,-1.10115878e-01 -1252000000,6.14433355e-02,4.51073099e-02,1.26111718e-01,-3.01172165e-01,-4.97822412e-04,-4.05362346e-04,-3.04349586e-01,-1.08830632e-01 -1253000000,6.04322091e-02,4.45237325e-02,1.19109362e-01,-3.06123901e-01,-6.42519439e-04,-6.72220371e-04,-3.04249225e-01,-1.06696073e-01 -1254000000,5.97620962e-02,4.37865145e-02,1.09928040e-01,-3.09451277e-01,-7.28789633e-04,-6.61297109e-04,-3.04722676e-01,-1.05881943e-01 -1255000000,5.90368255e-02,4.27572598e-02,1.01184002e-01,-3.09603138e-01,-6.28105538e-04,-5.14737259e-04,-3.05775220e-01,-1.06241600e-01 -1256000000,5.87106256e-02,4.17341081e-02,9.30270997e-02,-3.17399846e-01,-5.59208672e-04,-3.63277947e-04,-3.04580882e-01,-1.12167734e-01 -1257000000,5.78678658e-02,4.12340487e-02,8.41634785e-02,-3.20202589e-01,-5.38697772e-04,-2.16358480e-04,-3.04154762e-01,-1.15172640e-01 -1258000000,5.70652295e-02,4.08370225e-02,7.48167018e-02,-3.23125211e-01,-7.72181009e-04,-2.98667747e-04,-3.06589006e-01,-1.08247279e-01 -1259000000,5.61179201e-02,4.05853139e-02,6.69474881e-02,-3.27049898e-01,-6.75922263e-04,-2.47849624e-04,-3.05610009e-01,-1.10991102e-01 -1260000000,5.49945493e-02,4.01106420e-02,5.98965087e-02,-3.28146792e-01,-6.67022333e-04,-1.65731201e-04,-3.05251983e-01,-1.12117523e-01 -1261000000,5.44495380e-02,3.93530045e-02,4.84529594e-02,-3.26813774e-01,-7.39560572e-04,-1.30838206e-04,-3.06668917e-01,-1.08456826e-01 -1262000000,5.36428701e-02,3.90989738e-02,3.92103251e-02,-3.28349732e-01,-8.09865814e-04,-4.30006215e-05,-3.08517257e-01,-1.02925897e-01 -1263000000,5.29407789e-02,3.91679052e-02,2.94883813e-02,-3.32507501e-01,-1.10778756e-03,-9.72137820e-05,-3.12102957e-01,-9.33997181e-02 -1264000000,5.21253347e-02,3.89111896e-02,2.04360279e-02,-3.33315065e-01,-1.02292663e-03,3.15211095e-05,-3.12969148e-01,-9.22211257e-02 -1265000000,5.12651383e-02,3.83296418e-02,1.17212808e-02,-3.30590330e-01,-9.56121751e-04,9.22863095e-05,-3.13818646e-01,-8.81178511e-02 -1266000000,5.06160876e-02,3.75330510e-02,-3.02474039e-03,-3.30079576e-01,-1.30449814e-03,1.63687090e-04,-3.16399703e-01,-8.06019073e-02 -1267000000,4.99925243e-02,3.74139480e-02,-1.32159858e-02,-3.29691207e-01,-1.09964671e-03,2.93086803e-04,-3.17075990e-01,-7.81478543e-02 -1268000000,4.96438463e-02,3.75367231e-02,-2.56791888e-02,-3.31164284e-01,-9.98074048e-04,4.30571219e-04,-3.18768313e-01,-7.48006632e-02 -1269000000,4.85514216e-02,3.83541043e-02,-3.13893238e-02,-3.37542577e-01,-1.34320697e-03,6.25113175e-04,-3.19494362e-01,-7.10137470e-02 -1270000000,4.83044385e-02,3.75374003e-02,-4.46036704e-02,-3.29736733e-01,-9.95390286e-04,6.08581210e-04,-3.20737435e-01,-6.66612262e-02 -1271000000,4.77299747e-02,3.78363718e-02,-5.46574310e-02,-3.31049306e-01,-8.71493221e-04,7.32963682e-04,-3.21704433e-01,-6.25623169e-02 -1272000000,4.70290516e-02,3.79850347e-02,-6.33536299e-02,-3.30353483e-01,-7.86817474e-04,6.36677654e-04,-3.22419003e-01,-5.81257090e-02 -1273000000,4.59558613e-02,3.85667113e-02,-6.88651830e-02,-3.32195370e-01,-6.26100499e-04,6.55995282e-04,-3.22906392e-01,-6.52397054e-02 -1274000000,4.56382566e-02,3.86033280e-02,-7.98838630e-02,-3.29630128e-01,-7.13822315e-04,8.78605046e-04,-3.24299315e-01,-5.26061227e-02 -1275000000,4.52537620e-02,3.80750835e-02,-9.05727293e-02,-3.22240674e-01,-8.27646709e-04,8.50773616e-04,-3.24500270e-01,-4.75694986e-02 -1276000000,4.46039428e-02,3.75261589e-02,-9.92169700e-02,-3.15335113e-01,-1.38327327e-03,6.52745504e-04,-3.24104762e-01,-5.56229879e-02 -1277000000,4.40296788e-02,3.75579284e-02,-1.07806354e-01,-3.11920977e-01,-4.30595867e-04,8.17108380e-04,-3.24991971e-01,-5.27085225e-02 -1278000000,4.41471474e-02,3.85056618e-02,-1.21748500e-01,-3.15743363e-01,-3.19982472e-04,7.88801880e-04,-3.25019805e-01,-5.30222346e-02 -1279000000,4.32660269e-02,3.78340500e-02,-1.26917375e-01,-3.05216160e-01,-2.64100516e-04,8.96317390e-04,-3.25877634e-01,-4.72654913e-02 -1280000000,4.28630921e-02,3.79015653e-02,-1.35391145e-01,-3.00630699e-01,-3.37519091e-04,8.97181140e-04,-3.28032264e-01,-4.33799860e-02 -1281000000,4.24281161e-02,3.99849369e-02,-1.44270651e-01,-3.11758187e-01,-7.11438232e-05,8.85447863e-04,-3.26011043e-01,-3.53862659e-02 -1282000000,4.21360142e-02,4.03305988e-02,-1.52512584e-01,-3.07995064e-01,1.45302013e-04,9.38052734e-04,-3.26964941e-01,-2.84524032e-02 -1283000000,4.23147914e-02,4.00315976e-02,-1.65160650e-01,-2.99275722e-01,-3.03181219e-04,1.03758310e-03,-3.28376339e-01,-3.25137990e-02 -1284000000,4.10049585e-02,3.95511031e-02,-1.65509388e-01,-2.89041565e-01,2.08723435e-04,8.06386847e-04,-3.27722043e-01,-2.45835049e-02 -1285000000,4.09328549e-02,4.13607274e-02,-1.74780141e-01,-2.94754564e-01,3.42672991e-04,9.01347157e-04,-3.29065565e-01,-1.77888511e-02 -1286000000,4.07468634e-02,4.01949299e-02,-1.82952662e-01,-2.79295637e-01,5.03312791e-04,1.13247838e-03,-3.29833482e-01,-1.48226035e-02 -1287000000,4.05935701e-02,4.04034446e-02,-1.90876451e-01,-2.73326719e-01,2.79773674e-04,1.51733150e-03,-3.29910940e-01,-1.20991701e-02 -1288000000,4.00243260e-02,4.17561939e-02,-1.95657454e-01,-2.74590960e-01,2.50293109e-04,1.45243132e-03,-3.31170287e-01,-1.41827563e-02 -1289000000,3.98855358e-02,4.19355166e-02,-2.02718065e-01,-2.67740009e-01,3.33592955e-04,1.18882541e-03,-3.30417067e-01,-1.28055418e-02 -1290000000,4.01318919e-02,4.16966915e-02,-2.11955037e-01,-2.58233035e-01,4.34982839e-04,9.50998939e-04,-3.31609037e-01,-9.82040669e-03 -1291000000,4.14161271e-02,4.18770915e-02,-2.26671104e-01,-2.51507964e-01,6.41637211e-04,5.91461378e-04,-3.31935983e-01,-4.25157233e-03 -1292000000,4.15378968e-02,4.22234164e-02,-2.34328036e-01,-2.45177041e-01,8.09681803e-04,2.92873172e-04,-3.31330709e-01,2.66474565e-03 -1293000000,4.16788536e-02,4.18408177e-02,-2.41454086e-01,-2.36369055e-01,8.52785311e-04,3.61943945e-04,-3.30535450e-01,5.77938892e-03 -1294000000,4.04240760e-02,4.40757176e-02,-2.44040099e-01,-2.41023938e-01,9.78125970e-04,2.26306369e-04,-3.33638393e-01,1.05573724e-02 -1295000000,4.19187489e-02,4.42459425e-02,-2.58150447e-01,-2.32634314e-01,1.25864750e-03,3.54126149e-04,-3.32005902e-01,1.29485078e-02 -1296000000,4.04578542e-02,4.39419501e-02,-2.55880325e-01,-2.22416461e-01,1.19049128e-03,9.30730392e-04,-3.33917990e-01,1.29199344e-02 -1297000000,4.07285472e-02,4.42881570e-02,-2.62304995e-01,-2.15330276e-01,7.28913393e-04,7.82002498e-04,-3.33965748e-01,1.53782207e-02 -1298000000,4.29699762e-02,4.46520811e-02,-2.77495466e-01,-2.07955430e-01,1.16273836e-03,4.05141078e-04,-3.30265424e-01,2.51663437e-02 -1299000000,4.13845050e-02,4.43377657e-02,-2.75019787e-01,-1.97600755e-01,9.14112161e-04,1.91728090e-04,-3.33183585e-01,2.57397589e-02 -1300000000,4.17602496e-02,4.53449100e-02,-2.80640262e-01,-1.92846014e-01,1.18139439e-03,-1.57916162e-04,-3.32884524e-01,3.02090300e-02 -1301000000,4.20003925e-02,4.55477172e-02,-2.86172982e-01,-1.84595735e-01,5.88964463e-04,6.46193105e-05,-3.32442656e-01,3.20346370e-02 -1302000000,4.22590067e-02,4.57422321e-02,-2.91174625e-01,-1.76257649e-01,9.55277465e-04,1.45226031e-04,-3.32943079e-01,3.24462535e-02 -1303000000,4.31676496e-02,4.66559405e-02,-2.98369091e-01,-1.70387866e-01,1.05774594e-03,1.62754266e-04,-3.32912696e-01,4.02142871e-02 -1304000000,4.51759324e-02,4.64284218e-02,-3.08434437e-01,-1.60371943e-01,6.87663596e-04,1.86190260e-05,-3.29603390e-01,4.20075362e-02 -1305000000,4.56549954e-02,4.52463840e-02,-3.12877711e-01,-1.47546997e-01,8.76192207e-04,-2.80403776e-04,-3.28655729e-01,4.02491420e-02 -1306000000,4.63615646e-02,4.60359047e-02,-3.17697012e-01,-1.40830800e-01,8.99760580e-04,-1.22556897e-04,-3.28547520e-01,4.24327979e-02 -1307000000,4.69757899e-02,4.61094858e-02,-3.21768466e-01,-1.31850267e-01,1.03387807e-03,3.62234562e-04,-3.28739872e-01,4.39021934e-02 -1308000000,4.50901654e-02,4.66860102e-02,-3.19562601e-01,-1.24519001e-01,7.85752007e-04,-3.09894585e-04,-3.32981178e-01,5.10566670e-02 -1309000000,4.67617588e-02,4.64371029e-02,-3.25152598e-01,-1.13719811e-01,9.77482749e-04,-2.15008515e-04,-3.29847484e-01,5.38750588e-02 -1310000000,4.73585453e-02,4.63823608e-02,-3.28758393e-01,-1.04182193e-01,9.58370102e-04,-1.05426071e-04,-3.29923614e-01,5.56072668e-02 -1311000000,4.86712367e-02,4.69080219e-02,-3.36434897e-01,-9.73331988e-02,9.08536174e-04,-8.44052859e-04,-3.29187683e-01,5.65316712e-02 -1312000000,4.90069969e-02,4.67462555e-02,-3.38524517e-01,-8.73072987e-02,6.84315550e-04,-1.57873648e-04,-3.30144424e-01,5.64395262e-02 -1313000000,4.78478304e-02,4.61851779e-02,-3.38171438e-01,-7.66765121e-02,5.56378759e-04,-8.27114224e-05,-3.33766447e-01,5.56010004e-02 -1314000000,4.81561162e-02,4.54715347e-02,-3.40047193e-01,-6.59950899e-02,5.15929430e-04,-2.95794162e-04,-3.33293543e-01,5.39488126e-02 -1315000000,4.88725750e-02,4.53424116e-02,-3.42667801e-01,-5.57626338e-02,4.24093860e-04,-5.71687360e-04,-3.33768484e-01,5.31328848e-02 -1316000000,5.06078738e-02,4.36505122e-02,-3.45606450e-01,-4.40805637e-02,1.02455485e-03,-3.06123448e-04,-3.31837008e-01,5.00184425e-02 -1317000000,5.11047132e-02,4.32585307e-02,-3.46662771e-01,-3.38578885e-02,5.65133133e-04,-1.48223202e-04,-3.33033044e-01,4.94246028e-02 -1318000000,5.33869544e-02,4.38146088e-02,-3.48444784e-01,-2.38369947e-02,7.13529531e-04,-3.10882882e-04,-3.29518880e-01,5.13913232e-02 -1319000000,5.32288444e-02,4.24178007e-02,-3.48798736e-01,-1.33189198e-02,3.01803197e-04,7.11672880e-06,-3.31138403e-01,4.75695468e-02 -1320000000,5.18711686e-02,4.23092945e-02,-3.49323382e-01,-3.03043977e-03,5.66539115e-04,-9.20636296e-07,-3.36737355e-01,4.67842546e-02 -1321000000,5.32360826e-02,4.23469733e-02,-3.50731534e-01,8.14335997e-03,4.91588841e-04,-1.84650009e-04,-3.33534091e-01,4.78583630e-02 -1322000000,5.37937876e-02,4.16659770e-02,-3.50666886e-01,1.85906293e-02,4.78176194e-04,3.04647953e-05,-3.33820048e-01,4.69358785e-02 -1323000000,5.49880093e-02,4.06914953e-02,-3.49558719e-01,2.85896925e-02,5.28374229e-04,-1.40382217e-04,-3.33878757e-01,4.03355826e-02 -1324000000,5.47055097e-02,4.07528828e-02,-3.49760289e-01,3.95934743e-02,2.90946251e-04,-9.13095253e-05,-3.35398310e-01,4.10207053e-02 -1325000000,5.56455271e-02,3.94821957e-02,-3.47872155e-01,4.90647832e-02,2.43897677e-04,-1.63058932e-04,-3.34977154e-01,3.55080171e-02 -1326000000,5.60387726e-02,3.88385794e-02,-3.46617989e-01,5.91370981e-02,3.71542440e-04,-3.58289502e-04,-3.34987932e-01,2.90164000e-02 -1327000000,5.65473896e-02,3.80989205e-02,-3.44633888e-01,6.91406537e-02,1.69936275e-04,-3.90575035e-04,-3.35720832e-01,2.21350648e-02 -1328000000,5.70829110e-02,3.88937108e-02,-3.42190766e-01,8.26831504e-02,4.14139550e-04,-3.47876394e-04,-3.37214381e-01,1.59989679e-02 -1329000000,5.76045122e-02,3.69187581e-02,-3.38972543e-01,8.88465162e-02,4.05743732e-04,-6.95685195e-05,-3.36948750e-01,1.30110580e-02 -1330000000,5.66435079e-02,3.70252598e-02,-3.40081398e-01,9.95069968e-02,2.62858502e-04,-6.37151227e-05,-3.38993737e-01,6.29813943e-03 -1331000000,5.76134480e-02,3.57300146e-02,-3.34859447e-01,1.06048255e-01,2.08288417e-04,-1.67519551e-04,-3.37490879e-01,-2.18936414e-03 -1332000000,5.77532435e-02,3.51949283e-02,-3.32448355e-01,1.14241006e-01,3.01507360e-04,-2.41844331e-04,-3.37705733e-01,-1.12654037e-02 -1333000000,5.79547800e-02,3.60797570e-02,-3.29187793e-01,1.28780566e-01,3.24927151e-04,-2.77848666e-04,-3.39158054e-01,-2.16056861e-02 -1334000000,5.82398013e-02,3.54117695e-02,-3.25001668e-01,1.36109601e-01,2.89649962e-04,-2.20206514e-04,-3.38211089e-01,-3.14728976e-02 -1335000000,5.83338912e-02,3.41650149e-02,-3.21022819e-01,1.40871353e-01,3.36606578e-04,-8.72489225e-05,-3.38250638e-01,-3.89366781e-02 -1336000000,5.76112015e-02,3.38581727e-02,-3.18030417e-01,1.47538688e-01,3.60382219e-04,-2.23943207e-04,-3.39508452e-01,-4.64491868e-02 -1337000000,5.74008044e-02,3.34776180e-02,-3.15351463e-01,1.54657249e-01,2.62835027e-04,-9.00006508e-05,-3.38717226e-01,-5.47369512e-02 -1338000000,5.72366949e-02,3.32729858e-02,-3.12270151e-01,1.61682660e-01,2.99821855e-04,-1.61946561e-04,-3.36717307e-01,-6.79548343e-02 -1339000000,5.69972990e-02,3.29040146e-02,-3.09048338e-01,1.68792193e-01,2.85135918e-04,-1.36590580e-04,-3.35678886e-01,-7.51030504e-02 -1340000000,5.66447993e-02,3.23337038e-02,-3.06290676e-01,1.74345012e-01,2.34357868e-04,-5.39512200e-05,-3.34135524e-01,-8.26644331e-02 -1341000000,5.63281010e-02,3.21173369e-02,-3.03089450e-01,1.81781220e-01,2.54555908e-04,-2.72114633e-05,-3.32312822e-01,-9.12565806e-02 -1342000000,5.59782579e-02,3.17347946e-02,-2.99722621e-01,1.88218165e-01,2.56421598e-04,-4.42480802e-05,-3.30188402e-01,-1.00285671e-01 -1343000000,5.54293030e-02,3.11698986e-02,-2.97259585e-01,1.94298250e-01,2.62348006e-04,-2.82649589e-05,-3.27726290e-01,-1.08085910e-01 -1344000000,5.50581553e-02,3.07537187e-02,-2.93120369e-01,2.00925584e-01,3.33618640e-04,1.92396897e-05,-3.25746242e-01,-1.15042997e-01 -1345000000,5.48377041e-02,3.02238390e-02,-2.87763564e-01,2.06841722e-01,2.59440030e-04,-3.87756545e-05,-3.24116424e-01,-1.22305772e-01 -1346000000,5.40493141e-02,2.96722855e-02,-2.85726103e-01,2.13061690e-01,2.77009562e-04,-5.62315518e-05,-3.20343311e-01,-1.29904267e-01 -1347000000,5.35404206e-02,2.90871684e-02,-2.81312289e-01,2.19265939e-01,3.23498902e-04,-8.73466063e-05,-3.17204157e-01,-1.36501647e-01 -1348000000,5.31812548e-02,2.86321574e-02,-2.78506310e-01,2.30267721e-01,3.09018283e-04,-5.19941215e-05,-3.13522896e-01,-1.42605857e-01 -1349000000,5.30576974e-02,2.78582373e-02,-2.69947467e-01,2.36384391e-01,3.28011583e-04,-4.78635967e-05,-3.13717984e-01,-1.46905306e-01 -1350000000,5.25674315e-02,2.69302394e-02,-2.63406140e-01,2.40053535e-01,3.49325187e-04,-8.45997523e-05,-3.13460695e-01,-1.49882788e-01 -1351000000,5.11933664e-02,2.63482901e-02,-2.60720490e-01,2.44667885e-01,3.64901298e-04,-8.11189336e-05,-3.10518093e-01,-1.52480265e-01 -1352000000,5.05870184e-02,2.55923934e-02,-2.54857762e-01,2.51007061e-01,3.01510857e-04,-5.29604022e-05,-3.09325088e-01,-1.55320201e-01 -1353000000,5.01899002e-02,2.46877224e-02,-2.45935010e-01,2.56401510e-01,3.51147402e-04,-5.96775884e-05,-3.11266277e-01,-1.55428934e-01 -1354000000,4.92453097e-02,2.40477922e-02,-2.42135014e-01,2.64384331e-01,3.41262518e-04,-4.55553794e-05,-3.09995480e-01,-1.56030214e-01 -1355000000,4.87900362e-02,2.34343724e-02,-2.31977380e-01,2.72488438e-01,3.44160507e-04,-3.24251019e-05,-3.10864409e-01,-1.57692815e-01 -1356000000,4.77996680e-02,2.27192635e-02,-2.27619736e-01,2.79233284e-01,3.01514769e-04,1.63585994e-05,-3.08632639e-01,-1.61200581e-01 -1357000000,4.69321518e-02,2.19756392e-02,-2.20678266e-01,2.85250957e-01,2.85039877e-04,-5.69972715e-05,-3.05543877e-01,-1.64260370e-01 -1358000000,4.61385617e-02,2.13160179e-02,-2.12186130e-01,2.91722834e-01,3.19692741e-04,-2.93181434e-05,-3.07337997e-01,-1.66127890e-01 -1359000000,4.52204964e-02,2.03600140e-02,-2.04618120e-01,2.93440559e-01,3.19288210e-04,-1.03622026e-04,-3.07350351e-01,-1.60825227e-01 -1360000000,4.43883744e-02,1.97839146e-02,-1.94824504e-01,3.00091513e-01,3.38098455e-04,-1.41625082e-05,-3.10278234e-01,-1.60547330e-01 -1361000000,4.32730086e-02,1.85908723e-02,-1.93307562e-01,3.05457758e-01,3.72210417e-04,-3.73833652e-05,-3.09460915e-01,-1.59737867e-01 -1362000000,4.22235126e-02,1.79839674e-02,-1.84561777e-01,3.10868007e-01,3.37273368e-04,-2.87496511e-05,-3.08140321e-01,-1.61591712e-01 -1363000000,4.10098561e-02,1.78065254e-02,-1.77279286e-01,3.21882094e-01,3.86650918e-04,-7.99623955e-05,-3.11615046e-01,-1.60044241e-01 -1364000000,3.99481513e-02,1.75914610e-02,-1.59341131e-01,3.19137173e-01,4.12732804e-04,-6.48124609e-05,-3.13103707e-01,-1.55964529e-01 -1365000000,3.84828873e-02,1.70840581e-02,-1.56669811e-01,3.24564866e-01,3.80515836e-04,-3.78437707e-05,-3.11793515e-01,-1.54008448e-01 -1366000000,3.75479092e-02,1.65705433e-02,-1.41896549e-01,3.28103785e-01,3.59574874e-04,-3.43265641e-05,-3.14478942e-01,-1.53052131e-01 -1367000000,3.62874140e-02,1.61377375e-02,-1.32710636e-01,3.32484895e-01,3.78653698e-04,-1.05947356e-05,-3.14785467e-01,-1.53080423e-01 -1368000000,3.49569560e-02,1.58715905e-02,-1.23403465e-01,3.39675426e-01,4.05812534e-04,-4.71777725e-05,-3.19368400e-01,-1.49052838e-01 -1369000000,3.34092577e-02,1.55726505e-02,-1.19165269e-01,3.44499334e-01,4.00174947e-04,3.10308541e-06,-3.16831026e-01,-1.47940562e-01 -1370000000,3.19997725e-02,1.51830823e-02,-1.10719309e-01,3.46379739e-01,4.08982659e-04,-6.90718921e-06,-3.21023896e-01,-1.42383420e-01 -1371000000,3.07122439e-02,1.47866560e-02,-9.82856550e-02,3.44854957e-01,4.28133578e-04,-4.90570098e-05,-3.24329768e-01,-1.29366692e-01 -1372000000,2.92871024e-02,1.45974855e-02,-8.81953620e-02,3.47643788e-01,4.48710292e-04,-2.81547160e-05,-3.29854516e-01,-1.21159380e-01 -1373000000,2.78696345e-02,1.44650936e-02,-7.73406767e-02,3.50526000e-01,3.77187093e-04,1.43721897e-05,-3.29847144e-01,-1.26836380e-01 -1374000000,2.62399295e-02,1.44038574e-02,-7.03774416e-02,3.54032677e-01,3.98679813e-04,-3.91568338e-05,-3.31791163e-01,-1.21872106e-01 -1375000000,2.49262394e-02,1.44822439e-02,-5.45213474e-02,3.56930846e-01,3.88234396e-04,-7.92527881e-06,-3.31807100e-01,-1.20985914e-01 -1376000000,2.32427491e-02,1.42173421e-02,-4.81570537e-02,3.67887544e-01,2.81404405e-04,-2.98875042e-04,-3.37876481e-01,-1.16764392e-01 -1377000000,2.16149719e-02,1.44640538e-02,-3.87006381e-02,3.69308277e-01,3.91908307e-04,1.99947921e-05,-3.41147662e-01,-1.08114287e-01 -1378000000,2.01616367e-02,1.44299302e-02,-2.45786558e-02,3.63857904e-01,4.22997309e-04,2.87267077e-05,-3.41736756e-01,-1.06646116e-01 -1379000000,1.83744816e-02,1.46618212e-02,-1.77474707e-02,3.62733079e-01,4.10388500e-04,3.56883682e-05,-3.40552881e-01,-1.05741508e-01 -1380000000,1.65893016e-02,1.51441156e-02,-1.13458373e-02,3.64939543e-01,4.90260999e-04,5.21348441e-05,-3.43619026e-01,-9.84772117e-02 -1381000000,1.54107530e-02,1.66334094e-02,4.27772141e-03,3.65708690e-01,4.58684787e-04,1.79177689e-05,-3.43027330e-01,-9.07419327e-02 -1382000000,1.38084535e-02,1.71325686e-02,1.43490317e-02,3.66838089e-01,4.83350044e-04,6.24450281e-05,-3.42683069e-01,-9.04465827e-02 -1383000000,1.19761110e-02,1.73063989e-02,2.00686863e-02,3.57232373e-01,4.70593033e-04,5.09447118e-05,-3.43066219e-01,-9.01416031e-02 -1384000000,1.02842354e-02,1.79506943e-02,2.80366973e-02,3.56984605e-01,4.92590680e-04,9.24500303e-06,-3.45076497e-01,-8.60945727e-02 -1385000000,8.65141846e-03,1.91681093e-02,3.73297530e-02,3.66347602e-01,5.03100062e-04,9.76559272e-05,-3.46165826e-01,-8.25874167e-02 -1386000000,7.13619585e-03,1.99331561e-02,4.89549708e-02,3.65205510e-01,5.32889869e-04,9.78977492e-05,-3.44956663e-01,-8.06948737e-02 -1387000000,5.43383567e-03,2.08044145e-02,5.72167534e-02,3.64244699e-01,5.24176347e-04,7.99878701e-05,-3.42919791e-01,-8.39124218e-02 -1388000000,3.46072364e-03,2.15227792e-02,6.07846705e-02,3.58641528e-01,5.33888692e-04,7.31139424e-05,-3.42883229e-01,-8.41526111e-02 -1389000000,1.76904310e-03,2.25296548e-02,6.95931888e-02,3.55835193e-01,4.69767598e-04,3.08878330e-05,-3.41897765e-01,-8.28568902e-02 -1390000000,2.17711528e-04,2.34593963e-02,8.00614774e-02,3.51593925e-01,5.47721327e-04,-4.02181042e-05,-3.44922733e-01,-6.84520776e-02 -1391000000,-1.40033204e-03,2.44492329e-02,9.38161087e-02,3.57546754e-01,5.95162305e-04,-9.94774535e-06,-3.54971196e-01,-5.80577831e-02 -1392000000,-3.02512239e-03,2.56247107e-02,1.01480170e-01,3.55110823e-01,6.22641264e-04,-2.05714946e-05,-3.55381611e-01,-4.88923610e-02 -1393000000,-4.96067167e-03,2.68313316e-02,1.05850859e-01,3.51205491e-01,5.47912608e-04,9.69690526e-06,-3.48219508e-01,-6.90768021e-02 -1394000000,-6.44013555e-03,2.83385289e-02,1.15010940e-01,3.49749653e-01,5.42808505e-04,1.16388467e-06,-3.48651705e-01,-6.73727377e-02 -1395000000,-8.01883673e-03,2.98613924e-02,1.23303779e-01,3.46834981e-01,5.28862963e-04,-8.18211225e-05,-3.49049658e-01,-7.10855829e-02 -1396000000,-9.67923847e-03,3.13025560e-02,1.29988274e-01,3.43162236e-01,5.44346972e-04,-1.18702831e-04,-3.52142610e-01,-6.37687371e-02 -1397000000,-1.12174730e-02,3.27512579e-02,1.37386728e-01,3.39703792e-01,5.70497781e-04,-1.67819440e-04,-3.54397370e-01,-5.30980414e-02 -1398000000,-1.25937947e-02,3.42533713e-02,1.45641606e-01,3.34585681e-01,5.38383933e-04,-1.56830328e-04,-3.55182963e-01,-4.90360618e-02 -1399000000,-1.36540068e-02,3.57182844e-02,1.47742521e-01,3.23051375e-01,6.00315473e-04,-1.04626946e-04,-3.44510367e-01,-3.70427359e-02 -1400000000,-1.40974225e-02,3.81055332e-02,1.64586039e-01,3.25510397e-01,5.42000040e-04,-9.37470277e-05,-3.41158258e-01,-5.14857161e-02 -1401000000,-1.55000986e-02,3.99237206e-02,1.71619893e-01,3.22052574e-01,4.93714544e-04,-1.41379782e-04,-3.46327661e-01,-5.70487507e-02 -1402000000,-1.67499692e-02,4.17939098e-02,1.79071907e-01,3.18838475e-01,4.59677835e-04,-1.68556154e-04,-3.52387947e-01,-5.28650451e-02 -1403000000,-1.96723138e-02,4.31655257e-02,1.81885840e-01,3.18449170e-01,5.10591184e-04,-1.77958019e-04,-3.53118898e-01,-4.57191274e-02 -1404000000,-2.07191583e-02,4.49045707e-02,1.89524945e-01,3.11928130e-01,4.97458944e-04,-1.48667948e-04,-3.55444453e-01,-2.76121669e-02 -1405000000,-2.20621048e-02,4.67602353e-02,1.95355332e-01,3.07256238e-01,5.02038457e-04,-1.84730544e-04,-3.54025651e-01,-2.78612345e-02 -1406000000,-2.33626763e-02,4.91184410e-02,2.01309614e-01,3.04788310e-01,5.19729762e-04,-1.49107692e-04,-3.51371343e-01,-3.91560344e-02 -1407000000,-2.45413212e-02,5.12324678e-02,2.07423050e-01,3.00326419e-01,4.74714205e-04,-1.04190940e-04,-3.47516841e-01,-5.68832529e-02 -1408000000,-2.57566743e-02,5.30645967e-02,2.12999820e-01,2.94397636e-01,4.15566829e-04,-1.45217998e-04,-3.53201300e-01,-4.39148628e-02 -1409000000,-2.66966889e-02,5.53941195e-02,2.19460222e-01,2.90854801e-01,4.54372599e-04,-1.36901130e-04,-3.44097035e-01,-7.19533922e-02 -1410000000,-2.77505359e-02,5.74561581e-02,2.25309732e-01,2.85987590e-01,4.40322745e-04,-9.83231165e-05,-3.44189587e-01,-7.04367383e-02 -1411000000,-2.87873338e-02,5.96717844e-02,2.30849103e-01,2.81249258e-01,3.97997568e-04,-1.02783449e-04,-3.47835128e-01,-5.92281640e-02 -1412000000,-2.97728016e-02,6.19306608e-02,2.36366403e-01,2.76096887e-01,3.47043113e-04,-1.45185010e-04,-3.51501404e-01,-4.76965437e-02 -1413000000,-3.08673276e-02,6.38698576e-02,2.40657835e-01,2.70367134e-01,4.21229536e-04,-9.17508653e-05,-3.37610948e-01,-8.22713624e-02 -1414000000,-3.17956510e-02,6.60185404e-02,2.45910637e-01,2.65602893e-01,3.84466796e-04,-1.03198245e-04,-3.39238497e-01,-7.99559749e-02 -1415000000,-3.26047305e-02,6.85239304e-02,2.51197166e-01,2.61122143e-01,3.42041265e-04,-1.26122686e-04,-3.43873025e-01,-7.35992753e-02 -1416000000,-3.07022644e-02,7.12806412e-02,2.58668485e-01,2.54294240e-01,3.57614431e-04,-1.53004974e-04,-3.32308154e-01,-8.66769100e-02 -1417000000,-3.19362303e-02,7.36662162e-02,2.61190519e-01,2.50391651e-01,3.91720523e-04,-1.16377986e-04,-3.21021486e-01,-1.11602636e-01 -1418000000,-3.50036568e-02,7.55626828e-02,2.63681517e-01,2.45293849e-01,3.86166670e-04,-1.43109285e-04,-3.31307118e-01,-9.66980332e-02 -1419000000,-3.61219106e-02,7.73695774e-02,2.67611977e-01,2.40657568e-01,3.42182646e-04,-1.38191701e-04,-3.29054313e-01,-1.04062727e-01 -1420000000,-3.71915864e-02,7.96491273e-02,2.70530726e-01,2.36170569e-01,3.55030040e-04,-1.54595093e-04,-3.26034182e-01,-1.09326671e-01 -1421000000,-3.76970042e-02,8.21011336e-02,2.74859846e-01,2.30479624e-01,3.38931294e-04,-1.65768371e-04,-3.17193209e-01,-1.30225456e-01 -1422000000,-3.88916314e-02,8.43447367e-02,2.78272950e-01,2.25982763e-01,3.67924301e-04,-1.60176408e-04,-2.98842387e-01,-1.53613133e-01 -1423000000,-3.98840164e-02,8.69888729e-02,2.81313222e-01,2.22104123e-01,3.59176101e-04,-1.76683691e-04,-2.93014194e-01,-1.63110345e-01 -1424000000,-4.09890846e-02,8.82598539e-02,2.83712631e-01,2.18790907e-01,3.45882080e-04,-1.10883938e-04,-2.99264733e-01,-1.43890194e-01 -1425000000,-4.19521419e-02,9.02695720e-02,2.85883418e-01,2.14660266e-01,3.26447819e-04,-1.25084780e-04,-3.08025513e-01,-1.35301171e-01 -1426000000,-4.28481975e-02,9.24282234e-02,2.87917835e-01,2.10254939e-01,3.02335126e-04,-1.43271958e-04,-3.13584054e-01,-1.32831624e-01 -1427000000,-4.38165624e-02,9.51591905e-02,2.90307172e-01,2.05494677e-01,3.03919285e-04,-1.49699974e-04,-3.03106635e-01,-1.54546580e-01 -1428000000,-4.52491330e-02,9.79958838e-02,2.92044344e-01,2.02819502e-01,2.93040129e-04,-1.53031655e-04,-2.86735280e-01,-1.77296313e-01 -1429000000,-4.73276164e-02,9.94256231e-02,2.93194733e-01,2.02119256e-01,3.34966543e-04,-1.21745774e-04,-2.43157736e-01,-2.10859070e-01 -1430000000,-4.88977568e-02,1.00418029e-01,2.93593576e-01,1.99956204e-01,3.64230696e-04,-7.70105205e-05,-2.38497284e-01,-2.06855520e-01 -1431000000,-5.04002395e-02,1.02085269e-01,2.94507360e-01,1.98641611e-01,3.55943826e-04,-3.24551526e-05,-2.46195746e-01,-2.01539000e-01 -1432000000,-5.20591611e-02,1.03845002e-01,2.95296329e-01,1.96987217e-01,3.31070017e-04,-5.16057794e-05,-2.53377820e-01,-2.01836119e-01 -1433000000,-5.72229171e-02,1.05744811e-01,2.92083496e-01,1.96569745e-01,3.02731080e-04,-5.69634193e-05,-2.20461683e-01,-2.20633334e-01 -1434000000,-5.57581832e-02,1.07168629e-01,2.94942168e-01,1.92443678e-01,3.26023577e-04,-3.67137918e-05,-2.11024277e-01,-2.36664617e-01 -1435000000,-5.62924349e-02,1.09493918e-01,2.96906826e-01,1.92361543e-01,3.33052898e-04,-1.06660918e-05,-2.02063732e-01,-2.44808795e-01 -1436000000,-5.86732337e-02,1.10660916e-01,2.96055994e-01,1.90143915e-01,3.55384139e-04,-1.90781643e-05,-1.97968203e-01,-2.46306931e-01 -1437000000,-6.01835029e-02,1.12303120e-01,2.96740964e-01,1.88183605e-01,3.62330135e-04,1.96914748e-05,-1.95242227e-01,-2.48747487e-01 -1438000000,-6.18108338e-02,1.14537502e-01,3.04270899e-01,1.72998287e-01,3.72378403e-04,4.00925042e-05,-1.82943429e-01,-2.52818668e-01 -1439000000,-6.34276803e-02,1.15884494e-01,3.04798433e-01,1.70305698e-01,3.52178649e-04,4.53383362e-05,-1.79538559e-01,-2.57987252e-01 -1440000000,-6.25126407e-02,1.17540453e-01,3.08503720e-01,1.67730232e-01,3.62469311e-04,1.29570637e-05,-1.86186536e-01,-2.62469755e-01 -1441000000,-6.36778017e-02,1.19908388e-01,3.09408125e-01,1.65572633e-01,3.61469530e-04,1.59999567e-05,-1.68750038e-01,-2.76362812e-01 -1442000000,-6.58455889e-02,1.21672717e-01,3.08806270e-01,1.62326947e-01,3.82061251e-04,6.14442863e-06,-1.48750149e-01,-2.79483966e-01 -1443000000,-6.73583181e-02,1.23035144e-01,3.09185422e-01,1.58376141e-01,3.98931828e-04,3.13384545e-05,-1.38286131e-01,-2.78026154e-01 -1444000000,-6.55039530e-02,1.23303380e-01,3.13591517e-01,1.53276735e-01,3.81645070e-04,6.11823197e-05,-1.39850244e-01,-2.79484082e-01 -1445000000,-6.64777628e-02,1.25913716e-01,3.14530169e-01,1.50783479e-01,3.72844332e-04,6.48364217e-05,-1.34320128e-01,-2.87186147e-01 -1446000000,-6.77158757e-02,1.28460999e-01,3.14856970e-01,1.48295466e-01,3.57927804e-04,6.62055815e-05,-1.18819760e-01,-3.02816128e-01 -1447000000,-6.84651608e-02,1.30105698e-01,3.15712793e-01,1.44618170e-01,3.39972984e-04,4.71231023e-05,-1.02869115e-01,-3.10250617e-01 -1448000000,-7.20091048e-02,1.29850246e-01,3.13995960e-01,1.38997487e-01,3.82777551e-04,5.52772870e-05,-1.02319805e-01,-3.00596325e-01 -1449000000,-7.44397644e-02,1.30417891e-01,3.12067177e-01,1.35588005e-01,3.87046976e-04,6.89610521e-05,-8.90509011e-02,-2.98204829e-01 -1450000000,-7.48515060e-02,1.32277882e-01,3.13341075e-01,1.31863822e-01,4.09104604e-04,6.96425394e-05,-8.08110454e-02,-3.03983829e-01 -1451000000,-6.94604825e-02,1.35190744e-01,3.17448003e-01,1.27625558e-01,4.02225132e-04,7.70256931e-05,-7.88519548e-02,-3.10646528e-01 -1452000000,-6.99496676e-02,1.33908957e-01,3.17687930e-01,1.21254374e-01,3.82567511e-04,7.01594698e-05,-5.77400049e-02,-3.14743072e-01 -1453000000,-7.32097096e-02,1.38703403e-01,3.16637358e-01,1.19978750e-01,4.07846121e-04,9.61353537e-05,-5.62898284e-02,-3.32117860e-01 -1454000000,-6.89268520e-02,1.38542150e-01,3.20952454e-01,1.13821232e-01,3.88273399e-04,5.81727799e-05,-2.85014196e-02,-3.31260414e-01 -1455000000,-7.24213724e-02,1.42505525e-01,3.19584752e-01,1.11610387e-01,4.09279117e-04,8.13045127e-05,-2.25865527e-02,-3.27912531e-01 -1456000000,-7.30589277e-02,1.42994518e-01,3.19113671e-01,1.05900320e-01,4.02746700e-04,9.32870778e-05,-1.67218917e-05,-3.42550721e-01 -1457000000,-7.20404158e-02,1.45174948e-01,3.20795623e-01,1.02289667e-01,4.21888715e-04,1.19746646e-04,-1.18395294e-02,-3.37398581e-01 -1458000000,-7.29363955e-02,1.43148823e-01,3.21025437e-01,9.43047558e-02,4.40521236e-04,1.30912391e-04,2.28600387e-02,-3.38359538e-01 -1459000000,-6.81644072e-02,1.47760615e-01,3.24356579e-01,9.10908451e-02,4.40719136e-04,1.31789317e-04,2.96808213e-02,-3.46237728e-01 -1460000000,-7.17608531e-02,1.51093692e-01,3.23516809e-01,8.66485112e-02,4.50314256e-04,1.14010196e-04,6.22365571e-02,-3.42420673e-01 -1461000000,-7.04415221e-02,1.52654713e-01,3.24831852e-01,8.18656680e-02,4.63315907e-04,1.10625345e-04,5.22857273e-02,-3.34526145e-01 -1462000000,-7.26931232e-02,1.49034686e-01,3.24406052e-01,7.42717831e-02,4.64695492e-04,1.14448336e-04,6.84042975e-02,-3.21039443e-01 -1463000000,-6.86787267e-02,1.49853799e-01,3.26464582e-01,6.90995198e-02,4.61497780e-04,1.27700251e-04,7.18917223e-02,-3.24270863e-01 -1464000000,-6.78687063e-02,1.51826461e-01,3.27022639e-01,6.37287924e-02,4.89020815e-04,1.29387474e-04,7.80677648e-02,-3.20047402e-01 -1465000000,-7.16670686e-02,1.55898852e-01,3.25739470e-01,5.91484474e-02,4.88244593e-04,1.54571435e-04,9.32312381e-02,-3.23792054e-01 -1466000000,-6.80899549e-02,1.58723129e-01,3.30652659e-01,5.29909259e-02,5.14632885e-04,1.68555564e-04,8.98243250e-02,-3.18276914e-01 -1467000000,-6.66221313e-02,1.59734853e-01,3.30911345e-01,4.71082670e-02,5.08100335e-04,1.84338075e-04,9.60408730e-02,-3.15081737e-01 -1468000000,-6.60414580e-02,1.61388177e-01,3.30832278e-01,4.10854554e-02,5.13789707e-04,1.81457216e-04,1.05120457e-01,-3.12571372e-01 -1469000000,-6.14059994e-02,1.63077044e-01,3.24877177e-01,3.61958796e-02,5.09971634e-04,1.82655585e-04,1.09358063e-01,-3.16931890e-01 -1470000000,-6.27666532e-02,1.64876881e-01,3.24278103e-01,2.95687897e-02,5.32275637e-04,2.26703578e-04,1.27876004e-01,-3.25904988e-01 -1471000000,-6.32394652e-02,1.63703515e-01,3.24192078e-01,2.30786664e-02,5.31336371e-04,2.48504357e-04,1.43988354e-01,-3.11304899e-01 -1472000000,-6.08327422e-02,1.68273585e-01,3.24075398e-01,1.67037671e-02,5.50613866e-04,2.51326552e-04,1.32579040e-01,-3.21746613e-01 -1473000000,-5.93015253e-02,1.64920969e-01,3.24255867e-01,1.02018642e-02,5.46930778e-04,2.64024099e-04,1.56289985e-01,-2.91788686e-01 -1474000000,-4.97276005e-02,1.69061475e-01,3.23456110e-01,3.38808028e-03,5.56939331e-04,2.68595672e-04,1.29627584e-01,-3.01896881e-01 -1475000000,-5.58393590e-02,1.66875446e-01,3.23538096e-01,-3.30959425e-03,5.66641982e-04,3.06948897e-04,1.32157202e-01,-2.96321241e-01 -1476000000,-4.68244028e-02,1.68875443e-01,3.22455543e-01,-1.02049893e-02,5.72039420e-04,3.47269169e-04,1.22966113e-01,-2.96940127e-01 -1477000000,-5.06402813e-02,1.68691026e-01,3.22470851e-01,-1.72221583e-02,5.23475712e-04,3.28733702e-04,1.40658032e-01,-2.87984128e-01 -1478000000,-4.65932831e-02,1.77235141e-01,3.21596570e-01,-2.55512839e-02,5.34493086e-04,3.68850476e-04,1.54797848e-01,-2.91711817e-01 -1479000000,-3.92379126e-02,1.73142108e-01,3.19351408e-01,-3.20807970e-02,5.61983284e-04,4.01416897e-04,1.33019026e-01,-2.88530568e-01 -1480000000,-4.48695356e-02,1.72919762e-01,3.20377420e-01,-3.91875793e-02,5.51818357e-04,3.72213315e-04,1.52248046e-01,-2.79456907e-01 -1481000000,-3.37022313e-02,1.78593423e-01,3.16103544e-01,-4.84325053e-02,5.64315364e-04,3.80546573e-04,1.45173242e-01,-2.86634698e-01 -1482000000,-3.38295485e-02,1.73073272e-01,3.15837213e-01,-5.36311762e-02,5.04375731e-04,4.19634608e-04,1.60682928e-01,-2.61251394e-01 -1483000000,-3.15559217e-02,1.79834212e-01,3.16570552e-01,-6.47234987e-02,5.53320254e-04,4.22397831e-04,1.53909504e-01,-2.81024039e-01 -1484000000,-2.97051692e-02,1.79710291e-01,3.14900476e-01,-7.22501103e-02,5.49225632e-04,4.57796874e-04,1.57091102e-01,-2.76745627e-01 -1485000000,-2.70709192e-02,1.81255037e-01,3.12610483e-01,-8.08056246e-02,5.48021239e-04,4.71322298e-04,1.61792882e-01,-2.75388555e-01 -1486000000,-2.23454738e-02,1.82806802e-01,3.08972716e-01,-8.93843231e-02,5.41448950e-04,4.81018039e-04,1.64278472e-01,-2.73870018e-01 -1487000000,-1.87836329e-02,1.83309207e-01,3.05714479e-01,-9.77347369e-02,5.36879570e-04,4.76925257e-04,1.64932163e-01,-2.73970186e-01 -1488000000,-1.36926252e-02,1.83663472e-01,3.00932548e-01,-1.08710969e-01,4.03413310e-04,2.58755158e-04,2.18224334e-01,-2.23785716e-01 -1489000000,-9.83319732e-03,1.84412656e-01,2.96933429e-01,-1.17711455e-01,4.04197760e-04,2.56909917e-04,2.23857936e-01,-2.19313132e-01 -1490000000,-7.45742733e-03,1.82627104e-01,2.93752654e-01,-1.24717315e-01,3.84546053e-04,2.68041257e-04,2.25496244e-01,-2.12145577e-01 -1491000000,-4.98165066e-03,1.82956992e-01,2.90374460e-01,-1.33435996e-01,3.83227864e-04,2.55960636e-04,2.26501058e-01,-2.08108917e-01 -1492000000,2.36397903e-04,1.82854006e-01,2.84546023e-01,-1.41913292e-01,3.64189753e-04,2.27787432e-04,2.26377026e-01,-2.04287119e-01 -1493000000,3.93996957e-03,1.82777421e-01,2.79874659e-01,-1.50022764e-01,3.63021299e-04,2.06982712e-04,2.35335646e-01,-2.02893225e-01 -1494000000,1.75869405e-03,1.81371551e-01,2.77015576e-01,-1.54940185e-01,4.03636063e-04,2.22619156e-04,2.41663619e-01,-1.78293425e-01 -1495000000,9.37605446e-03,1.76201570e-01,2.68884381e-01,-1.58630000e-01,4.25444080e-04,1.08250746e-04,2.58751354e-01,-1.54641953e-01 -1496000000,1.16811853e-02,1.76258726e-01,2.65533682e-01,-1.66708483e-01,3.59323891e-04,1.41377128e-04,2.82375529e-01,-1.54696129e-01 -1497000000,1.58049554e-02,1.76293650e-01,2.59703811e-01,-1.74350683e-01,3.84352436e-04,1.94872782e-04,2.66762618e-01,-1.38151197e-01 -1498000000,1.57025760e-02,1.82854345e-01,2.57465501e-01,-1.90052942e-01,3.90984646e-04,1.37217907e-04,2.86647360e-01,-1.54707727e-01 -1499000000,2.52216143e-02,1.86258880e-01,2.45771539e-01,-2.01730284e-01,3.93922737e-04,1.47196355e-04,2.84054303e-01,-1.51530356e-01 -1500000000,3.01998009e-02,1.80837711e-01,2.39111445e-01,-2.06303231e-01,4.44087782e-04,1.38736103e-04,2.90621076e-01,-1.36827091e-01 -1501000000,3.40622692e-02,1.79383660e-01,2.31792619e-01,-2.13062676e-01,3.82924221e-04,1.72885368e-04,2.92059523e-01,-1.29614622e-01 -1502000000,3.75420334e-02,1.78580824e-01,2.24970663e-01,-2.20740361e-01,4.16197850e-04,1.59101441e-04,2.91431296e-01,-1.27682444e-01 -1503000000,4.16614525e-02,1.76766220e-01,2.17275862e-01,-2.26674696e-01,3.79320683e-04,1.68622503e-04,2.95881555e-01,-1.18272818e-01 -1504000000,4.40448697e-02,1.75085261e-01,2.11334034e-01,-2.33264231e-01,3.79339979e-04,1.52132171e-04,2.91986469e-01,-1.23191377e-01 -1505000000,4.84930294e-02,1.74558525e-01,2.02497747e-01,-2.40550820e-01,3.75258988e-04,1.35372987e-04,2.96499503e-01,-1.14715330e-01 -1506000000,5.18546413e-02,1.71598490e-01,1.95057298e-01,-2.44811394e-01,3.65839560e-04,1.47653773e-04,2.97713111e-01,-1.07675925e-01 -1507000000,5.55343236e-02,1.71225976e-01,1.86540104e-01,-2.52210385e-01,3.96935628e-04,1.46940765e-04,2.98335134e-01,-1.07817260e-01 -1508000000,5.89484463e-02,1.69643912e-01,1.78344035e-01,-2.58277447e-01,3.74258744e-04,1.23239511e-04,2.93134042e-01,-1.13454357e-01 -1509000000,6.08595624e-02,1.66736972e-01,1.72429902e-01,-2.61893319e-01,3.57133136e-04,1.27050923e-04,2.98814368e-01,-9.86702475e-02 -1510000000,6.52192749e-02,1.64330674e-01,1.62326679e-01,-2.66289222e-01,3.69001933e-04,1.01672821e-04,2.94312123e-01,-1.09263444e-01 -1511000000,6.86670515e-02,1.64014216e-01,1.53095231e-01,-2.73994065e-01,3.83186644e-04,8.84412592e-05,2.94719758e-01,-1.12725555e-01 -1512000000,7.07133891e-02,1.61828814e-01,1.46183573e-01,-2.78564440e-01,3.67478454e-04,9.06544631e-05,2.98828731e-01,-1.04055286e-01 -1513000000,7.39106091e-02,1.58106756e-01,1.37324679e-01,-2.79137680e-01,3.51997994e-04,8.72159371e-05,2.97742328e-01,-9.58264417e-02 -1514000000,7.72359276e-02,1.56382212e-01,1.27684922e-01,-2.83824647e-01,3.85277482e-04,7.61503102e-05,2.97894570e-01,-9.86050226e-02 -1515000000,7.84357054e-02,1.55426067e-01,1.21652180e-01,-2.90285006e-01,3.46870823e-04,7.63096705e-05,2.99253289e-01,-9.42471889e-02 -1516000000,8.53975296e-02,1.56409744e-01,1.13013992e-01,-3.04387721e-01,3.76711129e-04,6.67695760e-05,2.93412822e-01,-9.33843460e-02 -1517000000,8.40641087e-02,1.51135992e-01,1.11284541e-01,-3.01500406e-01,3.71436423e-04,6.01005845e-05,2.98564853e-01,-9.03163015e-02 -1518000000,8.94592077e-02,1.47304526e-01,9.59403289e-02,-3.01676155e-01,3.67037479e-04,3.28714534e-05,2.97896207e-01,-9.45846948e-02 -1519000000,8.79479686e-02,1.43934587e-01,8.47500523e-02,-2.97472633e-01,3.56310466e-04,2.64101770e-05,2.98470506e-01,-9.38948005e-02 -1520000000,9.05148621e-02,1.41981222e-01,7.45982178e-02,-3.00739572e-01,3.44677662e-04,2.69480363e-05,2.97016025e-01,-8.90419757e-02 -1521000000,9.18565941e-02,1.40018521e-01,6.72085491e-02,-3.03818678e-01,3.39634274e-04,5.34182327e-06,2.99412925e-01,-8.92734730e-02 -1522000000,9.35995685e-02,1.36377921e-01,5.88268225e-02,-3.03065019e-01,3.49818644e-04,1.37909708e-06,2.98436396e-01,-8.87617532e-02 -1523000000,9.58448227e-02,1.34438371e-01,4.88897544e-02,-3.05944645e-01,3.50414136e-04,-8.61494187e-07,2.98516917e-01,-9.04497450e-02 -1524000000,9.74572859e-02,1.32078534e-01,4.01875044e-02,-3.07838685e-01,3.41976362e-04,-1.38269428e-05,2.96788766e-01,-8.89998681e-02 -1525000000,9.84512414e-02,1.30125567e-01,3.30341132e-02,-3.09945557e-01,3.50186165e-04,-3.61076240e-05,3.00015665e-01,-8.78733829e-02 -1526000000,1.00265297e-01,1.26966619e-01,2.34895661e-02,-3.09002503e-01,3.40031715e-04,-3.96381505e-05,2.99218274e-01,-8.65292565e-02 -1527000000,1.00829627e-01,1.23978983e-01,1.67015671e-02,-3.08274961e-01,3.36311149e-04,-4.94816145e-05,2.99259264e-01,-8.78969520e-02 -1528000000,1.01111051e-01,1.22073216e-01,1.07791092e-02,-3.10008665e-01,3.25653223e-04,-4.45186802e-05,2.98921326e-01,-8.38221745e-02 -1529000000,1.03007798e-01,1.19975693e-01,1.47437889e-04,-3.10414486e-01,3.14023499e-04,-3.60763662e-05,2.95983522e-01,-8.29835737e-02 -1530000000,1.02649305e-01,1.17259044e-01,-4.39791552e-03,-3.10019916e-01,3.19676108e-04,-3.91806994e-05,2.98944738e-01,-8.10320343e-02 -1531000000,1.04288080e-01,1.15178377e-01,-1.45090805e-02,-3.09940426e-01,3.21939197e-04,-5.85749368e-05,3.01350799e-01,-7.75781009e-02 -1532000000,1.05488520e-01,1.12634645e-01,-2.38507093e-02,-3.10450160e-01,2.93015006e-04,-6.92433926e-05,3.00657809e-01,-7.38486536e-02 -1533000000,1.05592727e-01,1.10044609e-01,-3.03003912e-02,-3.08854639e-01,2.94118658e-04,-7.89521181e-05,3.01800737e-01,-7.53926696e-02 -1534000000,1.04334782e-01,1.09068153e-01,-3.28385013e-02,-3.11142462e-01,2.97935466e-04,-9.51088241e-05,3.03756414e-01,-7.10583320e-02 -1535000000,1.05064033e-01,1.08114413e-01,-4.15294037e-02,-3.12561482e-01,2.73490490e-04,-6.47010095e-05,2.99526679e-01,-6.89873109e-02 -1536000000,1.04806313e-01,1.05985325e-01,-4.73554067e-02,-3.11695978e-01,2.84104835e-04,-8.02592860e-05,2.99896112e-01,-6.90599079e-02 -1537000000,1.03936761e-01,1.02641802e-01,-5.13761789e-02,-3.06301022e-01,2.86187253e-04,-1.02048274e-04,3.05147285e-01,-6.32942649e-02 -1538000000,1.04336070e-01,1.00725322e-01,-5.95731907e-02,-3.05176419e-01,2.71087434e-04,-8.95380505e-05,3.03339762e-01,-6.88679807e-02 -1539000000,1.04468931e-01,1.00384720e-01,-6.71926562e-02,-3.08764827e-01,2.59279972e-04,-9.09782537e-05,3.03536167e-01,-6.48712237e-02 -1540000000,1.03533371e-01,9.71788405e-02,-7.14400211e-02,-3.03012807e-01,2.70125305e-04,-8.10248082e-05,3.03210954e-01,-5.84625043e-02 -1541000000,1.04658382e-01,9.46600653e-02,-7.79557759e-02,-3.08206196e-01,2.64905012e-04,-7.06473789e-05,3.00147182e-01,-5.47624596e-02 -1542000000,1.02653013e-01,9.52009984e-02,-7.90137057e-02,-3.13687827e-01,2.58245317e-04,-1.03091318e-04,3.02910322e-01,-5.47973261e-02 -1543000000,1.00801108e-01,9.23765592e-02,-8.12128691e-02,-3.07617428e-01,2.39651167e-04,-8.46816826e-05,3.05363991e-01,-5.03442569e-02 -1544000000,9.89291962e-02,9.32559454e-02,-8.90206913e-02,-3.01419424e-01,2.39512741e-04,-9.39126612e-05,3.08743344e-01,-4.65668233e-02 -1545000000,9.74316822e-02,9.10885906e-02,-9.19976933e-02,-2.97107652e-01,2.40276221e-04,-8.58522596e-05,3.09352543e-01,-4.17818071e-02 -1546000000,9.65603820e-02,9.00065999e-02,-9.69465083e-02,-2.96290832e-01,2.31829677e-04,-9.05590854e-05,3.06808466e-01,-4.04362232e-02 -1547000000,9.62284930e-02,8.96035841e-02,-1.03886040e-01,-2.97798423e-01,2.43194265e-04,-8.40666791e-05,3.06388018e-01,-3.84670486e-02 -1548000000,9.46945576e-02,8.79188543e-02,-1.07023657e-01,-2.94258397e-01,2.23754129e-04,-7.18153320e-05,3.08428699e-01,-3.80695704e-02 -1549000000,9.31146577e-02,8.77807172e-02,-1.09864795e-01,-2.96641339e-01,2.24818457e-04,-6.45794033e-05,3.07401761e-01,-3.15647482e-02 -1550000000,9.09117583e-02,8.60338037e-02,-1.10846795e-01,-2.92883413e-01,2.17088121e-04,-7.06862092e-05,3.08681808e-01,-2.68560790e-02 -1551000000,9.04338560e-02,8.59722021e-02,-1.17791557e-01,-2.94589054e-01,2.16147601e-04,-7.76066669e-05,3.09630010e-01,-2.28899156e-02 -1552000000,8.79719244e-02,8.38574817e-02,-1.17932368e-01,-2.89152482e-01,2.24961751e-04,-7.54011092e-05,3.11341088e-01,-1.69969327e-02 -1553000000,8.68219448e-02,8.25589636e-02,-1.22771540e-01,-2.86856914e-01,2.27681502e-04,-5.65957299e-05,3.08415042e-01,-1.44651401e-02 -1554000000,8.49051773e-02,8.27133594e-02,-1.25061320e-01,-2.89185589e-01,2.10389775e-04,-5.50600005e-05,3.09092047e-01,-1.26858811e-02 -1555000000,8.31407531e-02,8.16272865e-02,-1.27693754e-01,-2.87229232e-01,2.08511218e-04,-6.17011616e-05,3.07441242e-01,-6.91755525e-03 -1556000000,8.18713753e-02,7.99449351e-02,-1.32658298e-01,-2.82828577e-01,2.23287602e-04,-5.84489899e-05,3.07336740e-01,-5.58248668e-03 -1557000000,8.16092820e-02,8.00879985e-02,-1.41150561e-01,-2.85703414e-01,2.21999821e-04,-7.40946906e-05,3.08159235e-01,5.75411427e-03 -1558000000,7.87696788e-02,7.78158602e-02,-1.40520196e-01,-2.78972890e-01,2.10456766e-04,-5.43077309e-05,3.07538802e-01,8.78270541e-03 -1559000000,7.78122295e-02,7.86614162e-02,-1.46626945e-01,-2.84133831e-01,1.88328571e-04,-6.91820945e-05,3.10573140e-01,1.42159689e-02 -1560000000,7.50285255e-02,7.64852042e-02,-1.46238162e-01,-2.77608136e-01,2.17637563e-04,-5.22991369e-05,3.09535995e-01,2.11871339e-02 -1561000000,7.51380497e-02,7.57973356e-02,-1.56748322e-01,-2.76743490e-01,1.83959307e-04,-5.45656764e-05,3.07774441e-01,2.21374459e-02 -1562000000,7.31655477e-02,7.56178888e-02,-1.59494890e-01,-2.77559972e-01,2.04817539e-04,-6.92051058e-05,3.08081448e-01,3.00591662e-02 -1563000000,7.09965337e-02,7.31980112e-02,-1.61535957e-01,-2.70157339e-01,1.99295020e-04,-5.93979182e-05,3.06948905e-01,3.80917642e-02 -1564000000,6.85941627e-02,7.21408265e-02,-1.62786222e-01,-2.67450771e-01,1.84702051e-04,-2.61693633e-05,3.07359717e-01,4.12700476e-02 -1565000000,6.60470563e-02,7.20554781e-02,-1.63552851e-01,-2.68440836e-01,1.94631371e-04,-5.39063751e-05,3.03836690e-01,5.10935452e-02 -1566000000,6.71914909e-02,6.91522098e-02,-1.76856738e-01,-2.73113536e-01,1.93094283e-04,-4.90791343e-05,2.98416836e-01,5.06006539e-02 -1567000000,6.56298770e-02,6.85906007e-02,-1.81717523e-01,-2.71724876e-01,1.76306080e-04,-5.47046984e-05,2.96161533e-01,6.00043748e-02 -1568000000,6.37491436e-02,6.77319415e-02,-1.85118887e-01,-2.68941173e-01,1.66413917e-04,-4.34911831e-05,2.94596002e-01,6.77038617e-02 -1569000000,6.16427553e-02,6.72880961e-02,-1.88098048e-01,-2.67611534e-01,1.91808775e-04,-3.38472649e-05,2.93779581e-01,7.47979157e-02 -1570000000,6.01840106e-02,6.63221797e-02,-1.93462248e-01,-2.64150137e-01,1.60137628e-04,-3.49685381e-05,2.95265566e-01,7.66323953e-02 -1571000000,5.81563762e-02,6.44350812e-02,-1.96984253e-01,-2.56802619e-01,1.68074810e-04,-3.38476915e-05,2.93138156e-01,8.58867999e-02 -1572000000,5.63756146e-02,6.49070950e-02,-2.01309312e-01,-2.58501336e-01,1.60275617e-04,-2.35049510e-05,2.91850264e-01,9.01761865e-02 -1573000000,5.53053125e-02,6.35716248e-02,-2.08438467e-01,-2.52821890e-01,1.58019967e-04,-4.07570845e-05,2.91167908e-01,9.63284487e-02 -1574000000,5.17687979e-02,6.46316867e-02,-2.06542099e-01,-2.38392742e-01,1.69061493e-04,-8.84684730e-06,2.95482114e-01,1.09357410e-01 -1575000000,5.02511394e-02,6.45668289e-02,-2.11567062e-01,-2.37167305e-01,1.62517876e-04,-9.80940217e-06,2.93448626e-01,1.18558306e-01 -1576000000,4.89928342e-02,6.29652898e-02,-2.17506964e-01,-2.30356130e-01,8.38654389e-05,-7.01683839e-05,2.91592096e-01,1.26314769e-01 -1577000000,4.68096643e-02,6.18373872e-02,-2.19575288e-01,-2.23702281e-01,1.57349127e-04,-1.30416555e-05,2.91422181e-01,1.30504380e-01 -1578000000,4.59822401e-02,6.11846283e-02,-2.27142673e-01,-2.19021684e-01,1.42477519e-04,-2.39914241e-05,2.85520616e-01,1.41756900e-01 -1579000000,4.43272676e-02,6.01313552e-02,-2.31133160e-01,-2.12711971e-01,1.17932239e-04,-6.02011659e-06,2.83664237e-01,1.50180789e-01 -1580000000,4.32830866e-02,5.95440078e-02,-2.37700193e-01,-2.07440296e-01,1.43895430e-04,-4.43118895e-05,2.77322975e-01,1.61822847e-01 -1581000000,4.14667086e-02,5.85358606e-02,-2.41405301e-01,-2.00239631e-01,1.48577479e-04,-1.07669865e-05,2.74158804e-01,1.65670975e-01 -1582000000,4.01865024e-02,5.80145068e-02,-2.46958540e-01,-1.94710015e-01,1.23311878e-04,1.09369770e-05,2.71018872e-01,1.76761775e-01 -1583000000,3.86855836e-02,5.73030837e-02,-2.51820495e-01,-1.88131833e-01,1.17684435e-04,-4.76196136e-06,2.63206546e-01,1.88299729e-01 -1584000000,3.69291476e-02,5.69306046e-02,-2.55588410e-01,-1.81739842e-01,1.25918840e-04,1.21589305e-05,2.54640220e-01,2.00176307e-01 -1585000000,3.67354760e-02,5.60383413e-02,-2.64276475e-01,-1.73770220e-01,9.85611587e-05,1.10407410e-05,2.48655782e-01,2.12388899e-01 -1586000000,3.62359046e-02,5.46199634e-02,-2.82060120e-01,-1.77546178e-01,8.25668294e-05,1.70488308e-05,2.18203938e-01,2.13261379e-01 -1587000000,3.47013755e-02,5.36548052e-02,-2.86631078e-01,-1.67343870e-01,8.25887797e-05,2.13310760e-05,2.10025330e-01,2.21169380e-01 -1588000000,3.29231678e-02,5.34395208e-02,-2.90216503e-01,-1.61311074e-01,9.00027213e-05,3.28715955e-05,1.96365105e-01,2.31903922e-01 -1589000000,3.19945918e-02,5.36351508e-02,-2.95928861e-01,-1.54571200e-01,9.25479427e-05,4.36675128e-05,1.85284573e-01,2.44416519e-01 -1590000000,3.10123886e-02,5.33090020e-02,-3.01362911e-01,-1.44546956e-01,1.01757140e-04,5.00986045e-05,1.74254936e-01,2.53879477e-01 -1591000000,2.89786963e-02,5.33294274e-02,-3.03495215e-01,-1.37439666e-01,1.30878294e-04,4.04487327e-05,1.60177406e-01,2.63833996e-01 -1592000000,2.80018234e-02,5.26445013e-02,-3.08124869e-01,-1.27582217e-01,1.11636361e-04,5.09601155e-05,1.51934518e-01,2.69248123e-01 -1593000000,2.65889396e-02,5.31534657e-02,-3.11397922e-01,-1.20571459e-01,1.20789893e-04,6.71642557e-05,1.41228489e-01,2.76834588e-01 -1594000000,2.54930634e-02,5.25549282e-02,-3.14913232e-01,-1.11456176e-01,1.27695121e-04,7.74393936e-05,1.32485274e-01,2.80598217e-01 -1595000000,2.30314693e-02,5.30411723e-02,-3.15384062e-01,-1.09533006e-01,1.67804823e-04,8.94614181e-05,1.18058949e-01,2.88172094e-01 -1596000000,2.22865579e-02,5.32817407e-02,-3.19205868e-01,-1.00778137e-01,1.96189295e-04,7.25988864e-05,1.12599363e-01,2.93153700e-01 -1597000000,2.13012202e-02,5.33185672e-02,-3.22476766e-01,-9.11080556e-02,1.83905265e-04,5.63744975e-05,1.08159047e-01,2.96459773e-01 -1598000000,1.97530319e-02,5.32320837e-02,-3.24380998e-01,-8.25932094e-02,1.88162065e-04,6.86018774e-05,9.84499490e-02,2.98526454e-01 -1599000000,1.83498997e-02,5.40059351e-02,-3.26336669e-01,-7.90816344e-02,1.90505896e-04,7.05047915e-05,9.06242667e-02,3.05140616e-01 -1600000000,1.73304480e-02,5.36490432e-02,-3.28607445e-01,-6.57478174e-02,2.03009489e-04,7.13911580e-05,8.50563705e-02,3.04101667e-01 -1601000000,1.63679793e-02,5.46093742e-02,-3.30827969e-01,-5.94008607e-02,1.97314420e-04,7.43187030e-05,7.41162917e-02,3.12374779e-01 -1602000000,1.46021822e-02,5.49832020e-02,-3.31734648e-01,-5.33020371e-02,2.52488943e-04,7.31252686e-05,7.25616684e-02,3.11833520e-01 -1603000000,1.39183704e-02,5.53236144e-02,-3.33828019e-01,-4.37027512e-02,2.37611283e-04,7.78145825e-05,6.99840792e-02,3.15007373e-01 -1604000000,1.23505945e-02,5.73057526e-02,-3.21994754e-01,-3.52776964e-02,2.51307948e-04,7.51052551e-05,5.90923038e-02,3.23304555e-01 -1605000000,1.20180401e-02,5.80974749e-02,-3.24016836e-01,-2.70715705e-02,2.32459660e-04,6.84875595e-05,6.59824140e-02,3.24221935e-01 -1606000000,1.00012220e-02,5.81493076e-02,-3.24273138e-01,-1.92104471e-02,2.51275842e-04,5.76732764e-05,5.29248063e-02,3.22910968e-01 -1607000000,1.00096760e-02,5.70908745e-02,-3.24716266e-01,-1.12720803e-02,2.56385024e-04,4.51357214e-05,5.42362891e-02,3.13153763e-01 -1608000000,8.94910925e-03,5.70563829e-02,-3.25049068e-01,-2.74100496e-03,2.60421764e-04,7.38929835e-05,5.22813731e-02,3.07006581e-01 -1609000000,8.90611653e-03,5.83704674e-02,-3.25561688e-01,5.41047322e-03,2.55894302e-04,4.51707713e-05,6.12498176e-02,3.12949100e-01 -1610000000,8.46753658e-03,5.86178536e-02,-3.25428818e-01,1.36500506e-02,2.66729155e-04,5.21887019e-05,6.02130273e-02,3.11869873e-01 -1611000000,6.01007962e-03,5.92038276e-02,-3.26174123e-01,2.20051171e-02,2.45962003e-04,5.06994146e-05,5.42919127e-02,3.12007221e-01 -1612000000,5.85154515e-03,5.94929562e-02,-3.25672267e-01,2.92752859e-02,2.61849789e-04,4.79666990e-05,5.74715774e-02,3.06823957e-01 -1613000000,4.67441078e-03,6.13186603e-02,-3.25487157e-01,3.87992216e-02,2.59754285e-04,7.13148603e-05,6.35789997e-02,3.09776899e-01 -1614000000,5.79212565e-03,6.05397806e-02,-3.23637145e-01,4.50881475e-02,2.65232268e-04,1.10013908e-04,6.83576006e-02,3.06287542e-01 -1615000000,4.28282799e-03,6.32384783e-02,-3.23531960e-01,5.63634776e-02,2.64595758e-04,7.06542916e-05,6.38068723e-02,3.21357320e-01 -1616000000,3.30440284e-03,6.21024052e-02,-3.35611747e-01,6.54227288e-02,2.67487651e-04,6.98856918e-05,6.86941684e-02,3.16876172e-01 -1617000000,2.46753435e-03,6.27210814e-02,-3.34582627e-01,7.31012362e-02,2.85457754e-04,8.16349581e-05,7.78109955e-02,3.14376010e-01 -1618000000,2.01751150e-03,6.35929254e-02,-3.32714548e-01,8.31122582e-02,2.46204534e-04,7.37212417e-05,7.32450878e-02,3.18181404e-01 -1619000000,1.73902883e-03,6.39463072e-02,-3.30539513e-01,9.15273745e-02,2.56172399e-04,6.01658390e-05,7.67910347e-02,3.16041911e-01 -1620000000,1.61721449e-03,6.49664238e-02,-3.28105696e-01,1.00774161e-01,2.64095529e-04,6.84442674e-05,8.04731909e-02,3.15079386e-01 -1621000000,1.31285464e-03,6.56910520e-02,-3.25586042e-01,1.10563068e-01,2.62234199e-04,8.96422703e-05,8.46710456e-02,3.14912107e-01 -1622000000,1.20898909e-03,6.63806833e-02,-3.22678020e-01,1.19477894e-01,2.66165136e-04,7.30847612e-05,9.26126234e-02,3.12102718e-01 -1623000000,8.40727443e-04,6.70274602e-02,-3.20184993e-01,1.27238768e-01,2.73890224e-04,7.12332226e-05,8.97192693e-02,3.13956880e-01 -1624000000,1.14759662e-03,6.75242154e-02,-3.04878489e-01,1.31842388e-01,2.66499474e-04,8.00416012e-05,9.49255921e-02,3.00503936e-01 -1625000000,1.18310567e-03,6.79093549e-02,-3.00712881e-01,1.40920531e-01,2.40692546e-04,7.50123213e-05,9.04737046e-02,3.08598471e-01 -1626000000,1.34973638e-03,6.86050000e-02,-2.97008856e-01,1.51118771e-01,2.44208197e-04,8.38659020e-05,9.53869934e-02,3.04630346e-01 -1627000000,2.17651364e-03,6.86014915e-02,-2.91190810e-01,1.57843367e-01,2.43381627e-04,9.02699392e-05,9.84783359e-02,3.04022504e-01 -1628000000,1.51968860e-03,6.93174672e-02,-2.88872733e-01,1.66097455e-01,2.42831566e-04,7.39363805e-05,9.77647747e-02,3.08008238e-01 -1629000000,2.41257992e-03,6.96826197e-02,-2.83213111e-01,1.73780585e-01,2.59489428e-04,7.93960339e-05,1.01908372e-01,3.07031511e-01 -1630000000,2.89993118e-03,7.09584011e-02,-2.77394904e-01,1.83709462e-01,2.51179163e-04,1.05612071e-04,1.20456261e-01,3.01734655e-01 -1631000000,3.04006651e-03,7.17668348e-02,-2.72724921e-01,1.93003945e-01,2.51019172e-04,1.07277008e-04,1.20972738e-01,3.10820059e-01 -1632000000,2.27736664e-03,7.20546483e-02,-2.70945383e-01,2.00527642e-01,2.51916373e-04,9.35772927e-05,1.01021563e-01,3.14548042e-01 -1633000000,3.79169562e-03,7.25447940e-02,-2.62358659e-01,2.07195085e-01,2.53689930e-04,9.62644074e-05,1.14823271e-01,3.09657001e-01 -1634000000,2.71297050e-03,7.26372567e-02,-2.61561448e-01,2.14012121e-01,2.49074665e-04,8.14075813e-05,1.02084781e-01,3.08740882e-01 -1635000000,4.46084073e-03,7.31910283e-02,-2.51388571e-01,2.22573218e-01,2.45576841e-04,1.10091369e-04,1.07777194e-01,3.17743529e-01 -1636000000,4.78214346e-03,7.29666341e-02,-2.46110284e-01,2.27321026e-01,2.30169067e-04,1.11518900e-04,1.07232536e-01,3.13950312e-01 -1637000000,3.85568197e-03,7.39924112e-02,-2.44713682e-01,2.35400167e-01,2.52802603e-04,1.17685898e-04,1.09102541e-01,3.06816959e-01 -1638000000,4.21873058e-03,7.39051989e-02,-2.38636232e-01,2.41129190e-01,2.60401683e-04,1.21634702e-04,1.27532155e-01,3.01980336e-01 -1639000000,6.08369660e-03,7.38857295e-02,-2.27454544e-01,2.46951454e-01,2.46622237e-04,1.29748354e-04,1.28930852e-01,3.12132929e-01 -1640000000,6.59461605e-03,7.39330081e-02,-2.21111492e-01,2.52543591e-01,2.38706022e-04,1.37206368e-04,1.14703215e-01,3.12226326e-01 -1641000000,5.68190016e-03,7.57835296e-02,-2.30375176e-01,2.74752663e-01,2.23919924e-04,1.40146606e-04,1.12663173e-01,3.16416449e-01 -1642000000,6.96191850e-03,7.56750936e-02,-2.20687891e-01,2.80384729e-01,2.29188549e-04,1.46869026e-04,1.20102132e-01,3.15889532e-01 -1643000000,7.80856445e-03,7.65038614e-02,-2.12504088e-01,2.89224506e-01,2.49998052e-04,1.29887484e-04,1.14844570e-01,3.13751152e-01 -1644000000,7.89501300e-03,7.66611656e-02,-2.06589058e-01,2.95522877e-01,2.30862111e-04,1.31449690e-04,1.25056985e-01,3.18042918e-01 -1645000000,9.27556928e-03,7.64119704e-02,-1.96090303e-01,3.00046522e-01,2.55744475e-04,1.38774245e-04,1.40082405e-01,3.02973005e-01 -1646000000,9.22163651e-03,7.67239486e-02,-1.90670958e-01,3.07253329e-01,2.40897290e-04,1.36246271e-04,1.30739485e-01,3.02756876e-01 -1647000000,9.78602817e-03,7.57914748e-02,-1.81906696e-01,3.10320075e-01,2.33341056e-04,1.44112587e-04,1.08051868e-01,3.09083447e-01 -1648000000,1.06313589e-02,7.66795993e-02,-1.73368367e-01,3.18580406e-01,2.48911558e-04,1.51670776e-04,1.37833911e-01,3.02408721e-01 -1649000000,1.10024815e-02,7.59232682e-02,-1.65274147e-01,3.21619832e-01,2.35412501e-04,1.53758676e-04,1.18359781e-01,3.20510030e-01 -1650000000,1.25512078e-02,7.57418822e-02,-1.52448527e-01,3.26783738e-01,2.59085508e-04,1.36158134e-04,1.24820594e-01,3.13127240e-01 -1651000000,1.26310541e-02,7.51265531e-02,-1.45615084e-01,3.29722253e-01,2.48707340e-04,1.72418802e-04,1.23540122e-01,3.11895645e-01 -1652000000,1.31494620e-02,7.55948732e-02,-1.36379066e-01,3.37791076e-01,2.44877104e-04,1.66843622e-04,1.20564728e-01,3.16855129e-01 -1653000000,1.36441034e-02,7.43123834e-02,-1.26548393e-01,3.38260332e-01,2.13445176e-04,1.89114561e-04,1.20000551e-01,3.22182623e-01 -1654000000,1.39179649e-02,7.47345949e-02,-1.18202635e-01,3.45894092e-01,2.05823322e-04,2.05984704e-04,1.22194236e-01,3.25890384e-01 -1655000000,1.48282863e-02,7.41901119e-02,-1.06929796e-01,3.48817382e-01,2.11917012e-04,2.11662382e-04,1.32869569e-01,3.25547062e-01 -1656000000,1.49119955e-02,7.32822278e-02,-1.00631192e-01,3.49567444e-01,2.24713773e-04,2.20228590e-04,1.49188230e-01,3.17602614e-01 -1657000000,1.63549064e-02,7.26581082e-02,-8.80436157e-02,3.52107147e-01,2.59995106e-04,2.15264589e-04,1.67181638e-01,2.95949030e-01 -1658000000,1.72449831e-02,7.23208079e-02,-7.47060911e-02,3.57173265e-01,2.76134184e-04,2.02886925e-04,1.54609703e-01,2.98435541e-01 -1659000000,1.57505590e-02,7.02459225e-02,-6.04158097e-02,3.38883405e-01,2.70648270e-04,2.24079575e-04,1.36401730e-01,3.26893973e-01 -1660000000,1.62151007e-02,7.03201708e-02,-5.06860823e-02,3.45085696e-01,2.81438497e-04,2.57063380e-04,1.34788651e-01,3.28030543e-01 -1661000000,1.58030572e-02,6.98979200e-02,-4.28040500e-02,3.48102974e-01,2.85587569e-04,2.79237234e-04,1.40124281e-01,3.37032530e-01 -1662000000,1.56816343e-02,6.81720453e-02,-3.39373429e-02,3.45383542e-01,2.78825822e-04,2.38806693e-04,1.20347686e-01,2.91452405e-01 -1663000000,1.66909655e-02,6.71637350e-02,-2.14516494e-02,3.45075981e-01,3.37415467e-04,2.74324272e-04,1.39982607e-01,3.31531004e-01 -1664000000,1.64586775e-02,6.67258768e-02,-9.97993749e-03,3.48261953e-01,3.20711877e-04,2.85574832e-04,1.25941497e-01,3.19634198e-01 -1665000000,1.69898800e-02,6.60972981e-02,-3.40048045e-03,3.52035211e-01,3.40387207e-04,2.73144934e-04,1.39662052e-01,3.14432910e-01 -1666000000,1.74790183e-02,6.38547852e-02,1.10854183e-02,3.45883725e-01,3.24489915e-04,2.84937295e-04,1.32000512e-01,3.09787125e-01 -1667000000,1.59194253e-02,6.52169918e-02,1.75641417e-02,3.54231558e-01,3.97139729e-04,3.49732016e-04,1.16681776e-01,3.26983126e-01 -1668000000,1.89152359e-02,6.35168077e-02,3.39405628e-02,3.46989290e-01,4.42499072e-04,2.81982293e-04,2.13319733e-01,2.99914587e-01 -1669000000,1.80473338e-02,6.21378237e-02,4.51440702e-02,3.49925540e-01,4.00633080e-04,3.02300654e-04,1.60263211e-01,2.93686596e-01 -1670000000,1.56901551e-02,6.32430191e-02,5.01276591e-02,3.55006382e-01,4.36540209e-04,3.86922489e-04,1.08863647e-01,3.34294399e-01 -1671000000,1.77882921e-02,6.17882536e-02,6.25434557e-02,3.70622874e-01,4.23397402e-04,3.93347835e-04,1.15997470e-01,3.03616392e-01 -1672000000,1.95136327e-02,5.97507907e-02,7.64189380e-02,3.68491562e-01,5.02778828e-04,3.21761576e-04,2.01189776e-01,3.01133786e-01 -1673000000,1.78260458e-02,5.96145273e-02,8.79700310e-02,3.67874543e-01,5.04271331e-04,3.92996991e-04,1.24627880e-01,3.17985760e-01 -1674000000,1.73909961e-02,5.87909752e-02,9.53659016e-02,3.63355355e-01,5.13974218e-04,4.18259315e-04,9.48631296e-02,3.02545650e-01 -1675000000,1.78445842e-02,5.71415497e-02,1.08011419e-01,3.61850282e-01,5.47015010e-04,4.19897190e-04,9.55147837e-02,3.19500495e-01 -1676000000,1.74817299e-02,5.51152540e-02,1.20069972e-01,3.58125050e-01,5.75369875e-04,3.42910385e-04,1.21001641e-01,3.33238855e-01 -1677000000,1.71053886e-02,5.39493702e-02,1.30821168e-01,3.54076051e-01,6.00806385e-04,3.38537190e-04,1.15383683e-01,3.31937457e-01 -1678000000,1.55720406e-02,5.47706560e-02,1.39946375e-01,3.51268581e-01,6.41894970e-04,3.69943462e-04,9.66995746e-02,2.95811323e-01 -1679000000,1.49502789e-02,5.32761332e-02,1.53088581e-01,3.46660515e-01,6.81485074e-04,2.15511422e-04,1.97538649e-01,3.05150340e-01 -1680000000,1.56988256e-02,5.30274565e-02,1.58076622e-01,3.45011147e-01,6.98883593e-04,3.30451023e-04,6.13702654e-02,3.07644113e-01 -1681000000,1.38338417e-02,5.16944826e-02,1.66272428e-01,3.38961783e-01,7.42835760e-04,3.49311350e-04,5.79647520e-02,2.78429798e-01 -1682000000,1.34985312e-02,5.00474275e-02,1.78725698e-01,3.33813092e-01,7.67831574e-04,3.05722984e-04,6.87835928e-02,2.81253424e-01 -1683000000,1.17729193e-02,4.96114529e-02,1.92528680e-01,3.27139298e-01,7.70903336e-04,1.54586640e-04,1.79159233e-01,3.05205847e-01 -1684000000,1.22832257e-02,4.84428858e-02,2.01090205e-01,3.23902113e-01,7.94928397e-04,2.04185398e-04,1.10380243e-01,3.16384325e-01 -1685000000,1.06790308e-02,4.79041280e-02,2.12022820e-01,3.18798689e-01,8.32983087e-04,1.58148703e-04,1.40994812e-01,2.98254558e-01 -1686000000,1.04060733e-02,4.76129687e-02,2.16807758e-01,3.15444352e-01,8.66757159e-04,1.74326670e-04,-4.48639465e-03,2.68753752e-01 -1687000000,9.49771617e-03,4.53263441e-02,2.27090858e-01,3.08113455e-01,8.86717487e-04,1.27707702e-04,-7.45261981e-03,2.52477936e-01 -1688000000,8.40772012e-03,4.36730896e-02,2.39256645e-01,3.00028857e-01,8.32171663e-04,1.19692338e-05,4.08482480e-02,1.92027646e-01 -1689000000,7.10343305e-03,4.52988723e-02,2.49342352e-01,2.96086326e-01,8.65140764e-04,3.35766172e-06,-1.63089623e-02,2.53831273e-01 -1690000000,5.78329605e-03,4.44031024e-02,2.57451278e-01,2.85086734e-01,8.81763465e-04,-2.83382517e-05,1.79632878e-03,2.88553275e-01 -1691000000,4.97786916e-03,4.09028036e-02,2.70157472e-01,2.81949182e-01,9.53157281e-04,-2.73814726e-05,2.54506352e-02,2.72561473e-01 -1692000000,2.92228211e-03,3.82606289e-02,2.82049086e-01,2.80861071e-01,9.35966661e-04,-2.01901063e-04,6.10626030e-03,2.74231536e-01 -1693000000,1.36993278e-03,3.64060355e-02,2.93705298e-01,2.73063003e-01,8.71602373e-04,-2.70800288e-04,1.22924052e-01,2.42075213e-01 -1694000000,-2.32841710e-03,4.04606680e-02,2.83943988e-01,2.43048429e-01,7.16629044e-04,-2.17657719e-04,8.37738439e-02,1.71036856e-01 -1695000000,-4.19090026e-03,3.99320093e-02,2.90975158e-01,2.33069875e-01,6.59258103e-04,-2.32558489e-04,9.56792709e-02,1.49770376e-01 -1696000000,-6.06042099e-03,3.96136565e-02,2.97337739e-01,2.22520152e-01,6.44235799e-04,-2.79174080e-04,9.47629305e-02,1.15797637e-01 -1697000000,-7.87116897e-03,3.99056254e-02,3.04497796e-01,2.12711695e-01,6.12682490e-04,-3.00730993e-04,8.51008185e-02,1.26032571e-01 -1698000000,-9.88324722e-03,3.98885444e-02,3.10743637e-01,2.03598410e-01,5.91748145e-04,-3.10141970e-04,6.86500103e-02,1.09678993e-01 -1699000000,-1.18319075e-02,3.60848805e-02,3.34981610e-01,1.96544867e-01,5.78976464e-04,-3.75438075e-04,1.06500330e-01,3.20286452e-02 -1700000000,-1.48494236e-02,3.80334011e-02,3.33600172e-01,1.93236961e-01,3.70751639e-04,-5.36777986e-04,7.76799933e-02,2.04935407e-02 -1701000000,-1.54593288e-02,3.77533799e-02,3.46562747e-01,1.80655656e-01,5.26259385e-04,-4.14048114e-04,3.01328126e-02,3.51905687e-02 -1702000000,-1.91083671e-02,3.92779158e-02,3.44063377e-01,1.75258604e-01,5.51617076e-04,-3.44249216e-04,1.54246598e-02,7.35947556e-02 -1703000000,-2.12117611e-02,3.95826610e-02,3.47529368e-01,1.63272658e-01,5.44191713e-04,-4.73092701e-04,5.94261321e-02,1.00288168e-01 -1704000000,-2.12681147e-02,3.95226483e-02,3.57873399e-01,1.53515178e-01,4.82602749e-04,-4.79658008e-04,1.13033482e-01,4.80458970e-02 -1705000000,-2.45211732e-02,4.14575048e-02,3.56611993e-01,1.46364726e-01,4.12852523e-04,-4.59226994e-04,1.44598302e-02,3.82190289e-02 -1706000000,-2.75643272e-02,4.13027704e-02,3.57753402e-01,1.32127284e-01,4.19915182e-04,-4.89102378e-04,4.74553908e-02,5.96035042e-02 -1707000000,-2.87749001e-02,4.22383787e-02,3.62648059e-01,1.22535173e-01,3.89590367e-04,-4.94913207e-04,4.33089853e-02,5.83612674e-02 -1708000000,-2.98057725e-02,4.37459674e-02,3.67022478e-01,1.14713663e-01,3.30660069e-04,-5.04725657e-04,2.62333325e-02,1.98590111e-02 -1709000000,-2.99944579e-02,4.30106143e-02,3.73137094e-01,1.01308064e-01,3.08279740e-04,-4.34275824e-04,2.69316836e-02,3.82627384e-02 -1710000000,-3.56776751e-02,4.34190079e-02,3.67736400e-01,9.01723926e-02,3.48865016e-04,-4.23091011e-04,3.13191266e-02,4.89512894e-02 -1711000000,-3.64865883e-02,4.25560978e-02,3.71623122e-01,7.59850885e-02,3.03011559e-04,-4.09430417e-04,8.56152266e-02,5.10422798e-02 -1712000000,-3.84941770e-02,4.35379353e-02,3.72872542e-01,6.53656597e-02,2.80372203e-04,-3.98450487e-04,8.90898767e-02,4.81968054e-02 -1713000000,-4.11170909e-02,4.87800108e-02,3.73577907e-01,5.99888176e-02,2.77749698e-04,-4.40463194e-04,3.41193112e-02,4.08044055e-02 -1714000000,-3.93509561e-02,4.88871989e-02,3.77885720e-01,4.72261382e-02,1.80346896e-04,-4.32488041e-04,4.02409579e-02,1.51111573e-02 -1715000000,-4.58437623e-02,5.00595606e-02,3.75829842e-01,3.65477259e-02,2.25486422e-04,-3.96562838e-04,4.27048838e-02,4.71651775e-02 -1716000000,-4.37201617e-02,5.33606374e-02,3.78213202e-01,2.52032170e-02,2.22353154e-04,-4.69308719e-04,4.19437868e-02,5.27704326e-02 -1717000000,-4.79449325e-02,5.57718166e-02,3.78376931e-01,1.39217335e-02,2.30699187e-04,-4.08397467e-04,4.86644849e-02,5.66480854e-02 -1718000000,-4.66690669e-02,5.52056445e-02,3.77652214e-01,5.90961495e-04,1.76934157e-04,-3.27537052e-04,1.03506603e-01,5.90266940e-02 -1719000000,-5.16396752e-02,5.62644679e-02,3.79967631e-01,-1.20462336e-02,1.67154193e-04,-3.55247040e-04,7.75512480e-02,4.13994194e-02 -1720000000,-5.32951710e-02,5.93432717e-02,3.79702647e-01,-2.37213766e-02,1.53320189e-04,-3.64145037e-04,6.98601380e-02,3.84959368e-02 -1721000000,-5.59444744e-02,6.13653818e-02,3.79462114e-01,-3.52431844e-02,1.44345946e-04,-3.38874760e-04,7.12212535e-02,3.78768481e-02 -1722000000,-5.64726839e-02,6.30389159e-02,3.77038269e-01,-4.64598597e-02,1.30074294e-04,-3.09982435e-04,6.34692090e-02,4.87547412e-02 -1723000000,-5.87614132e-02,6.43034807e-02,3.75290648e-01,-5.68316428e-02,1.48266410e-04,-3.05024389e-04,6.56622090e-02,4.61943112e-02 -1724000000,-6.13094854e-02,6.81343609e-02,3.74587017e-01,-6.92676020e-02,1.32557482e-04,-3.15931522e-04,5.42383697e-02,5.98156523e-02 -1725000000,-6.20790808e-02,7.10059884e-02,3.70902090e-01,-8.18616395e-02,1.34026541e-04,-2.87541128e-04,1.01560831e-01,1.68095119e-02 -1726000000,-5.96482628e-02,7.27800160e-02,3.58630812e-01,-8.90631214e-02,1.21248688e-04,-2.81161561e-04,6.90961799e-02,1.26722773e-03 -1727000000,-6.10035704e-02,7.50757325e-02,3.55481552e-01,-9.86169221e-02,1.26970823e-04,-2.55980246e-04,4.43439906e-02,1.19390124e-02 -1728000000,-6.51111864e-02,7.59874902e-02,3.55542130e-01,-1.06257025e-01,1.21855676e-04,-2.63041367e-04,4.77736960e-02,5.01488176e-02 -1729000000,-6.90076095e-02,8.28953388e-02,3.56353765e-01,-1.23754507e-01,9.97230055e-05,-2.50108796e-04,7.00341475e-02,5.83425048e-02 -1730000000,-6.42963777e-02,8.16777906e-02,3.43103452e-01,-1.28333833e-01,9.15553660e-05,-1.80816332e-04,1.00191059e-01,5.83448866e-02 -1731000000,-6.44468610e-02,8.39678102e-02,3.36878345e-01,-1.34876317e-01,9.98776387e-05,-2.28281496e-04,4.53679317e-02,4.60910228e-02 -1732000000,-6.39740051e-02,9.24951078e-02,3.30572466e-01,-1.54185263e-01,1.00068116e-04,-1.99685641e-04,4.91649395e-02,6.00767992e-02 -1733000000,-7.24774415e-02,9.33944416e-02,3.38607652e-01,-1.59723015e-01,1.01920752e-04,-2.18697131e-04,4.34683388e-02,4.39974871e-02 -1734000000,-6.56441831e-02,1.00143827e-01,3.21200967e-01,-1.76294137e-01,1.05427369e-04,-2.16358440e-04,9.82551101e-02,1.16611156e-02 -1735000000,-6.84793154e-02,9.62530449e-02,3.18550163e-01,-1.71840001e-01,1.28808528e-04,-1.96093254e-04,3.70984164e-02,4.21782915e-02 -1736000000,-6.83832234e-02,9.98359624e-02,3.12031179e-01,-1.82044331e-01,1.11250848e-04,-1.79552519e-04,5.02405943e-02,4.19156100e-02 -1737000000,-6.45834778e-02,1.07044066e-01,2.98583302e-01,-1.99758189e-01,1.37393671e-04,-1.70406992e-04,8.73614808e-02,4.06637419e-02 -1738000000,-7.35286107e-02,1.08609948e-01,3.10637305e-01,-2.03708060e-01,9.04629226e-05,-2.02671468e-04,3.23733614e-02,4.05342875e-02 -1739000000,-7.45321901e-02,1.13349216e-01,3.06025299e-01,-2.21819050e-01,8.68067672e-05,-1.95249662e-04,3.95359634e-02,3.42726706e-02 -1740000000,-7.32097594e-02,1.18929244e-01,2.95948184e-01,-2.34327252e-01,1.03292213e-04,-2.07327392e-04,3.45679645e-02,3.58701341e-02 -1741000000,-7.30193385e-02,1.18671787e-01,2.88247866e-01,-2.35606633e-01,1.17651193e-04,-1.92019324e-04,3.30147102e-02,2.66010700e-02 -1742000000,-7.45633122e-02,1.24801926e-01,2.84499796e-01,-2.49051468e-01,1.00983830e-04,-1.77529870e-04,3.78751070e-02,2.07936235e-02 -1743000000,-7.09143724e-02,1.26923336e-01,2.71749078e-01,-2.53934558e-01,7.54894202e-05,-1.59150685e-04,2.52936599e-02,2.67079887e-02 -1744000000,-7.50943098e-02,1.30652587e-01,2.72227745e-01,-2.61659725e-01,1.13988341e-04,-1.60570091e-04,3.81777614e-02,1.71292716e-02 -1745000000,-7.26022899e-02,1.33780255e-01,2.60853636e-01,-2.68533865e-01,1.20151655e-04,-1.62219674e-04,6.29251262e-02,6.06155568e-03 -1746000000,-7.11508950e-02,1.36323656e-01,2.51070452e-01,-2.72667020e-01,1.00387847e-04,-1.61651936e-04,3.29217563e-02,-1.54182233e-02 -1747000000,-6.85802757e-02,1.38990502e-01,2.39153145e-01,-2.77703998e-01,1.03961985e-04,-1.47889248e-04,1.47274951e-02,-1.65322419e-02 -1748000000,-6.73488349e-02,1.42651404e-01,2.30529493e-01,-2.83608430e-01,1.03758756e-04,-1.33384505e-04,2.98423779e-02,1.12874349e-02 -1749000000,-6.87672906e-02,1.46265703e-01,2.26695006e-01,-2.89506109e-01,5.48952981e-05,-1.57102890e-04,-3.88719153e-02,-5.97603243e-02 -1750000000,-6.57221086e-02,1.55959344e-01,2.14367117e-01,-3.07190533e-01,5.48304019e-05,-1.42764885e-04,-3.35438850e-02,-6.63022439e-02 -1751000000,-5.98534409e-02,1.54152675e-01,1.98033092e-01,-3.01595901e-01,1.09645282e-04,-1.00109737e-04,-8.68693060e-02,-3.55854263e-02 -1752000000,-6.26567877e-02,1.64048367e-01,1.98044184e-01,-3.18957728e-01,8.88406954e-05,-8.30833882e-05,-1.03989425e-01,-2.08294067e-02 -1753000000,-5.52520885e-02,1.64400333e-01,1.76279101e-01,-3.18126013e-01,1.41586903e-04,-1.74774325e-04,9.43938075e-03,6.86531334e-02 -1754000000,-5.43257719e-02,1.61810796e-01,1.68712207e-01,-3.10731152e-01,9.71423485e-05,-1.51396084e-04,1.95624543e-02,5.87254690e-02 -1755000000,-5.76579256e-02,1.70472041e-01,1.69944428e-01,-3.24639086e-01,1.26409581e-04,-1.45901267e-04,3.25911823e-02,4.30119920e-02 -1756000000,-4.81346212e-02,1.68872876e-01,1.47437659e-01,-3.19060401e-01,1.32255018e-04,-5.48354478e-05,5.41493323e-02,1.01478261e-02 -1757000000,-4.58263352e-02,1.70268712e-01,1.37301761e-01,-3.19177775e-01,8.22163762e-05,-1.53154201e-04,-3.24819084e-02,-6.49829734e-02 -1758000000,-4.98985046e-02,1.73164334e-01,1.39930581e-01,-3.21845742e-01,1.14875814e-04,-1.35414117e-04,-3.30841188e-02,-6.36289055e-02 -1759000000,-3.85351005e-02,1.81395020e-01,1.15528903e-01,-3.34929298e-01,9.01680493e-05,-7.64764424e-05,3.96598123e-02,-1.87740052e-02 -1760000000,-4.00229678e-02,1.78158269e-01,1.11948386e-01,-3.25703411e-01,1.17699097e-04,-1.54275534e-04,-4.63883554e-02,-6.90870287e-02 -1761000000,-4.51145390e-02,1.84729354e-01,1.19633033e-01,-3.31723326e-01,1.62422305e-04,-5.38395294e-05,-5.67228236e-02,-1.23149519e-02 -1762000000,-3.79422717e-02,1.84323227e-01,1.01388895e-01,-3.27466520e-01,1.55786833e-04,-1.23014211e-04,-9.35551638e-02,3.69994636e-02 -1763000000,-3.01926267e-02,1.91542191e-01,8.32289013e-02,-3.38306619e-01,1.15832094e-04,-1.03644309e-04,-1.70211789e-02,5.73683252e-03 -1764000000,-2.50582198e-02,1.95344272e-01,6.62153393e-02,-3.43441150e-01,1.61758779e-04,-1.21428082e-04,-6.18935088e-02,-7.82183613e-02 -1765000000,-2.85784301e-02,1.98443784e-01,6.91073825e-02,-3.46839991e-01,1.83983274e-04,-1.40178235e-04,-8.04945201e-02,-4.55322150e-02 -1766000000,-2.10996329e-02,1.99239730e-01,5.33797855e-02,-3.43762128e-01,1.49716334e-04,-8.74952249e-05,-8.20169439e-02,-4.25849980e-02 -1767000000,-1.72570402e-02,2.00763052e-01,4.26041427e-02,-3.43139424e-01,1.57594408e-04,-1.00778579e-04,-8.25509903e-02,-4.91903505e-02 -1768000000,-1.47932760e-02,2.03631139e-01,3.45862800e-02,-3.44930781e-01,1.69887415e-04,-8.72199042e-05,-1.20141290e-01,8.30272241e-03 -1769000000,-1.22803269e-02,2.05738807e-01,2.63553837e-02,-3.45046360e-01,1.67311105e-04,-8.05564755e-05,-6.48580069e-02,1.50069534e-02 -1770000000,-8.62939418e-03,2.07512660e-01,1.65152226e-02,-3.44759553e-01,1.71837356e-04,-8.50867128e-05,-9.85372932e-02,3.49935402e-02 -1771000000,-5.33526676e-03,2.08675677e-01,6.98858761e-03,-3.42822939e-01,1.74291690e-04,-7.85135280e-05,-8.68691096e-02,-9.92459628e-02 -1772000000,-3.08285461e-04,2.08736856e-01,-4.03284947e-03,-3.39414680e-01,1.93596958e-04,-8.07317921e-05,-1.10127658e-01,-7.31969809e-02 -1773000000,3.74122567e-03,2.09569871e-01,-1.37252378e-02,-3.38589894e-01,2.11603608e-04,-5.48607187e-05,-1.99378851e-01,3.63178718e-02 -1774000000,7.54762119e-03,2.13724952e-01,-2.29952890e-02,-3.41104771e-01,1.89314848e-04,-5.13776873e-05,-1.67887476e-01,-4.82469383e-02 -1775000000,1.10417934e-02,2.12116993e-01,-3.17773295e-02,-3.35773057e-01,2.16024438e-04,-4.51567736e-05,-2.22027684e-01,2.70194247e-02 -1776000000,1.35083625e-02,2.14174702e-01,-3.89062929e-02,-3.35419394e-01,2.23982165e-04,-5.79757754e-05,-2.34319121e-01,1.31376268e-02 -1777000000,1.98668762e-02,2.15484552e-01,-5.16878078e-02,-3.33310465e-01,2.30976081e-04,-5.14486024e-05,-1.78807366e-01,-6.09417444e-02 -1778000000,2.28388151e-02,2.15985471e-01,-5.90087935e-02,-3.29981580e-01,2.36252051e-04,-6.31031975e-05,-1.04120518e-01,5.73581134e-05 -1779000000,2.55751961e-02,2.17981104e-01,-6.63814280e-02,-3.29463100e-01,2.33418524e-04,-6.92518341e-05,-1.34791074e-01,-8.71903791e-02 -1780000000,3.04594449e-02,2.18623459e-01,-7.61602588e-02,-3.28159648e-01,2.67077080e-04,-5.97177397e-05,-2.28569166e-01,4.19055847e-02 -1781000000,3.51041042e-02,2.18581856e-01,-8.56981428e-02,-3.24258464e-01,2.66395286e-04,-7.96576404e-05,-2.08099057e-01,4.60126237e-02 -1782000000,3.76117204e-02,2.19567918e-01,-9.18989898e-02,-3.21051813e-01,2.66134118e-04,-8.37804455e-05,-1.26257923e-01,1.40866066e-02 -1783000000,4.18356380e-02,2.18952109e-01,-1.00826174e-01,-3.18021167e-01,2.72598177e-04,-5.91775503e-05,-2.63630755e-01,6.21149699e-03 -1784000000,4.59249592e-02,2.10288825e-01,-1.06508500e-01,-2.99868719e-01,2.85004087e-04,-9.37871341e-05,-2.00858171e-01,1.71176731e-01 -1785000000,5.30253882e-02,2.21234866e-01,-1.18090127e-01,-3.10551117e-01,2.56860416e-04,-1.15753310e-04,-1.11272980e-02,3.21443189e-02 -1786000000,5.54824975e-02,2.20112333e-01,-1.27958495e-01,-3.08568021e-01,2.91199907e-04,-8.04036506e-05,-2.08084922e-01,-9.07728539e-02 -1787000000,5.90177845e-02,2.19658570e-01,-1.34968959e-01,-3.04570502e-01,3.01979035e-04,-8.13677296e-05,-1.93157472e-01,5.53274671e-03 -1788000000,6.19577969e-02,2.21077116e-01,-1.41044779e-01,-3.02303522e-01,2.76657136e-04,-7.51993133e-05,-2.07557147e-01,-1.19040146e-01 -1789000000,6.66857252e-02,2.19771072e-01,-1.49568592e-01,-2.96918838e-01,2.97073334e-04,-9.40299302e-05,-2.06298980e-01,-1.24249191e-01 -1790000000,7.16016645e-02,2.19024389e-01,-1.58266695e-01,-2.92354150e-01,3.03483810e-04,-9.92713187e-05,-2.20429470e-01,-1.22653799e-01 -1791000000,7.58255066e-02,2.18115270e-01,-1.65830346e-01,-2.87662222e-01,3.02631625e-04,-9.36741368e-05,-2.51911750e-01,-1.08000775e-01 -1792000000,7.89567858e-02,2.19379678e-01,-1.71771501e-01,-2.85838490e-01,3.11538896e-04,-7.64824421e-05,-2.83330491e-01,-6.67075357e-02 -1793000000,8.12698826e-02,2.18091483e-01,-1.76855634e-01,-2.80129939e-01,3.02700821e-04,-9.48356425e-05,-1.72537174e-01,-1.15217362e-03 -1794000000,8.58070664e-02,2.17503431e-01,-1.84428597e-01,-2.75833895e-01,3.06168506e-04,-1.00308103e-04,-2.02138825e-01,2.36764749e-02 -1795000000,8.95512587e-02,2.16298163e-01,-1.90873723e-01,-2.70594791e-01,3.28231358e-04,-1.05848310e-04,-2.11723684e-01,2.52668991e-02 -1796000000,9.26926918e-02,2.14723220e-01,-1.96348511e-01,-2.64452446e-01,3.27095107e-04,-1.03340423e-04,-1.96774766e-01,-4.75176654e-02 -1797000000,9.71218283e-02,2.13549439e-01,-2.03142844e-01,-2.59052529e-01,3.38073464e-04,-1.19448418e-04,-2.49505428e-01,-1.16728169e-01 -1798000000,1.02713099e-01,2.12130211e-01,-2.11559977e-01,-2.53387124e-01,3.19287007e-04,-7.50249983e-05,-2.58458451e-01,-1.01769620e-01 -1799000000,1.04833906e-01,2.08891037e-01,-2.15874629e-01,-2.46066620e-01,3.28667096e-04,-7.61301562e-05,-2.42110274e-01,-7.43039158e-02 -1800000000,1.10480763e-01,2.07477612e-01,-2.21761972e-01,-2.36995935e-01,3.54805098e-04,-1.38534661e-04,-2.66877823e-01,-8.97682946e-02 -1801000000,1.12370204e-01,2.05442036e-01,-2.25406470e-01,-2.30750750e-01,3.41624777e-04,-1.64797548e-04,-2.69417031e-01,-1.07642701e-01 -1802000000,1.17636042e-01,2.04084222e-01,-2.33268542e-01,-2.25355346e-01,3.55855819e-04,-1.95895276e-04,-2.75376531e-01,-8.79299199e-02 -1803000000,1.20833292e-01,2.02388206e-01,-2.38050623e-01,-2.19839709e-01,3.60970594e-04,-1.59716657e-04,-2.66622275e-01,3.98789444e-03 -1804000000,1.23337038e-01,1.99511835e-01,-2.42513678e-01,-2.12442435e-01,3.70544573e-04,-1.94815382e-04,-2.74928388e-01,-8.73646189e-02 -1805000000,1.27252134e-01,1.97796099e-01,-2.47932680e-01,-2.06420581e-01,3.60422002e-04,-1.99982614e-04,-2.76663174e-01,-9.40526096e-02 -1806000000,1.30722504e-01,1.96122551e-01,-2.52871558e-01,-2.00615744e-01,3.86353921e-04,-1.49705214e-04,-2.90150501e-01,-1.85438302e-02 -1807000000,1.33016997e-01,1.94708761e-01,-2.57238798e-01,-1.94966428e-01,3.87389988e-04,-1.78152041e-04,-2.93631986e-01,-4.03999061e-02 -1808000000,1.36581495e-01,1.91446227e-01,-2.62126933e-01,-1.87471252e-01,3.66847454e-04,-1.88249764e-04,-2.84266740e-01,-8.14937879e-02 -1809000000,1.39435557e-01,1.91828492e-01,-2.62826022e-01,-1.83233233e-01,4.01531239e-04,-1.53834633e-04,-2.76013426e-01,-8.64804224e-02 -1810000000,1.45430233e-01,1.86617004e-01,-2.70057922e-01,-1.74399365e-01,3.87614701e-04,-1.94779729e-04,-2.84845077e-01,-9.22367358e-02 -1811000000,1.45150618e-01,1.85482747e-01,-2.75347761e-01,-1.69907996e-01,4.94544666e-04,-1.56811041e-04,-2.88159794e-01,-4.65254102e-02 -1812000000,1.46814602e-01,1.82695039e-01,-2.78336468e-01,-1.63117125e-01,4.83773795e-04,-1.37490194e-04,-2.89241832e-01,-5.72025520e-02 -1813000000,1.50105122e-01,1.79286157e-01,-2.82721845e-01,-1.55634566e-01,5.11979146e-04,-1.45921169e-04,-2.87912009e-01,-4.21501703e-02 -1814000000,1.52592297e-01,1.76575185e-01,-2.86097698e-01,-1.48607496e-01,5.17865507e-04,-1.23924943e-04,-2.99995114e-01,-1.85351763e-02 -1815000000,1.55414081e-01,1.74153841e-01,-2.89933098e-01,-1.42192144e-01,5.23868753e-04,-1.78205747e-04,-2.87391846e-01,-3.58755236e-02 -1816000000,1.56924718e-01,1.71513419e-01,-2.92634247e-01,-1.35472777e-01,5.38476405e-04,-1.74371850e-04,-2.92523110e-01,-3.93685657e-02 -1817000000,1.59288576e-01,1.68326791e-01,-2.95857161e-01,-1.28194104e-01,5.53276083e-04,-1.91092683e-04,-2.89688599e-01,-3.22330037e-02 -1818000000,1.61680523e-01,1.65300078e-01,-2.98966496e-01,-1.21128254e-01,5.42743571e-04,-2.25992698e-04,-2.89600498e-01,-3.02076547e-02 -1819000000,1.63501512e-01,1.63035892e-01,-3.01704515e-01,-1.14634796e-01,5.65846532e-04,-2.18218586e-04,-2.90182843e-01,-2.86696999e-02 -1820000000,1.65388290e-01,1.59598973e-01,-3.04282808e-01,-1.07288225e-01,5.60396656e-04,-2.37180926e-04,-2.92305881e-01,-2.61418731e-02 -1821000000,1.68006730e-01,1.56629852e-01,-3.07267495e-01,-9.99575818e-02,5.83747978e-04,-2.55452022e-04,-2.98354388e-01,-9.88607249e-03 -1822000000,1.69183849e-01,1.53767894e-01,-3.09196192e-01,-9.32330603e-02,5.64465240e-04,-2.43836531e-04,-2.97620411e-01,-3.44943755e-02 -1823000000,1.70790198e-01,1.50299016e-01,-3.11320371e-01,-8.58569248e-02,5.66702172e-04,-3.15687749e-04,-2.95379255e-01,-3.06170245e-02 -1824000000,1.72977924e-01,1.47263047e-01,-3.13690997e-01,-7.85300839e-02,5.89052212e-04,-2.53412010e-04,-3.02080392e-01,-3.61308929e-03 -1825000000,1.74054514e-01,1.43544715e-01,-3.15246396e-01,-7.13138337e-02,5.70057986e-04,-2.93721081e-04,-2.98492632e-01,-3.19421735e-02 -1826000000,1.75258513e-01,1.40723078e-01,-3.16939813e-01,-6.42793265e-02,5.67049732e-04,-3.36304205e-04,-2.96879274e-01,-2.91401542e-02 -1827000000,1.76650027e-01,1.37135794e-01,-3.18517378e-01,-5.67161696e-02,5.93500748e-04,-3.29746751e-04,-2.97128632e-01,-1.15134147e-02 -1828000000,1.77832515e-01,1.33849431e-01,-3.19902022e-01,-4.93712754e-02,5.66428420e-04,-3.85446909e-04,-2.96393189e-01,-1.87693509e-02 -1829000000,1.73778533e-01,1.27781030e-01,-3.14313782e-01,-4.17889892e-02,5.35404193e-04,-3.14028500e-04,-3.06880777e-01,5.14673686e-03 -1830000000,1.75779806e-01,1.29581354e-01,-3.15711751e-01,-3.57090210e-02,5.46509926e-04,-3.55487796e-04,-3.06217858e-01,7.65246007e-03 -1831000000,1.81373805e-01,1.25772907e-01,-3.17944991e-01,-2.89053679e-02,5.70506778e-04,-3.25340499e-04,-2.90185737e-01,-2.45679842e-02 -1832000000,1.79876261e-01,1.17447326e-01,-3.18382914e-01,-2.11267101e-02,6.05623170e-04,-2.75639435e-04,-2.90714408e-01,-2.42112990e-02 -1833000000,1.82763871e-01,1.15917561e-01,-3.19291282e-01,-1.35462789e-02,5.69802341e-04,-4.04491037e-04,-3.12988358e-01,-1.62005290e-02 -1834000000,1.80591897e-01,1.17733794e-01,-3.19658902e-01,-5.90915062e-03,5.36094586e-04,-4.11625346e-04,-3.11574156e-01,-6.05635712e-04 -1835000000,1.78317994e-01,1.13197186e-01,-3.20412233e-01,1.22854046e-03,6.76862539e-04,-3.68439362e-04,-3.02765411e-01,-3.88096426e-02 -1836000000,1.83888806e-01,1.06890550e-01,-3.24544484e-01,1.06009161e-02,6.28733839e-04,-3.88235982e-04,-3.02836828e-01,-1.54983321e-02 -1837000000,1.83955801e-01,1.03596897e-01,-3.24349736e-01,1.85370954e-02,6.50082494e-04,-3.60344578e-04,-3.04143001e-01,-1.75645321e-02 -1838000000,1.84248007e-01,1.00654997e-01,-3.23815033e-01,2.65156680e-02,6.40435852e-04,-3.74174774e-04,-3.03431024e-01,-2.83383834e-02 -1839000000,1.84539461e-01,9.67733378e-02,-3.23218540e-01,3.46064861e-02,6.30293040e-04,-4.13963800e-04,-3.02768280e-01,-2.34110071e-02 -1840000000,1.84558349e-01,9.38740981e-02,-3.22234973e-01,4.29771734e-02,6.46433387e-04,-4.05838704e-04,-3.05088240e-01,-2.06446481e-02 -1841000000,1.84089132e-01,9.02193423e-02,-3.21377002e-01,5.13151633e-02,6.67774542e-04,-3.86061935e-04,-3.07162097e-01,-2.19981559e-02 -1842000000,1.84298973e-01,8.68411759e-02,-3.19956403e-01,5.95884825e-02,6.80960337e-04,-3.67225913e-04,-3.08170252e-01,-2.66435272e-02 -1843000000,1.84048528e-01,8.33542936e-02,-3.18575745e-01,6.77750263e-02,6.73995154e-04,-4.03474815e-04,-3.06415501e-01,-3.83666477e-02 -1844000000,1.83759926e-01,7.98794004e-02,-3.16775421e-01,7.65011534e-02,6.58522523e-04,-4.08582529e-04,-3.05305633e-01,-3.95813931e-02 -1845000000,1.83185116e-01,7.66462744e-02,-3.14929019e-01,8.57013920e-02,6.73540314e-04,-4.17089521e-04,-3.06248071e-01,-4.31024748e-02 -1846000000,1.82430850e-01,7.27421928e-02,-3.13089361e-01,9.45420457e-02,6.77254901e-04,-4.36602039e-04,-3.09573840e-01,-4.00268331e-02 -1847000000,1.81870926e-01,6.92219648e-02,-3.10772499e-01,1.03410208e-01,6.99165932e-04,-4.46460120e-04,-3.11164111e-01,-4.33885810e-02 -1848000000,1.81482914e-01,6.61763916e-02,-3.07546499e-01,1.12166659e-01,6.96211454e-04,-4.44914458e-04,-3.09267055e-01,-5.55125201e-02 -1849000000,1.80506923e-01,6.20794961e-02,-3.05282101e-01,1.20999532e-01,7.44973783e-04,-4.36882038e-04,-3.13390676e-01,-5.52536220e-02 -1850000000,1.80096113e-01,5.88370098e-02,-3.01070295e-01,1.30098780e-01,7.18415813e-04,-4.75940756e-04,-3.13645327e-01,-6.04198230e-02 -1851000000,1.78760313e-01,5.52554210e-02,-2.98769800e-01,1.38754354e-01,7.49206636e-04,-4.45745510e-04,-3.12003965e-01,-7.08558369e-02 -1852000000,1.78144763e-01,5.21283855e-02,-2.93870318e-01,1.48064254e-01,7.48516391e-04,-4.73535253e-04,-3.11385846e-01,-7.88940147e-02 -1853000000,1.76837136e-01,4.84586788e-02,-2.90441915e-01,1.56070431e-01,6.74990983e-04,-5.40137869e-04,-3.09696899e-01,-8.37721221e-02 -1854000000,1.75835048e-01,4.53618131e-02,-2.85069602e-01,1.65740622e-01,6.63694383e-04,-5.86703303e-04,-3.11066046e-01,-9.00521073e-02 -1855000000,1.74176384e-01,4.20119671e-02,-2.82031164e-01,1.74873090e-01,7.25288641e-04,-5.82170153e-04,-3.09787209e-01,-1.00406515e-01 -1856000000,1.76495458e-01,3.77698961e-02,-2.79570563e-01,1.87743496e-01,7.57304703e-04,-5.99643523e-04,-2.95247291e-01,-1.12382063e-01 -1857000000,1.74644747e-01,3.43506102e-02,-2.74728521e-01,1.93520895e-01,7.60434863e-04,-5.39698708e-04,-2.94313516e-01,-1.31501832e-01 -1858000000,1.71378248e-01,3.16275035e-02,-2.79226789e-01,2.05139437e-01,7.80976113e-04,-6.57170480e-04,-2.83983234e-01,-1.31281838e-01 -1859000000,1.66613464e-01,3.06696625e-02,-2.57772191e-01,2.03610700e-01,7.26655462e-04,-6.28371852e-04,-2.97696160e-01,-1.52008690e-01 -1860000000,1.64916696e-01,2.80491402e-02,-2.51077598e-01,2.13477068e-01,6.79333056e-04,-6.69856689e-04,-2.95046184e-01,-1.59064998e-01 -1861000000,1.63248378e-01,2.52860172e-02,-2.43733293e-01,2.19622227e-01,6.85619659e-04,-6.71164948e-04,-2.87493275e-01,-1.69952539e-01 -1862000000,1.61334274e-01,2.26303768e-02,-2.40266879e-01,2.24903822e-01,6.41241089e-04,-7.11117532e-04,-2.82667452e-01,-1.78761301e-01 -1863000000,1.59321154e-01,2.07326656e-02,-2.34606162e-01,2.35305815e-01,6.66268212e-04,-7.45488918e-04,-2.72623559e-01,-1.97855882e-01 -1864000000,1.57390910e-01,1.80834946e-02,-2.30028190e-01,2.39401116e-01,6.44791064e-04,-7.89768836e-04,-2.68420745e-01,-1.99441747e-01 -1865000000,1.55466922e-01,1.62939384e-02,-2.24841703e-01,2.46525807e-01,6.24009299e-04,-7.75717108e-04,-2.54715644e-01,-2.16210691e-01 -1866000000,1.53413659e-01,1.46251401e-02,-2.17974060e-01,2.55051762e-01,6.24090616e-04,-8.22271466e-04,-2.46923785e-01,-2.24772648e-01 -1867000000,1.51386264e-01,1.28103368e-02,-2.09630686e-01,2.61052167e-01,6.04775262e-04,-8.47016627e-04,-2.39750418e-01,-2.34269680e-01 -1868000000,1.49054245e-01,1.12840434e-02,-2.06386184e-01,2.66569977e-01,6.49523560e-04,-8.51083292e-04,-2.32802585e-01,-2.38297262e-01 -1869000000,1.46897668e-01,9.80546243e-03,-2.02365866e-01,2.70840710e-01,6.21348131e-04,-8.94048373e-04,-2.20861341e-01,-2.46426592e-01 -1870000000,1.44743126e-01,8.59984189e-03,-1.90259921e-01,2.73812588e-01,6.02774162e-04,-8.78765735e-04,-2.19892887e-01,-2.50399021e-01 -1871000000,1.42464335e-01,7.21718844e-03,-1.83985160e-01,2.81390726e-01,6.15346679e-04,-9.56290409e-04,-2.11387573e-01,-2.62442634e-01 -1872000000,1.40100614e-01,6.25774326e-03,-1.81421082e-01,2.81613208e-01,6.55612107e-04,-9.34323237e-04,-1.97039917e-01,-2.66814652e-01 -1873000000,1.37635883e-01,5.59515992e-03,-1.79104485e-01,2.90845468e-01,5.75440773e-04,-9.49228097e-04,-1.92007324e-01,-2.68078987e-01 -1874000000,1.35264748e-01,4.95328560e-03,-1.71911662e-01,2.90017254e-01,5.72280028e-04,-9.47728745e-04,-1.85107145e-01,-2.69538031e-01 -1875000000,1.32886343e-01,4.17176048e-03,-1.63837590e-01,3.01003483e-01,5.90641288e-04,-9.92548954e-04,-1.68505194e-01,-2.87078218e-01 -1876000000,1.30701266e-01,5.55790487e-04,-1.70196266e-01,3.06451107e-01,6.49200984e-04,-1.02045770e-03,-1.62321225e-01,-2.72405995e-01 -1877000000,1.27968620e-01,-2.88934678e-05,-1.60579925e-01,3.18296419e-01,5.32880093e-04,-1.03071229e-03,-1.47905477e-01,-2.88134521e-01 -1878000000,1.25455165e-01,-2.23754105e-04,-1.45078839e-01,3.18255505e-01,5.04911354e-04,-1.05802046e-03,-1.57458376e-01,-2.78542006e-01 -1879000000,1.22837798e-01,-3.40246368e-04,-1.45297470e-01,3.11699506e-01,5.51285723e-04,-1.05820947e-03,-1.33242149e-01,-2.79523502e-01 -1880000000,1.20305402e-01,-3.63795993e-04,-1.47345850e-01,3.23032073e-01,4.57344085e-04,-1.06858917e-03,-1.41655639e-01,-2.81955200e-01 -1881000000,1.17687242e-01,-4.25187410e-04,-1.33850049e-01,3.34415141e-01,5.31065009e-04,-1.06319383e-03,-1.40527914e-01,-2.98143218e-01 -1882000000,1.15114273e-01,-4.49923870e-04,-1.21148299e-01,3.22176092e-01,3.93623664e-04,-1.01458644e-03,-1.26671142e-01,-2.91754255e-01 -1883000000,1.12619817e-01,-3.74886589e-04,-1.26011333e-01,3.30456451e-01,4.42328029e-04,-1.07390039e-03,-1.09142584e-01,-2.94683668e-01 -1884000000,1.10658566e-01,4.09265297e-03,-1.06301380e-01,3.23290822e-01,3.77951158e-04,-1.02916494e-03,-1.33856971e-01,-3.00309546e-01 -1885000000,1.08209167e-01,4.24226277e-03,-9.92327649e-02,3.28331155e-01,3.60091386e-04,-1.05176481e-03,-1.16987347e-01,-3.08732021e-01 -1886000000,1.05965300e-01,4.59667007e-03,-9.29033266e-02,3.31399944e-01,3.70736729e-04,-1.06588671e-03,-1.15565450e-01,-3.05274212e-01 -1887000000,1.03534460e-01,4.94833918e-03,-8.62508855e-02,3.29089521e-01,3.35336388e-04,-1.05462835e-03,-1.08056809e-01,-3.07013205e-01 -1888000000,1.01155000e-01,5.39865785e-03,-8.51992495e-02,3.35484548e-01,3.43984369e-04,-1.08026310e-03,-9.96094437e-02,-3.12070285e-01 -1889000000,9.88411250e-02,5.84400749e-03,-7.94871862e-02,3.35947965e-01,3.56648435e-04,-1.07890041e-03,-1.02269102e-01,-3.06986988e-01 -1890000000,9.65990222e-02,6.33950354e-03,-6.46616742e-02,3.39842649e-01,3.11676796e-04,-1.08722539e-03,-1.08646429e-01,-3.10720384e-01 -1891000000,9.42413736e-02,6.83111546e-03,-6.09109606e-02,3.36732219e-01,3.17293402e-04,-1.05952404e-03,-1.04309619e-01,-3.06567489e-01 -1892000000,9.19479863e-02,7.44702876e-03,-5.95055036e-02,3.45699323e-01,3.16887332e-04,-1.07689716e-03,-9.66972496e-02,-3.10735066e-01 -1893000000,8.97758108e-02,7.98641496e-03,-4.51937289e-02,3.42275550e-01,2.53969473e-04,-1.07547377e-03,-1.03633886e-01,-3.03885598e-01 -1894000000,8.74745734e-02,8.69401244e-03,-4.75457244e-02,3.46068366e-01,2.69733734e-04,-1.07289022e-03,-9.77681303e-02,-3.03027002e-01 -1895000000,8.54386190e-02,9.34787555e-03,-3.09726967e-02,3.44789860e-01,2.09738073e-04,-1.09517102e-03,-1.06683624e-01,-3.02634385e-01 -1896000000,8.31050836e-02,1.01794331e-02,-3.40322772e-02,3.49071888e-01,2.39129276e-04,-1.09212800e-03,-9.71488614e-02,-3.03807324e-01 -1897000000,8.10579919e-02,1.08514159e-02,-2.17527028e-02,3.45934887e-01,2.13103965e-04,-1.11378947e-03,-9.80137781e-02,-3.09061385e-01 -1898000000,7.90905457e-02,1.18321036e-02,-1.00276971e-02,3.54999594e-01,2.39360731e-04,-1.09985107e-03,-9.34837004e-02,-3.10449420e-01 -1899000000,7.67886073e-02,1.25043042e-02,-1.16392745e-02,3.50955994e-01,2.36788277e-04,-1.10586158e-03,-6.51258447e-02,-3.10996608e-01 -1900000000,7.51680678e-02,1.35637371e-02,6.29792197e-03,3.53679071e-01,2.08059244e-04,-1.13450307e-03,-8.17168393e-02,-3.06503562e-01 -1901000000,7.12271581e-02,1.14436724e-02,1.29067646e-02,3.67789811e-01,1.77880870e-04,-1.12283791e-03,-8.31412528e-02,-3.17682317e-01 -1902000000,6.88564922e-02,1.24855224e-02,8.94693903e-03,3.63954440e-01,2.06747478e-04,-1.10336937e-03,-7.47646091e-02,-3.13370388e-01 -1903000000,6.68265354e-02,1.38146452e-02,1.48804459e-02,3.67644618e-01,2.19177121e-04,-1.12182796e-03,-7.68144695e-02,-3.16770619e-01 -1904000000,6.51414775e-02,1.47096622e-02,2.87760057e-02,3.59207145e-01,1.89702307e-04,-1.11736768e-03,-6.60917995e-02,-3.01566420e-01 -1905000000,6.30306921e-02,1.63752391e-02,2.95608524e-02,3.66761470e-01,1.99596522e-04,-1.13437738e-03,-5.72784951e-02,-3.10302924e-01 -1906000000,6.18064222e-02,1.75635960e-02,4.67702365e-02,3.58395738e-01,1.26183742e-04,-1.12000190e-03,-7.32630832e-02,-3.11167464e-01 -1907000000,5.97380486e-02,1.90014562e-02,4.62257759e-02,3.58861673e-01,1.41278332e-04,-1.09848399e-03,-7.68391750e-02,-3.10345898e-01 -1908000000,5.80461468e-02,2.02204128e-02,5.59601738e-02,3.57043248e-01,1.50871398e-04,-1.11784077e-03,-6.55263593e-02,-3.00857601e-01 -1909000000,5.96670373e-02,2.49508961e-02,6.81987113e-02,3.45024058e-01,6.25844589e-05,-1.07060006e-03,-7.71479942e-02,-3.07975766e-01 -1910000000,5.80596103e-02,2.63042930e-02,7.33182676e-02,3.43150765e-01,5.48809719e-05,-1.06570568e-03,-7.92225476e-02,-3.09228102e-01 -1911000000,5.67516638e-02,2.75781392e-02,8.37153501e-02,3.42461437e-01,3.30570571e-05,-1.07879708e-03,-9.88975194e-02,-3.13209925e-01 -1912000000,5.53065910e-02,2.93406863e-02,9.02748622e-02,3.45409705e-01,-2.31795759e-05,-1.07783641e-03,-1.10591507e-01,-3.03972462e-01 -1913000000,5.43328665e-02,3.06260748e-02,9.97833533e-02,3.40992814e-01,-4.64813672e-05,-1.06361761e-03,-8.64362138e-02,-3.11383428e-01 -1914000000,5.29568951e-02,3.18619932e-02,1.06676818e-01,3.37237773e-01,-7.21188059e-05,-1.03506754e-03,-8.01764109e-02,-2.97162547e-01 -1915000000,5.16103256e-02,3.29927940e-02,1.12066816e-01,3.32690424e-01,-1.02436937e-04,-1.03039436e-03,-9.00155463e-02,-3.07122364e-01 -1916000000,4.98506948e-02,3.44807552e-02,1.14889679e-01,3.31156749e-01,-1.10728892e-04,-1.02010371e-03,-8.24433271e-02,-2.84941647e-01 -1917000000,4.90136026e-02,3.57380976e-02,1.25478058e-01,3.27630460e-01,-1.74976126e-04,-9.71911233e-04,-9.47777168e-02,-2.76766099e-01 -1918000000,4.77134732e-02,3.78462828e-02,1.30518379e-01,3.34848162e-01,-1.71668598e-04,-1.00930043e-03,-1.23172172e-01,-3.02374194e-01 -1919000000,4.75985487e-02,3.87528162e-02,1.46746736e-01,3.28758388e-01,-2.61197234e-04,-9.48570489e-04,-1.17985111e-01,-2.93350416e-01 -1920000000,4.66872141e-02,4.05406334e-02,1.53518911e-01,3.29164757e-01,-2.95137808e-04,-9.59112037e-04,-1.25874551e-01,-2.85553284e-01 -1921000000,4.49934634e-02,4.21866473e-02,1.52903608e-01,3.26645446e-01,-3.16166796e-04,-9.47908129e-04,-9.34234461e-02,-2.94810548e-01 -1922000000,4.56691648e-02,4.36882510e-02,1.70888268e-01,3.23082792e-01,-3.84021544e-04,-9.07469444e-04,-1.13486935e-01,-2.88470216e-01 -1923000000,4.43658904e-02,4.41099794e-02,1.74881468e-01,3.10874913e-01,-4.37636472e-04,-8.53120726e-04,-1.24561022e-01,-2.80268803e-01 -1924000000,4.37961814e-02,4.65061952e-02,1.84566860e-01,3.16745730e-01,-5.19490968e-04,-8.28713823e-04,-1.24630254e-01,-3.04941969e-01 -1925000000,4.31806573e-02,4.60728507e-02,1.91583579e-01,3.03062735e-01,-5.14032755e-04,-7.88642834e-04,-1.39594759e-01,-2.73667779e-01 -1926000000,3.88521263e-02,4.82187873e-02,1.99025128e-01,3.19975925e-01,-6.03336648e-04,-8.41747382e-04,-1.63564611e-01,-2.70668415e-01 -1927000000,3.95304311e-02,4.95819232e-02,2.13981184e-01,3.16119812e-01,-6.38282206e-04,-8.00447003e-04,-1.74116236e-01,-2.76401187e-01 -1928000000,4.04366597e-02,5.04250109e-02,2.24372979e-01,3.08593445e-01,-7.14149567e-04,-7.76826221e-04,-1.61462934e-01,-2.93604184e-01 -1929000000,3.84398898e-02,5.27966884e-02,2.25144785e-01,3.08061761e-01,-7.41239799e-04,-7.31361056e-04,-1.79087167e-01,-2.71349475e-01 -1930000000,3.85785518e-02,5.37946263e-02,2.31568628e-01,2.97842586e-01,-7.93295885e-04,-6.49568297e-04,-1.50152948e-01,-2.86156327e-01 -1931000000,3.90943270e-02,5.61599090e-02,2.40252796e-01,2.97453127e-01,-8.45461126e-04,-6.05805672e-04,-1.60677711e-01,-2.87049700e-01 -1932000000,3.92352247e-02,5.50890746e-02,2.48733270e-01,2.82275255e-01,-9.78504466e-04,-5.38222314e-04,-1.55664527e-01,-2.58172644e-01 -1933000000,3.96765889e-02,5.69044531e-02,2.58083840e-01,2.77243140e-01,-9.61362334e-04,-4.40831168e-04,-1.56449321e-01,-2.74794384e-01 -1934000000,3.88460349e-02,5.73867268e-02,2.59775773e-01,2.69751814e-01,-1.03257056e-03,-4.07869400e-04,-1.88460470e-01,-2.62558789e-01 -1935000000,4.01225077e-02,6.07408166e-02,2.70180117e-01,2.70928980e-01,-1.07746978e-03,-2.90112490e-04,-1.57346690e-01,-2.71845120e-01 -1936000000,3.98716570e-02,6.15301061e-02,2.73522904e-01,2.62580310e-01,-1.11253412e-03,-2.09577591e-04,-1.60077983e-01,-2.68800467e-01 -1937000000,3.99199075e-02,6.16777051e-02,2.78848786e-01,2.52187721e-01,-1.09915187e-03,-1.64207539e-04,-2.05537001e-01,-2.31304149e-01 -1938000000,4.20019178e-02,6.39155981e-02,2.90813948e-01,2.49407900e-01,-1.18117677e-03,-7.93015578e-05,-2.08477821e-01,-2.29115089e-01 -1939000000,4.38710099e-02,6.18398830e-02,2.81287930e-01,2.23144154e-01,-1.04741738e-03,8.20512586e-05,-1.94487031e-01,-2.08540928e-01 -1940000000,4.48256050e-02,6.33329323e-02,2.88559998e-01,2.18747618e-01,-1.09312848e-03,2.05072454e-04,-1.85625887e-01,-2.13850823e-01 -1941000000,4.56406105e-02,6.39477179e-02,2.94623250e-01,2.11412538e-01,-1.13619770e-03,3.34858275e-04,-1.74576590e-01,-2.22569916e-01 -1942000000,4.45414529e-02,6.59240641e-02,2.94648538e-01,2.08206162e-01,-1.15256040e-03,4.64152150e-04,-1.66756570e-01,-2.32507895e-01 -1943000000,4.42732368e-02,6.51011204e-02,2.98606055e-01,1.96523305e-01,-1.14289630e-03,4.74347670e-04,-2.01153419e-01,-1.93325282e-01 -1944000000,4.68877653e-02,6.63769598e-02,3.09848670e-01,1.91926237e-01,-1.15275093e-03,7.05750032e-04,-2.26351034e-01,-2.11833437e-01 -1945000000,4.59701642e-02,6.76470999e-02,3.10799837e-01,1.86279544e-01,-1.23072255e-03,8.00198039e-04,-2.24001486e-01,-2.16335104e-01 -1946000000,4.72216094e-02,6.81904141e-02,3.17273910e-01,1.78953218e-01,-1.26912717e-03,9.06632537e-04,-2.18624113e-01,-2.26272793e-01 -1947000000,4.73203774e-02,6.85537537e-02,3.20551592e-01,1.70837706e-01,-1.28630409e-03,1.06855452e-03,-2.04504901e-01,-2.32462469e-01 -1948000000,4.99789227e-02,6.80102735e-02,3.30532655e-01,1.60513648e-01,-1.09428502e-03,1.11920773e-03,-1.98739710e-01,-2.23565324e-01 -1949000000,5.01507319e-02,6.84376132e-02,3.34288356e-01,1.52990092e-01,-7.48979986e-04,1.23978800e-03,-2.21701960e-01,-2.03933367e-01 -1950000000,5.08015116e-02,6.66281200e-02,3.38650457e-01,1.40686355e-01,-7.45118218e-04,1.30212789e-03,-2.25505487e-01,-1.97414438e-01 -1951000000,4.98132211e-02,6.88000312e-02,3.56861462e-01,1.41429281e-01,-9.56000095e-04,1.65474552e-03,-2.45930999e-01,-1.97561120e-01 -1952000000,5.09505145e-02,6.97633757e-02,3.61891562e-01,1.34219624e-01,-8.91295715e-04,1.80434260e-03,-2.51130075e-01,-1.94106577e-01 -1953000000,5.21551888e-02,6.93458272e-02,3.65983925e-01,1.24230030e-01,-1.00856502e-03,2.00786814e-03,-2.55560991e-01,-2.03012851e-01 -1954000000,5.23659375e-02,6.90716974e-02,3.68493732e-01,1.15085205e-01,-9.23591913e-04,2.16278281e-03,-2.59375628e-01,-1.98389828e-01 -1955000000,5.31222825e-02,6.96746745e-02,3.72165913e-01,1.07160766e-01,-7.50035986e-04,2.36550710e-03,-2.63169767e-01,-1.94444861e-01 -1956000000,5.36620042e-02,6.80720458e-02,3.75019749e-01,9.59506849e-02,-4.76015699e-04,2.43738333e-03,-2.71081357e-01,-1.82970679e-01 -1957000000,5.44768102e-02,6.85400004e-02,3.78190713e-01,8.76829829e-02,-3.84548232e-04,2.57961029e-03,-2.45509641e-01,-2.21184251e-01 -1958000000,5.49740492e-02,6.79325080e-02,3.80956861e-01,7.82006707e-02,-4.33956236e-04,2.90950547e-03,-2.25331678e-01,-2.04375133e-01 -1959000000,5.63306729e-02,6.83156633e-02,3.84109840e-01,6.89977521e-02,-2.33456698e-04,3.08000576e-03,-2.32319162e-01,-2.04996731e-01 -1960000000,5.62631043e-02,6.68055781e-02,3.85182372e-01,5.82020886e-02,7.70245566e-05,3.01720405e-03,-2.49144215e-01,-2.11366365e-01 -1961000000,5.67733297e-02,6.70287368e-02,3.86283563e-01,4.87756933e-02,1.62851645e-04,3.00070461e-03,-2.93789309e-01,-1.90696299e-01 -1962000000,5.71004891e-02,6.77544177e-02,3.88240857e-01,3.93436607e-02,4.35131330e-04,3.13075751e-03,-2.88290065e-01,-1.94770522e-01 -1963000000,5.76894217e-02,6.68197572e-02,3.88872687e-01,2.87766650e-02,6.23325074e-04,3.24834169e-03,-3.01017775e-01,-1.41769187e-01 -1964000000,5.75701978e-02,6.67027330e-02,3.89678186e-01,1.85888277e-02,6.12190960e-04,3.42810060e-03,-3.17389362e-01,-1.59208665e-01 -1965000000,5.81665765e-02,6.31696500e-02,3.90466786e-01,6.33109134e-03,1.19940134e-03,3.26190214e-03,-3.17540338e-01,-1.33212856e-01 -1966000000,5.86472455e-02,6.38774461e-02,3.91370008e-01,-4.29635835e-03,1.27957905e-03,3.45943464e-03,-3.21482177e-01,-1.32242621e-01 -1967000000,5.88648542e-02,6.22836124e-02,3.91383492e-01,-1.32580488e-02,1.41442819e-03,3.51008422e-03,-3.10941141e-01,-1.22222913e-01 -1968000000,6.04626410e-02,6.22877826e-02,3.91858296e-01,-2.44586060e-02,1.87351993e-03,3.24689070e-03,-3.14002970e-01,-1.58560040e-01 -1969000000,5.79838379e-02,5.92012888e-02,3.70738897e-01,-3.38724133e-02,1.86027435e-03,3.09776641e-03,-2.56740298e-01,-1.16418095e-01 -1970000000,5.70038995e-02,5.91947997e-02,3.69441484e-01,-4.38634471e-02,2.08267452e-03,2.68386046e-03,-3.04608195e-01,-5.29071280e-02 -1971000000,5.84960715e-02,5.92110980e-02,3.69274956e-01,-5.66880853e-02,2.30661376e-03,3.09869138e-03,-2.58644961e-01,-1.10038994e-01 -1972000000,5.68743897e-02,5.76323145e-02,3.70000402e-01,-6.59326723e-02,2.37174657e-03,2.95644797e-03,-2.66455294e-01,-8.42537571e-02 -1973000000,5.76399190e-02,5.57275863e-02,3.68107018e-01,-7.52938211e-02,2.84528597e-03,2.70964836e-03,-2.94046322e-01,-1.48101402e-01 -1974000000,5.60638985e-02,5.50392420e-02,3.66620188e-01,-8.82069622e-02,2.63932106e-03,2.56300025e-03,-3.30699053e-01,-6.01370085e-02 -1975000000,5.68509686e-02,5.54687370e-02,3.62998490e-01,-1.01523342e-01,2.85889563e-03,2.65360116e-03,-3.35278878e-01,-5.43954258e-02 -1976000000,5.86041460e-02,5.36575531e-02,3.58506725e-01,-1.09687418e-01,3.24530896e-03,1.88816456e-03,-3.37417384e-01,-2.32647900e-02 -1977000000,5.73660427e-02,5.12564142e-02,3.56616765e-01,-1.19284535e-01,3.18636906e-03,2.25127092e-03,-3.39422185e-01,-3.64517872e-02 -1978000000,5.56297741e-02,5.14165354e-02,3.58654512e-01,-1.30847793e-01,3.84392262e-03,1.80603337e-03,-3.61188571e-01,-1.85761721e-02 -1979000000,5.86402237e-02,5.07020537e-02,3.51008175e-01,-1.43808827e-01,3.56917949e-03,1.75985585e-03,-3.24795233e-01,-6.59763388e-02 -1980000000,5.65404634e-02,5.04338392e-02,3.47212282e-01,-1.56769395e-01,3.81006841e-03,2.06724159e-03,-3.52962530e-01,-1.69217688e-02 -1981000000,5.76876535e-02,4.70648564e-02,3.66663367e-01,-1.73678179e-01,4.38093791e-03,1.21384866e-03,-3.68049079e-01,1.42245916e-02 -1982000000,5.72737342e-02,4.54123249e-02,3.61100672e-01,-1.84177367e-01,4.46166396e-03,1.04698006e-03,-3.69932543e-01,2.22872968e-02 -1983000000,5.67454143e-02,4.43735970e-02,3.58368596e-01,-1.96769071e-01,4.57331410e-03,1.09714844e-03,-3.66795354e-01,-4.27684889e-02 -1984000000,5.59821971e-02,4.30754769e-02,3.51257427e-01,-2.06469680e-01,4.50714762e-03,1.02473688e-03,-3.84693864e-01,9.23251228e-03 -1985000000,5.54683082e-02,4.16739391e-02,3.44902871e-01,-2.17780129e-01,4.62782191e-03,5.70463935e-04,-3.73973553e-01,-1.94884511e-02 -1986000000,5.38295294e-02,4.08295912e-02,3.40556146e-01,-2.28841043e-01,4.56359357e-03,5.01676770e-04,-3.87487096e-01,2.52330550e-02 -1987000000,5.28106231e-02,3.98051263e-02,3.31276110e-01,-2.41645616e-01,4.62258663e-03,-2.29200526e-05,-3.71883419e-01,6.80840752e-02 -1988000000,5.18314724e-02,3.86687790e-02,3.24542305e-01,-2.52454569e-01,4.63805431e-03,-2.37794195e-04,-3.65698441e-01,6.84415120e-02 -1989000000,5.02897414e-02,3.68215818e-02,3.19225517e-01,-2.61017095e-01,4.76859121e-03,-1.25299583e-04,-3.62000001e-01,5.49785141e-02 -1990000000,4.89927816e-02,3.51178312e-02,3.09975081e-01,-2.70188798e-01,4.86600528e-03,-1.38436155e-04,-3.59613614e-01,3.39023365e-02 -1991000000,4.78516075e-02,3.43723395e-02,2.98986157e-01,-2.81071723e-01,4.81153946e-03,-3.46639616e-04,-3.63350013e-01,2.38453475e-02 -1992000000,4.60533144e-02,3.41271654e-02,2.92679840e-01,-2.93618841e-01,4.71248150e-03,-5.95481936e-04,-3.69217344e-01,3.14498178e-02 -1993000000,4.42949861e-02,3.33924647e-02,2.85336253e-01,-2.99923759e-01,4.46856304e-03,-1.03380165e-03,-3.63146854e-01,9.83436267e-02 -1994000000,4.14411866e-02,3.49557582e-02,2.52830827e-01,-2.90362967e-01,4.11479111e-03,-8.54486772e-04,-3.43383130e-01,3.78503390e-02 -1995000000,3.91597210e-02,3.51833734e-02,2.50270668e-01,-2.99448485e-01,3.83279287e-03,-1.21426898e-03,-3.83605049e-01,7.55056300e-02 -1996000000,3.75134383e-02,3.45727726e-02,2.40869686e-01,-3.07519431e-01,3.85516360e-03,-1.24599248e-03,-3.71311357e-01,6.15572901e-02 -1997000000,3.56913156e-02,3.35461981e-02,2.32164870e-01,-3.12276907e-01,3.87909820e-03,-1.31699932e-03,-3.51569531e-01,5.67210040e-02 -1998000000,3.44827199e-02,3.37010793e-02,2.16200089e-01,-3.16697533e-01,3.56507263e-03,-1.43415608e-03,-3.43891459e-01,1.66434007e-01 -1999000000,3.32363009e-02,3.41452903e-02,2.05759387e-01,-3.33258640e-01,3.27900222e-03,-1.44223583e-03,-3.42657842e-01,1.06157939e-01 -2000000000,3.12016731e-02,3.32721909e-02,1.95577878e-01,-3.30519592e-01,3.19768513e-03,-1.86690369e-03,-3.42488178e-01,1.36207758e-01 diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.png b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.png deleted file mode 100644 index 9ceeb77..0000000 Binary files a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result.png and /dev/null differ diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result1.png b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result1.png deleted file mode 100644 index f6116a1..0000000 Binary files a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result1.png and /dev/null differ diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_after.png b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_after.png deleted file mode 100644 index 60f462e..0000000 Binary files a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_after.png and /dev/null differ diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_before.png b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_before.png deleted file mode 100644 index 975908f..0000000 Binary files a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/sweep_result_before.png and /dev/null differ diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/test_sweep.py b/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/test_sweep.py deleted file mode 100644 index e5363f9..0000000 --- a/device_firmware/multi_libreVNA_firmware/reproduce/LibreVNA/Python/test_sweep.py +++ /dev/null @@ -1,336 +0,0 @@ -""" -test_sweep.py - run synchronized sweeps continuously and draw the latest cycle live. - -Usage ------ -List connected devices: - python test_sweep.py - -Single device (S11, S21): - python test_sweep.py - -Two devices - master + one slave (S11, S21, S31, S41): - python test_sweep.py - -Multi-device runs always use hardware trigger synchronization. -Close the plot window or press Ctrl+C to stop the live sweep. -""" - -import signal -import sys -import time -from dataclasses import dataclass - -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.axes import Axes -from matplotlib.figure import Figure -from matplotlib.lines import Line2D -from matplotlib.text import Text - -from librevna_multi_device_driver import ( - MultiDeviceVnaController, - SweepConfiguration, - SweepMeasurementResult, - list_connected_device_serial_numbers, -) - - -# Set to "internal" to keep each device on its own reference clock. -DEFAULT_REFERENCE_SOURCE = "external" -DEFAULT_SWEEP_CONFIGURATION = SweepConfiguration( - start_hz=100_000_000, - stop_hz=6_000_000_000, - points=501, - if_bandwidth=10000, - power_dbm=-10.0, -) - -_ACTIVE_MEASUREMENT_CONTROLLER: MultiDeviceVnaController | None = None - - -@dataclass -class LiveSweepPlot: - figure: Figure - status_text: Text - magnitude_axis: Axes - phase_axes: list[Axes] - magnitude_lines: dict[str, Line2D] - phase_lines: dict[str, Line2D] - - -def _force_external_reference_from_default_source() -> bool: - if DEFAULT_REFERENCE_SOURCE == "external": - return True - if DEFAULT_REFERENCE_SOURCE == "internal": - return False - raise ValueError( - "DEFAULT_REFERENCE_SOURCE must be either 'external' or 'internal'" - ) - - -def _parse_device_serial_numbers_from_command_line( - command_line_arguments: list[str], -) -> list[str]: - for command_line_argument in command_line_arguments: - if command_line_argument.startswith("--"): - raise SystemExit(f"Unknown option: {command_line_argument}") - return command_line_arguments - - -def _print_usage() -> None: - try: - connected_device_serial_numbers = list_connected_device_serial_numbers() - except RuntimeError as exc: - print(exc) - return - - if not connected_device_serial_numbers: - print("No LibreVNA devices found. Check the USB connection and OS USB access.") - return - - print("Connected LibreVNA devices:") - for connected_device_serial_number in connected_device_serial_numbers: - print(f" {connected_device_serial_number}") - print(f"\nUsage: {sys.argv[0]} [slave_serial ...]") - - -def _install_termination_signal_handlers(): - def handle_stop_signal(received_signal_number, _current_stack_frame) -> None: - global _ACTIVE_MEASUREMENT_CONTROLLER - if _ACTIVE_MEASUREMENT_CONTROLLER is not None: - try: - print( - f"\nSignal {received_signal_number} received, stopping devices...", - flush=True, - ) - _ACTIVE_MEASUREMENT_CONTROLLER.close() - except Exception: - pass - raise SystemExit(128 + received_signal_number) - - previous_sigint_handler = signal.getsignal(signal.SIGINT) - previous_sigterm_handler = signal.getsignal(signal.SIGTERM) - signal.signal(signal.SIGINT, handle_stop_signal) - signal.signal(signal.SIGTERM, handle_stop_signal) - return previous_sigint_handler, previous_sigterm_handler - - -def _restore_termination_signal_handlers( - previous_sigint_handler, - previous_sigterm_handler, -) -> None: - signal.signal(signal.SIGINT, previous_sigint_handler) - signal.signal(signal.SIGTERM, previous_sigterm_handler) - - -def _print_run_header( - master_serial_number: str, - slave_serial_numbers: list[str], - sweep_configuration: SweepConfiguration, -) -> None: - print(f"Master : {master_serial_number}") - for slave_index, slave_serial_number in enumerate(slave_serial_numbers): - print(f"Slave {slave_index} : {slave_serial_number}") - print( - "Sync : hardware trigger" - if slave_serial_numbers - else "Sync : disabled (single device)" - ) - print(f"Ref : {DEFAULT_REFERENCE_SOURCE} on all devices") - print("Sweeps : continuous until Ctrl+C or the plot window is closed") - print( - f"Sweep : {sweep_configuration.start_hz / 1e6:.3f} MHz - " - f"{sweep_configuration.stop_hz / 1e6:.3f} MHz, " - f"{sweep_configuration.points} points, " - f"IF BW {sweep_configuration.if_bandwidth} Hz" - ) - print("Running live sweep...") - - -def main() -> None: - global _ACTIVE_MEASUREMENT_CONTROLLER - - device_serial_numbers = _parse_device_serial_numbers_from_command_line( - sys.argv[1:] - ) - if not device_serial_numbers: - _print_usage() - return - - master_serial_number = device_serial_numbers[0] - slave_serial_numbers = device_serial_numbers[1:] - sweep_configuration = DEFAULT_SWEEP_CONFIGURATION - force_external_reference = _force_external_reference_from_default_source() - sweep_cycle_durations_seconds: list[float] = [] - - _print_run_header( - master_serial_number, - slave_serial_numbers, - sweep_configuration, - ) - previous_sigint_handler, previous_sigterm_handler = ( - _install_termination_signal_handlers() - ) - - try: - with MultiDeviceVnaController( - master_serial_number, - slave_serial_numbers, - force_external_reference=force_external_reference, - ) as measurement_controller: - _ACTIVE_MEASUREMENT_CONTROLLER = measurement_controller - measurement_controller.configure_continuous_sweep(sweep_configuration) - plt.ion() - - live_plot: LiveSweepPlot | None = None - sweep_cycle_count = 0 - print("Waiting for the first complete sweep cycle...") - - while True: - if live_plot is not None and not plt.fignum_exists(live_plot.figure.number): - print("\nPlot window closed, stopping sweep.", flush=True) - break - - cycle_collection_start_time = time.monotonic() - sweep_measurement_result = measurement_controller.collect_running_sweep_cycles( - 1, - ) - cycle_duration_seconds = time.monotonic() - cycle_collection_start_time - sweep_cycle_durations_seconds.append(cycle_duration_seconds) - sweep_cycle_count += 1 - - if ( - live_plot is not None - and not plt.fignum_exists(live_plot.figure.number) - ): - print("\nPlot window closed, stopping sweep.", flush=True) - break - - if live_plot is None: - live_plot = _create_live_sweep_plot(sweep_measurement_result) - - _update_live_sweep_plot( - live_plot, - sweep_measurement_result, - sweep_cycle_count=sweep_cycle_count, - last_cycle_duration_seconds=cycle_duration_seconds, - average_cycle_duration_seconds=float( - np.mean(sweep_cycle_durations_seconds) - ), - ) - finally: - _ACTIVE_MEASUREMENT_CONTROLLER = None - _restore_termination_signal_handlers( - previous_sigint_handler, - previous_sigterm_handler, - ) - - if sweep_cycle_durations_seconds: - average_sweep_duration_seconds = float(np.mean(sweep_cycle_durations_seconds)) - minimum_sweep_duration_seconds = float(np.min(sweep_cycle_durations_seconds)) - maximum_sweep_duration_seconds = float(np.max(sweep_cycle_durations_seconds)) - print( - "Sweep time (steady-state): " - f"{average_sweep_duration_seconds:.6f} s avg, " - f"{minimum_sweep_duration_seconds:.6f}-" - f"{maximum_sweep_duration_seconds:.6f} s " - f"over {len(sweep_cycle_durations_seconds)} cycles" - ) - else: - print("Sweep time (steady-state): not enough repeated cycles to estimate") - - print("Sweep stopped.") - - -def _create_live_sweep_plot( - sweep_measurement_result: SweepMeasurementResult, -) -> LiveSweepPlot: - frequencies_mhz = sweep_measurement_result.frequencies_hz / 1e6 - s_parameter_names = sorted(sweep_measurement_result.s_parameters) - figure_height_inches = 3.5 + 2.5 * len(s_parameter_names) - figure, axes = plt.subplots( - 1 + len(s_parameter_names), - 1, - figsize=(10, figure_height_inches), - sharex=True, - ) - axes = np.atleast_1d(axes) - magnitude_axis = axes[0] - phase_axes = list(axes[1:]) - magnitude_lines: dict[str, Line2D] = {} - phase_lines: dict[str, Line2D] = {} - - for s_parameter_name in s_parameter_names: - magnitude_line, = magnitude_axis.plot( - frequencies_mhz, - np.zeros_like(frequencies_mhz), - label=s_parameter_name, - linewidth=0.9, - ) - magnitude_lines[s_parameter_name] = magnitude_line - - magnitude_axis.set_title("Multi-port S-parameters (forward, Port 1 stimulus)") - magnitude_axis.set_ylabel("Magnitude (dB)") - magnitude_axis.set_ylim(-25, 0) - magnitude_axis.grid(True, alpha=0.4) - magnitude_axis.legend(loc="lower left") - - for phase_axis, s_parameter_name in zip(phase_axes, s_parameter_names): - phase_line, = phase_axis.plot( - frequencies_mhz, - np.zeros_like(frequencies_mhz), - label=s_parameter_name, - linewidth=0.9, - ) - phase_lines[s_parameter_name] = phase_line - phase_axis.set_ylabel("Phase (deg)") - phase_axis.set_title(f"{s_parameter_name} phase") - phase_axis.set_ylim(-180, 180) - phase_axis.grid(True, alpha=0.4) - phase_axis.legend(loc="lower left") - - phase_axes[-1].set_xlabel("Frequency (MHz)") - - status_text = figure.suptitle("") - figure.tight_layout(rect=(0, 0, 1, 0.97)) - if figure.canvas.manager is not None: - figure.canvas.manager.set_window_title("LibreVNA Live Sweep") - plt.show(block=False) - - return LiveSweepPlot( - figure=figure, - status_text=status_text, - magnitude_axis=magnitude_axis, - phase_axes=phase_axes, - magnitude_lines=magnitude_lines, - phase_lines=phase_lines, - ) - - -def _update_live_sweep_plot( - live_plot: LiveSweepPlot, - sweep_measurement_result: SweepMeasurementResult, - sweep_cycle_count: int, - last_cycle_duration_seconds: float, - average_cycle_duration_seconds: float, -) -> None: - for s_parameter_name, complex_trace in sweep_measurement_result.s_parameters.items(): - magnitude_db = 20 * np.log10(np.abs(complex_trace) + 1e-15) - phase_degrees = np.rad2deg(np.angle(complex_trace)) - live_plot.magnitude_lines[s_parameter_name].set_ydata(magnitude_db) - live_plot.phase_lines[s_parameter_name].set_ydata(phase_degrees) - - live_plot.status_text.set_text( - "Cycle " - f"{sweep_cycle_count} | " - f"Last {last_cycle_duration_seconds:.3f} s | " - f"Avg {average_cycle_duration_seconds:.3f} s" - ) - live_plot.figure.canvas.draw_idle() - live_plot.figure.canvas.flush_events() - plt.pause(0.001) - - -if __name__ == "__main__": - main() diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/README.md b/device_firmware/multi_libreVNA_firmware/reproduce/README.md index 9ca444c..b08c452 100644 --- a/device_firmware/multi_libreVNA_firmware/reproduce/README.md +++ b/device_firmware/multi_libreVNA_firmware/reproduce/README.md @@ -4,9 +4,13 @@ Проект лежит целиком — не патч, а полное дерево с уже внесёнными доработками. > **Исходники опережают бинарники.** В дерево внесено переключение стимула -> внутри частотной точки (см. [`../../per_point_switching.md`](../../per_point_switching.md)), -> а лежащие рядом `.vnafw`, `extracted/` и `build*/` — это ПРЕДЫДУЩАЯ прошивка, -> собранная до этой доработки и сейчас залитая в приборы. Поэтому: +> внутри частотной точки (см. [`../../per_point_switching.md`](../../per_point_switching.md)). +> Битстрим и готовый образ с доработкой уже собраны: +> `FPGA/VNA/top_master_per_point_switching.bin` и +> `../combined_per_point_switching.vnafw`. **На железе они ещё не проверены.** +> А `combined.vnafw`, `extracted/` и `build/` — это ПРЕДЫДУЩАЯ прошивка, +> собранная до доработки и сейчас залитая в приборы, то есть путь отката. +> Поэтому: > > * `./build.sh` без аргументов по-прежнему даёт побайтовое совпадение — он > только переупаковывает готовые `.bin`, не трогая исходники; @@ -87,9 +91,18 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32 Аппаратный триггер и external-LO slave — 13 файлов (не 12: в списке не значился `PC_Application/LibreVNA-GUI/Traces/trace.cpp`, правка в GUI, к прошивкам -отношения не имеющая). Переключение стимула внутри точки добавило ещё 5 -изменённых файлов и один новый. Всё остальное дерево совпадает с апстримом байт -в байт. +отношения не имеющая). Переключение стимула внутри точки добавило ещё **7 +изменённых файлов и 2 новых** (`git diff --stat d2338ff HEAD -- reproduce/LibreVNA/`): +`FPGA/VNA/{Sweep,SPIConfig,top}.vhd`, `FPGA/VNA/VNA.xise`, +`Application/Drivers/FPGA/FPGA.{hpp,cpp}`, `Application/VNA.cpp`; новые — +`FPGA/VNA/Test_Sweep.vhd` и `FPGA/VNA/top_master_per_point_switching.bin`. + +Ещё из дерева удалён каталог `Python/` — прототип драйвера multi-device, который +переехал в `python_app/hardware_full/librevna_multi_device_driver/`. К сборке +прошивок он отношения не имел; разбор протокола из него сохранён как +[`../../librevna_protocol.md`](../../librevna_protocol.md). + +Всё остальное дерево совпадает с апстримом байт в байт. ### STM32 — поддержка аппаратного триггера (это и есть съём без USB) @@ -138,8 +151,28 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32 ### Переключение стимула внутри частотной точки -Внесено позже остального, бинарников рядом ещё нет (см. блок в начале файла). -Полное описание — [`../../per_point_switching.md`](../../per_point_switching.md). +Внесено позже остального. В репозитории лежит и битстрим +(`FPGA/VNA/top_master_per_point_switching.bin`), и готовый образ +`../combined_per_point_switching.vnafw` — оба с хешами в `SHA256SUMS`. + +Образ собран **локально на Linux тулчейном `arm-none-eabi-gcc 14.2.1`**, а не +CubeIDE 1.17.0 / gcc 12.3.1, которым собран текущий рабочий `combined.vnafw`. +Логика та же (исходники те же), но байты MCU-секции отличаются: 88 660 против +85 044. Пересобрать этим же способом: + +```sh +cd LibreVNA/Software/VNA_embedded && make BUILD_DIR=build_per_point_switching +cd .. && python3 AssembleFirmware.py \ + --bitstream FPGA/VNA/top_master_per_point_switching.bin \ + --mcu Software/VNA_embedded/build_per_point_switching/VNA_embedded.bin \ + --output ../combined_per_point_switching.vnafw +``` + +`BUILD_DIR` обязательно отдельный: в `build/` лежит эталонный +`VNA_embedded.bin`, извлечённый из рабочей прошивки, его перезаписывать нельзя. + +Полное описание — [`../../per_point_switching.md`](../../per_point_switching.md), +базовый протокол — [`../../librevna_protocol.md`](../../librevna_protocol.md). **`FPGA/VNA/Sweep.vhd`** — порт излучает не в одной стадии, а в БЛОКЕ подряд идущих: младшие `SUBSTAGE_BITS` бит счётчика стадий стали положением выходного @@ -158,6 +191,13 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32 железа нет порта 3, поле свободно, и его переиспользование не меняет формат пакета. +**`FPGA/VNA/VNA.xise`** — одна строка: `Starting Placer Cost Table (1-100) Map +spartan6` переведена с `1` на `2`. **Не сбрасывать.** Ограничение +`MCU_MOSI OFFSET hold` маргинально уже в стоке (запас +0.458 нс), поэтому любое +изменение нетлиста может его опрокинуть; с cost table 2 получается Timing Score 0 +и запас +0.642 нс, то есть больше стокового. Подробности и цифры ресурсов — в +[`../../per_point_switching.md`](../../per_point_switching.md). + **При `SUBSTAGE_BITS = 0` логика бит в бит совпадает с апстримом** — это проверено симуляцией. diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/SHA256SUMS b/device_firmware/multi_libreVNA_firmware/reproduce/SHA256SUMS index aafc9e8..eba14e1 100644 --- a/device_firmware/multi_libreVNA_firmware/reproduce/SHA256SUMS +++ b/device_firmware/multi_libreVNA_firmware/reproduce/SHA256SUMS @@ -3,6 +3,8 @@ # готовые прошивки 00431d534c2b2ccb05069399158b7a7f58f70d6955f3885ae322191683fc86d4 *../combined.vnafw adf7b7c7bbc0f85af94876eef4ef6c774e434862977f716099df9c71599f14e6 *../combined_external_lo_slave.vnafw +# переключение стимула внутри частотной точки (собрано локально, gcc 14.2.1) +e8c2b2c743ad3aed6f89ecb59f5d13c585203c88378b2d5f770c3e0a88463f17 *../combined_per_point_switching.vnafw # секции, извлечённые из них c0e69bbcadd9fac20de10acbe1875ceba39cc7ce35a7c64ed54f44150560ef75 *extracted/master_fpga.bin ba729999be7849187704cf4ccbc4ae4a8877b0860eee1b44225c0585537bb091 *extracted/master_stm32.bin @@ -16,5 +18,5 @@ e184eb92bef1c698849511845fa8d7543287ed1e696c2b461520533112913113 *LibreVNA/FPGA/ ba729999be7849187704cf4ccbc4ae4a8877b0860eee1b44225c0585537bb091 *LibreVNA/Software/VNA_embedded/build/VNA_embedded.bin 56654a0344556d24ecca10f119e0226b8297a2bb89d1aa4217280854e9ffa7bd *LibreVNA/Software/VNA_embedded/build_external_lo_slave/VNA_embedded.bin # комплект -a3c88be8abbff988650d7fe20f4a93745d46c347c9d0936aa5b43a1ff29dc70b *README.md +9e0b675e8c5b31c5ee46e15380c498540ef06f0267f8595821e0d0c470c4ac92 *README.md be686c2000094acb7703727a3eb9249f7ae8a3517dc7d8630fe97f394aadb849 *build.sh diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt index 578ac00..57c0cce 100644 --- a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt @@ -7,17 +7,26 @@ device_firmware/per_point_switching.md в репозитории. ЧТО ЗДЕСЬ --------- - files\ 7 изменённых файлов дерева LibreVNA + make_files.sh собирает files\ и SHA256_new.txt из дерева репозитория + files\ 8 файлов дерева LibreVNA (НЕ в git, генерируется) install.cmd бэкап оригиналов + установка + сборка MCU build_mcu.cmd только сборка MCU (если правки уже стоят) backup_original\ появится после install.cmd — оригиналы для отката - SHA256_new.txt хеши установленных файлов для проверки + SHA256_new.txt хеши устанавливаемых файлов для проверки Изменены: FPGA/VNA/{Sweep,SPIConfig,top}.vhd, + FPGA/VNA/VNA.xise <- закреплён Starting Placer Cost Table = 2, + без него сборка даёт нарушение тайминга Software/VNA_embedded/Application/VNA.cpp, Software/VNA_embedded/Application/Drivers/FPGA/FPGA.{cpp,hpp} Добавлен: FPGA/VNA/Test_Sweep.vhd (тестбенч, в проект ISE не входит) +ПЕРЕД ОТПРАВКОЙ НА WINDOWS запустить на машине с репозиторием: + bash install_windows/make_files.sh +Каталог files\ не версионируется намеренно: когда он лежал в git, после +переделки Sweep.vhd и закрепления cost table комплект молча остался со старыми +версиями. Генерация из дерева исключает это. + ВАЖНО: ПЕРЕПРОШИВАТЬ НАДО ТОЛЬКО МАСТЕР --------------------------------------- Слейвы остаются как есть. Хост выставляет им обе порт-стадии в 7, а стоковое @@ -40,10 +49,14 @@ device_firmware/per_point_switching.md в репозитории. /home/ise/shared/LibreVNA/FPGA). 2. В ISE открыть VNA.xise — проект МАСТЕРА. Не VNA_external_lo_slave.xise. 3. Process -> Generate Programming File. -4. Забрать top.bin СРАЗУ и переименовать в top_master.bin: оба проекта пишут в - один и тот же файл, и следующая сборка его затрёт. Именно так был потерян - исходный мастер-битстрим. -5. Положить top_master.bin в ...\reproduce\LibreVNA\FPGA\VNA\ +4. Забрать top.bin СРАЗУ и переименовать в top_master_per_point_switching.bin: + оба проекта пишут в один и тот же top.bin, и следующая сборка его затрёт. + Именно так был потерян исходный мастер-битстрим. +5. Положить его в ...\reproduce\LibreVNA\FPGA\VNA\ + + ВНИМАНИЕ: имя обязательно новое. Лежащий там top_master.bin — копия + НЕВОСПРОИЗВОДИМОГО битстрима текущей рабочей прошивки, перезаписывать его + нельзя ни при каких обстоятельствах. Битстрим невоспроизводим побайтово (place & route недетерминирован плюс timestamp внутри), так что новый файл будет отличаться от старого при любом @@ -52,7 +65,7 @@ timestamp внутри), так что новый файл будет отлич ШАГ 3. Упаковка .vnafw ---------------------- cd %USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA - python AssembleFirmware.py --bitstream FPGA\VNA\top_master.bin ^ + python AssembleFirmware.py --bitstream FPGA\VNA\top_master_per_point_switching.bin ^ --mcu Software\VNA_embedded\build\VNA_embedded.bin ^ --output ..\combined_per_point_switching.vnafw @@ -67,7 +80,8 @@ LibreVNA-GUI: Device -> Firmware Update, скормить .vnafw целиком. --------------- 1. Сначала СТАРЫЙ режим (stimulus_switch_positions: 1) — должен работать ровно как раньше. Только потом включать переключение. -2. Осциллографом на контроллере ключа: PB2 — положение ключа, PB5 — импульс на +2. Осциллографом на контроллере ключа: PB2 и PB6 — положение ключей (порт 1 и + порт 2, меняются одновременно), PB5 — импульс на каждое исправление чётности (в норме молчит). На одной частоте должно быть четыре стадии и два периода A B A B. 3. По USB CDC контроллера, остановив развёртку: parity corrections : 0 и diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt index 918a044..b974344 100644 --- a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt @@ -1,7 +1,8 @@ +3cf838aeda126e38397eb97ab10519cc50c725f8c05090890f05837d759c63f2 ./FPGA/VNA/Sweep.vhd 7b59127f46dc16d3a22de4cff02a8499b51465ba29bd5f0be491149022828a8a ./FPGA/VNA/SPIConfig.vhd -624a5324ae13fd87285e59edea301ffb5e7eab8f2fed99418759fca52401b3b0 ./FPGA/VNA/Sweep.vhd -02cc0cf7fe2e253a253843578ab6195f1300702afb00c4ca43b3dbc8df118183 ./FPGA/VNA/Test_Sweep.vhd e70da2b4216862a44b12e4cbde951442ccf1a4b919103fcdd4010613b43cfe46 ./FPGA/VNA/top.vhd +a7cc99e473ab2ec704c55405e3f1cbcd75315fe14f65ee1dfc7b8dce11eb4ca4 ./FPGA/VNA/VNA.xise +5f8b7eeeb495b6c74e9b5137a6e8bd7dc0200fd084a7f0eaf67f2ee0a7c6b5a3 ./FPGA/VNA/Test_Sweep.vhd +fb116ff5aaf4161052e77837ac78a6824833e87372a6ce5dd142e0240fc17379 ./Software/VNA_embedded/Application/VNA.cpp e12a9be4eee75d8b39b4b21fa7788f310d87ec22ae068ae7e82de9df91555db4 ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp db3ad784c1b1e912c7986f98616585b4fe5d2e0c995d9c66268f756ec4d176ad ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp -fb116ff5aaf4161052e77837ac78a6824833e87372a6ce5dd142e0240fc17379 ./Software/VNA_embedded/Application/VNA.cpp diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd index 21b771e..c375bf7 100644 --- a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd @@ -23,14 +23,22 @@ if not exist "%APPDIR%" mkdir "%APPDIR%" copy /y "%ROOT%\FPGA\VNA\Sweep.vhd" "%FPGADIR%\" >nul || exit /b 1 copy /y "%ROOT%\FPGA\VNA\SPIConfig.vhd" "%FPGADIR%\" >nul || exit /b 1 copy /y "%ROOT%\FPGA\VNA\top.vhd" "%FPGADIR%\" >nul || exit /b 1 +rem VNA.xise тоже правится: в нём закреплён Starting Placer Cost Table = 2, +rem без которого сборка даёт нарушение тайминга по MCU_MOSI hold. +copy /y "%ROOT%\FPGA\VNA\VNA.xise" "%FPGADIR%\" >nul || exit /b 1 copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.cpp" "%DRVDIR%\" >nul || exit /b 1 copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.hpp" "%DRVDIR%\" >nul || exit /b 1 copy /y "%ROOT%\Software\VNA_embedded\Application\VNA.cpp" "%APPDIR%\" >nul || exit /b 1 -echo 6 файлов сохранено в backup_original\ +echo 7 файлов сохранено в backup_original\ echo === Установка новых файлов === +if not exist "%STAGE%" ( + echo ОШИБКА: нет каталога files\ — соберите его из дерева репозитория: + echo bash install_windows/make_files.sh + exit /b 1 +) xcopy /s /y "%STAGE%\*" "%ROOT%\" >nul || exit /b 1 -echo 7 файлов установлено (6 изменённых + Test_Sweep.vhd) +echo 8 файлов установлено (7 изменённых + Test_Sweep.vhd) echo === Сборка прошивки MCU мастера === call "%~dp0build_mcu.cmd" diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/make_files.sh b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/make_files.sh new file mode 100755 index 0000000..0b8e448 --- /dev/null +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/make_files.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +# Собирает payload install_windows/files/ из дерева LibreVNA этого репозитория +# и переписывает SHA256_new.txt. +# +# Зачем скрипт, а не файлы в git: раньше files/ и SHA256_new.txt заполнялись +# руками, и после переделки Sweep.vhd (маска вместо сдвига) и закрепления cost +# table в VNA.xise комплект молча остался со СТАРЫМИ версиями. Установка таким +# комплектом вернула бы битстрим с нарушением тайминга. Генерация из дерева +# делает этот класс расхождений невозможным. +# +# files/ в .gitignore: это копия того, что и так лежит в дереве. + +set -euo pipefail + +KIT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TREE="$(cd "$KIT_DIR/../LibreVNA" && pwd)" +STAGE="$KIT_DIR/files" + +# Пути относительно корня дерева LibreVNA. Порядок — как в README.txt. +FILES=( + FPGA/VNA/Sweep.vhd + FPGA/VNA/SPIConfig.vhd + FPGA/VNA/top.vhd + FPGA/VNA/VNA.xise + FPGA/VNA/Test_Sweep.vhd + Software/VNA_embedded/Application/VNA.cpp + Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp + Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp +) + +rm -rf "$STAGE" +for relative_path in "${FILES[@]}"; do + source_file="$TREE/$relative_path" + [[ -f "$source_file" ]] || { echo "нет файла: $source_file" >&2; exit 1; } + mkdir -p "$STAGE/$(dirname "$relative_path")" + cp "$source_file" "$STAGE/$relative_path" +done + +( cd "$STAGE" && sha256sum $(printf './%s\n' "${FILES[@]}") ) > "$KIT_DIR/SHA256_new.txt" + +echo "files/: ${#FILES[@]} файл(ов), SHA256_new.txt обновлён" +echo "Проверка на Windows: certutil -hashfile <файл> SHA256" diff --git a/device_firmware/per_point_switching.md b/device_firmware/per_point_switching.md index ceaf32b..6167471 100644 --- a/device_firmware/per_point_switching.md +++ b/device_firmware/per_point_switching.md @@ -12,6 +12,10 @@ когерентности: все 16 комбинаций снимаются в пределах ~0.4 мс на одной частоте вместо разброса в сотни миллисекунд между развёртками. +Базовое устройство протокола, поверх которого всё это работает (кадр, типы +пакетов, `SweepSettings`, разбор `VNADatapoint`) — в +[librevna_protocol.md](librevna_protocol.md). + ## Раскладка стадий | Стадия | Порт мастера | Ключ | Выход | @@ -33,8 +37,10 @@ ## Контракт по проводу -Хост уже отправляет это (см. `build_sweep_settings_payload`), прошивка должна -считать. Слово стадий в `SweepSettings` (16 бит, смещение 25 в payload): +Хост отправляет это в `build_sweep_settings_payload`, прошивка читает — обе +стороны реализованы. Слово стадий в `SweepSettings` (16 бит, смещение 25 в +payload из 31 байта; раскладку payload целиком см. +[librevna_protocol.md](librevna_protocol.md)): | Биты | Поле | Значение в этом режиме | |---|---|---| @@ -155,6 +161,70 @@ ghdl -a --std=93 Sweep.vhd Test_Sweep.vhd && ghdl -r --std=93 Test_Sweep VHDL держите в чистом ASCII: GHDL отвергает не-ASCII символы даже в комментариях. +### Проверено на железе 2026-09-11 + +Мастер прошит `combined_per_point_switching.vnafw`, контроллер врезан в петлю, +ВЧ-ключ **не** подключён. Скрипт +[`per_point_switching_check.py`](../python_app/scripts/per_point_switching_check.py) +снял 8 коллекций по 16 трасс: + +```text +выход 0: -71.5 дБ выходы 0 и 1: расхождение 0.5 дБ +выход 1: -72.0 дБ выходы 2 и 3: расхождение 1.3 дБ +выход 2: -70.6 дБ +выход 3: -71.9 дБ +``` + +Что именно этим доказано: + +- **Битстрим в приборе доработанный.** Со стоковым сравнением «стадия равна + порт-стадии» излучали бы только стадии 0 и 2, а выходы 1 и 3 провалились бы в + шум. Здесь все четыре на одном уровне. +- **Петля триггера с контроллером замкнута.** При `syncMode = 3` мастер семплирует + по вернувшемуся триггеру, так что без исправного зеркалирования в STM32 данных + не было бы вовсе. +- **Выходы попарно совпадают**, как и должно быть при отключённом ключе: обе его + позиции — физически один путь. + +Считать фронты для этой проверки **бессмысленно**: поле `stages` стоковое, сток +тоже отработает четыре стадии на точку, просто без стимула в 1 и 3. + +Межстадийная пауза, измеренная контроллером, — **62 мкс**, ровно `dwell_us = 2` +плюс 60 мкс собственного успокоения PLL прибора. Но распознавание границ точек по +длине паузы работает плохо, коэффициент 1.5 оказался мал — подробности и цифры в +[README контроллера](switch_controller/README.md). На переключение это не влияет. + +### Проверено с подключённым ВЧ-ключом, 30–200 МГц + +Профиль `run_config_examples/run_config_librevna_multi_per_point_lowband.example.json`: +30–200 МГц, IFBW 50 кГц, 201 точка. Диапазон выбран выше +`HW::BandSwitchFrequency = 25 МГц` — ниже неё прибор уходит на путь Si5351 через +I2C, останавливает развёртку и даёт нерегулярные длинные паузы. Верхняя граница +200 МГц лежит в полосе осциллографа, поэтому стимул видно напрямую. + +Медиана `|S21|` по трём повторам, дБ: + +| вход | выход 0 (A) | выход 1 (B) | выход 2 (A) | выход 3 (B) | +|---|---|---|---|---| +| 0 | **−5.4** | −77.1 | −69.8 | −78.0 | +| 1 | −69.2 | −68.9 | −69.0 | −69.1 | +| 2 | −77.1 | −77.7 | −76.4 | −77.9 | +| 3 | −73.6 | −73.8 | −72.8 | −73.5 | + +Подключён был один тракт — вход 0 в выход 0. Разница между двумя положениями +одного и того же порта мастера (выходы 0 и 1) составила **72 дБ**: в положении A +сигнал идёт в подключённый кабель, в положении B — в открытый порт. Это и есть +прямое доказательство, что ключ переключается по стадиям. Повторяемость +0.0–1.8 дБ, на сигнальном тракте 0.0 дБ. + +**Ограничение по IFBW.** При `if_bandwidth_hz = 1000` прибор воспроизводимо +падает: `LIBUSB_ERROR_IO`, затем устройства отваливаются с шины +(`LIBUSB_ERROR_NO_DEVICE`). Ограничения по числу отсчётов тут нет — 800 отсчётов +против предела 8191, — так что причина, вероятно, в возросшей скважности +источника (при 1 кГц он включён 94% времени против 24% при 50 кГц) и, значит, в +среднем токе. IFBW 5, 10, 20 и 50 кГц собираются нормально. **Штатным считать +50 кГц**, ниже 5 кГц не опускаться без проверки питания приборов. + ## Прошивка STM32 LibreVNA Сделано, собирается. Для самих стадий менять было нечего: `stageCnt` уже считается @@ -198,9 +268,10 @@ STM32 прибора в Hi-Z на обеих линиях (`GPIO_MODE_INPUT`, `N границе точки. Спад означает «оцифровка закончилась», дальше идёт окно успокоения следующей стадии (~62 мкс при `dwell_us = 2`), которого ключу хватает с огромным запасом. -3. **Одна нога на оба ключа.** Нужное положение зависит только от номера стадии, - а не от того, какой порт излучает, поэтому ключи на порту 1 и порту 2 ходят - синхронно. +3. **По ноге на каждый ключ, но ходят они синхронно.** Нужное положение зависит + только от номера стадии, а не от того, какой порт излучает. PB2 управляет + ключом выходного порта 1, PB6 — порта 2; оба вывода на порту B, поэтому + переключаются одной записью в `BSRR`, то есть строго одновременно. Страховка от сбоя чётности: один потерянный фронт инвертирует чередование навсегда и молча меняет антенны местами. Контроллер распознаёт границу точки по @@ -273,11 +344,17 @@ make BINPATH="<путь к arm-none-eabi из CubeIDE>/tools/bin" -j4 ### 3. Упаковка .vnafw +Готовый образ уже лежит в репозитории: +`multi_libreVNA_firmware/combined_per_point_switching.vnafw`, хеш в +`reproduce/SHA256SUMS`. Пересобрать: + ```bash -cd multi_libreVNA_firmware/reproduce/LibreVNA +cd multi_libreVNA_firmware/reproduce/LibreVNA/Software/VNA_embedded +make BUILD_DIR=build_per_point_switching # НЕ в build/: там эталон +cd ../.. python3 AssembleFirmware.py \ --bitstream FPGA/VNA/top_master_per_point_switching.bin \ - --mcu Software/VNA_embedded/build/VNA_embedded.bin \ + --mcu Software/VNA_embedded/build_per_point_switching/VNA_embedded.bin \ --output ../combined_per_point_switching.vnafw ``` @@ -300,8 +377,9 @@ GUI сам разложит битстрим и прошивку MCU. (`stimulus_switch_positions: 1`) работает как раньше — включать переключение. Порядок проверки на стенде: -1. Осциллографом на PB2 и PB5 контроллера: на одной частоте четыре стадии и два - периода `A B A B`, PB5 молчит. +1. Осциллографом на PB2, PB6 и PB5 контроллера: на одной частоте четыре стадии и + два периода `A B A B`, PB2 и PB6 меняются одновременно и в одну сторону, PB5 + молчит. 2. По USB CDC контроллера (развёртку остановить): `parity corrections : 0` и `stages per point : 4`. 3. Сверить трейсы: выходы 0 и 1 должны совпасть с тем, что даёт старый режим — diff --git a/python_app/scripts/per_point_switching_check.py b/python_app/scripts/per_point_switching_check.py new file mode 100644 index 0000000..f56ec04 --- /dev/null +++ b/python_app/scripts/per_point_switching_check.py @@ -0,0 +1,194 @@ +"""Проверка на железе, что переключение стимула внутри частотной точки работает. + +Зачем отдельная проверка. Число триггерных фронтов на частотную точку НЕ +различает стоковый битстрим от доработанного: поле ``stages`` в ``SweepSettings`` +стоковое, и сток тоже отрабатывает четыре стадии на точку. Отличие в том, КАКИЕ +стадии излучают. Сток сравнивает счётчик стадий с порт-стадией точно, поэтому при +``port1Stage = 0`` и ``port2Stage = 2`` излучают только стадии 0 и 2, а 1 и 3 +остаются без стимула. Доработанный битстрим сравнивает по маске, и порт излучает +во всём блоке: 0 и 1 — порт 1, 2 и 3 — порт 2. + +Отсюда две проверки по данным: + +1. **Во всех четырёх выходах есть сигнал.** Если выходы 1 и 3 на уровне шума — + в приборе стоковый битстрим, заливка FPGA не удалась. +2. **Выходы попарно совпадают, когда ВЧ-ключ не подключён.** Тогда обе позиции + ключа — это физически один и тот же путь, поэтому 0 ≈ 1 и 2 ≈ 3. Расхождение + при отключённом ключе означает, что по стадиям разъезжается что-то ещё. + +Заодно проверяется и контроллер в петле триггера: при ``syncMode = 3`` мастер +семплирует по вернувшемуся триггеру, так что без исправного зеркалирования в STM32 +развёртка просто не пойдёт и данных не будет вовсе. + +Запуск (на машине, к которой подключены приборы): + + .venv/bin/python -m python_app.scripts.per_point_switching_check \\ + --config run_config.json --collections 3 +""" + +from __future__ import annotations + +import argparse +import logging +import statistics +from pathlib import Path + +import numpy as np + +from python_app.hardware_full.librevna_multi_device_driver.models import ( + build_output_channels, + normalize_master_stimulus_ports, +) +from python_app.hardware_full.matrix_radar_service import create_matrix_radar_service +from python_app.models.dataset_model import SweepCollection +from python_app.models.run_config_model import RunConfigModel + +logger = logging.getLogger(__name__) + +# Порты мастера, которые подставляет контроллер по умолчанию в +# `configure_continuous_sweep`. Держится здесь, чтобы раскладка выходов в этой +# проверке считалась ровно так же, как в драйвере. +MASTER_STIMULUS_PORTS = (1, 2) + +# Ниже этого уровня считаем, что стимула в стадии не было. Порог грубый нарочно: +# разница между «излучает» и «не излучает» — это десятки дБ, а не единицы. +NOISE_FLOOR_DBFS = -80.0 +# Насколько выходы одной пары могут расходиться при ОТКЛЮЧЁННОМ ключе. +PAIR_TOLERANCE_DB = 6.0 + + +def magnitude_db(values: np.ndarray) -> float: + """Медианный модуль трассы в дБ; медиана устойчива к отдельным выбросам.""" + finite = values[np.isfinite(values)] + if finite.size == 0: + return float("-inf") + magnitude = float(np.median(np.abs(finite))) + if magnitude <= 0.0: + return float("-inf") + return 20.0 * float(np.log10(magnitude)) + + +def build_switch_position_pairs(config: RunConfigModel) -> list[tuple[int, int]]: + """Пары выходов «один порт мастера в двух положениях ключа». + + Берётся из той же модели, что и раскладка стадий, поэтому не разъедется с + драйвером. Соседние индексы сравнивать НЕЛЬЗЯ: при двух портах и двух + положениях выход 0 — порт 1 в A, выход 1 — порт 2 в A, выход 2 — порт 1 в B, + выход 3 — порт 2 в B. Сравнивать надо (0, 2) и (1, 3). + """ + # Те же порты мастера, что подставляет контроллер по умолчанию + # (`configure_continuous_sweep(master_stimulus_ports=(1, 2))`). + channels = build_output_channels( + normalize_master_stimulus_ports(MASTER_STIMULUS_PORTS), + config.matrix_stimulus_switch_positions, + ) + by_port: dict[int, list[int]] = {} + for channel in channels: + by_port.setdefault(channel.stimulus_port, []).append(channel.index) + pairs: list[tuple[int, int]] = [] + for indices in by_port.values(): + ordered = sorted(indices) + pairs.extend(zip(ordered, ordered[1:])) + return pairs + + +def summarize(collection: SweepCollection) -> dict[int, list[float]]: + """Сгруппировать медианные уровни s21 по номеру выхода.""" + by_output: dict[int, list[float]] = {} + for trace in collection.traces: + by_output.setdefault(trace.combo.output, []).append(magnitude_db(trace.s21)) + return by_output + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument("--config", required=True, type=Path, help="Путь к run_config.json") + parser.add_argument("--collections", type=int, default=3, help="Сколько коллекций снять (по умолчанию 3)") + parser.add_argument( + "--switch-connected", + action="store_true", + help="ВЧ-ключ подключён: выходы одной пары теперь ДОЛЖНЫ различаться " + "(это разные антенны), поэтому расхождение — признак работы, а не ошибки", + ) + args = parser.parse_args() + + logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s") + + config = RunConfigModel.load_from_path(args.config) + config.apply_device_model_constraints() + + if not config.is_matrix_radar: + raise SystemExit("нужен матричный radar.model (librevna_multi)") + substages = config.matrix_stimulus_switch_positions + outputs = config.output_switch.positions + print(f"конфиг: stimulus_switch_positions={substages}, выходов={outputs}, " + f"входов={config.input_switch.positions}, combos={len(config.combos)}, " + f"driver_mode={config.radar.driver_mode}") + if substages <= 1: + raise SystemExit("stimulus_switch_positions = 1: проверять нечего, режим выключен") + + radar = create_matrix_radar_service(config) + radar.open() + try: + radar.configure(config.radar.sweep) + per_output: dict[int, list[float]] = {} + for index in range(max(1, args.collections)): + collection = radar.acquire_collection(collection_id=index + 1) + print(f" коллекция {index + 1}: трасс {len(collection.traces)}") + for output, levels in summarize(collection).items(): + per_output.setdefault(output, []).extend(levels) + finally: + radar.close() + + if not per_output: + raise SystemExit("данных нет — развёртка не прошла (проверьте петлю триггера и контроллер)") + + print("\nмедианный уровень s21 по выходам:") + medians: dict[int, float] = {} + for output in sorted(per_output): + medians[output] = statistics.median(per_output[output]) + print(f" выход {output}: {medians[output]:+7.1f} дБ (трасс {len(per_output[output])})") + + verdict_ok = True + + silent = [o for o, db in medians.items() if db < NOISE_FLOOR_DBFS] + print("\n1) стимул во всех стадиях:") + if silent: + verdict_ok = False + print(f" ПРОВАЛ: без сигнала выходы {silent}. Похоже, в мастере СТОКОВЫЙ битстрим:") + print(" он излучает только в стадиях, точно равных порт-стадии (0 и 2).") + else: + print(" ок: сигнал есть во всех выходах, значит порт излучает во всём блоке стадий") + + if args.switch_connected: + print("2) различие выходов внутри пары (ключ ПОДКЛЮЧЁН, ждём разные антенны):") + else: + print("2) попарное совпадение выходов (ключ не подключён, ждём один и тот же путь):") + # Пары берутся из самой модели, а не из арифметики по индексам: сравнивать + # надо ОДИН порт мастера в двух положениях ключа, а соседние индексы — это + # РАЗНЫЕ порты в одном положении (выход 0 = порт 1 A, выход 1 = порт 2 A, + # выход 2 = порт 1 B, выход 3 = порт 2 B). + pairs = build_switch_position_pairs(config) + for low, high in pairs: + if low not in medians or high not in medians: + continue + delta = abs(medians[low] - medians[high]) + differs = delta > PAIR_TOLERANCE_DB + # Ключ подключён -> позиции ведут на РАЗНЫЕ антенны, совпадение значило бы, + # что ключ не движется. Ключ не подключён -> путь один, ждём совпадение. + good = differs if args.switch_connected else not differs + if not good: + verdict_ok = False + if args.switch_connected: + status = "ок, ключ переключается" if good else "СОВПАДАЮТ — ключ, похоже, не движется" + else: + status = "ок" if good else "РАСХОЖДЕНИЕ" + print(f" выходы {low} и {high}: расхождение {delta:4.1f} дБ — {status}") + + print("\nИТОГ:", "переключение стимула внутри точки работает" if verdict_ok + else "проверка НЕ пройдена, см. выше") + return 0 if verdict_ok else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/run_config.json b/run_config.json index e04d6f7..a5eaa58 100644 --- a/run_config.json +++ b/run_config.json @@ -1,7 +1,7 @@ { "radar": { "model": "librevna_multi", - "serial": "", + "serial": "206830985532", "remote_host": "127.0.0.1", "remote_port": 50209, "driver_mode": "mock", @@ -9,13 +9,14 @@ "visa_library": "", "multi_device": { "slave_serials": [ - "20A1307D5532", - "2072306C5532" + "206930965532", + "206930A15532" ], - "force_external_reference": false, + "force_external_reference": true, "recovery_attempts": 3, "output_switch_positions": 1, - "input_switch_positions": 3 + "input_switch_positions": 1, + "stimulus_switch_positions": 2 }, "kamil_adc": { "project_dir": "", @@ -62,7 +63,8 @@ "max_value": 35.0, "step": 0.1, "time_step": 20, - "delay_time": 3 + "delay_time": 3, + "temp_tolerance_c": 0.03 } }, "sweep": { @@ -70,6 +72,7 @@ "stop_hz": 6000000000.0, "if_bandwidth_hz": 50000.0, "stimulus_power_dbm": -10.0, + "dwell_us": 2, "points": 201 } }, @@ -79,7 +82,7 @@ "driver_mode": "mock", "driver": "h7992", "radar_port": 1, - "positions": 2, + "positions": 4, "default_position": 0, "gpio_chip": "/dev/gpiochip0", "pin_a": 17, @@ -91,7 +94,7 @@ "driver_mode": "mock", "driver": "h7992", "radar_port": 2, - "positions": 12, + "positions": 4, "default_position": 0, "gpio_chip": "/dev/gpiochip0", "pin_a": 22, @@ -115,7 +118,7 @@ "settling_ms": 0, "idle_sleep_ms": 2, "continuous": true, - "processing_live_config_path": "/home/guriy/Documents/radar_system/python_app/runtime/processing_live.json", + "processing_live_config_path": "python_app/runtime/processing_live.json", "locator_server": { "device_id": 3, "protocol_version": 1, @@ -142,38 +145,6 @@ "input": 3, "output": 0 }, - { - "input": 4, - "output": 0 - }, - { - "input": 5, - "output": 0 - }, - { - "input": 6, - "output": 0 - }, - { - "input": 7, - "output": 0 - }, - { - "input": 8, - "output": 0 - }, - { - "input": 9, - "output": 0 - }, - { - "input": 10, - "output": 0 - }, - { - "input": 11, - "output": 0 - }, { "input": 0, "output": 1 @@ -191,36 +162,36 @@ "output": 1 }, { - "input": 4, - "output": 1 + "input": 0, + "output": 2 }, { - "input": 5, - "output": 1 + "input": 1, + "output": 2 }, { - "input": 6, - "output": 1 + "input": 2, + "output": 2 }, { - "input": 7, - "output": 1 + "input": 3, + "output": 2 }, { - "input": 8, - "output": 1 + "input": 0, + "output": 3 }, { - "input": 9, - "output": 1 + "input": 1, + "output": 3 }, { - "input": 10, - "output": 1 + "input": 2, + "output": 3 }, { - "input": 11, - "output": 1 + "input": 3, + "output": 3 } ] }, @@ -276,6 +247,18 @@ "x_m": -0.905, "y_m": 0.0, "z_m": 0.0 + }, + { + "output_pos": 2, + "x_m": 0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 3, + "x_m": -0.905, + "y_m": 0.0, + "z_m": 0.0 } ], "rx_geometry": [ @@ -302,54 +285,6 @@ "x_m": 0.185, "y_m": 0.0, "z_m": 0.0 - }, - { - "input_pos": 4, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 5, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 6, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 7, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 8, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 9, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 10, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 - }, - { - "input_pos": 11, - "x_m": 0.0, - "y_m": 0.0, - "z_m": 0.0 } ] }, @@ -379,100 +314,5 @@ "capacity": 50, "slot_size_bytes": 2097152 } - }, - "gui": { - "version": 1, - "switches": { - "combo_mode": "text", - "combos_text": "0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,0:1,1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1", - "single_input": "0", - "single_output": "0" - }, - "processing": { - "selected_mode": "gpr", - "pass_through": { - "show_magnitude": true, - "show_phase": false, - "unwrap_phase": false, - "combo_filter": "", - "fixed_y_enabled": false, - "y_min_db": -100.0, - "y_max_db": 0.0 - }, - "bscan": { - "axis": "abs", - "cut_m": 0.0, - "max_depth_m": 3.0, - "gain": 1.0, - "start_freq_mhz": 100.0, - "stop_freq_mhz": 6000.0, - "subtract_mean_ascan": false - }, - "gpr": { - "input_positions": "0,1,2,3", - "output_positions": "0,1", - "min_depth_m": 2.0, - "max_depth_m": 14.0, - "range_comp_power": 0.1, - "object_min_frac": 0.7, - "score_mode": "combined", - "motion_mode": "int_minus", - "look_angle_deg": 0.0, - "direction_sign": 1.0, - "speed_m_s": 0.0, - "ignore_socket_speed_enabled": false, - "max_detected_objects_to_draw": 5, - "draw_top_m_objects": 2, - "object_approach_min_frames": 3, - "start_freq_mhz": 3000.0, - "stop_freq_mhz": 6000.0, - "background_subtract_enabled": true, - "background_mean_count": 10, - "remove_sidelobe_objects_enabled": false, - "imaging_plane_y_m": 0.0, - "render_mode": "heatmap", - "visible_x_min_m": -2.0, - "visible_x_max_m": 2.0, - "visible_z_min_m": 0.0, - "visible_z_max_m": 14.0 - }, - "legacy_gpr": { - "mode": "point", - "input_positions": "0,1,2,3", - "output_positions": "0,1", - "min_depth_m": 2.0, - "max_depth_m": 14.0, - "comp_power": 0.2, - "start_freq_mhz": 3000.0, - "stop_freq_mhz": 6000.0, - "speed_m_s": 0.0, - "ignore_socket_speed_enabled": false, - "look_angle_deg": 0.0, - "apply_freq_phase_correction": true, - "reference_mode": "frame_center", - "snr_thresh": 4.5, - "snr_comp_max": 25.0, - "background_subtract_enabled": true, - "background_mean_count": 10, - "render_mode": "heatmap", - "min_visible_pair_count": 1, - "visible_x_min_m": -2.0, - "visible_x_max_m": 2.0, - "visible_z_min_m": 0.0, - "visible_z_max_m": 14.0 - } - }, - "data_actions": { - "save_count": 10, - "save_path": "python_app/data/snapshots", - "save_name": "snapshot_simulator", - "record_count": 100 - }, - "preprocess_dialog": { - "set_name": "smoke_cal", - "radar_config_dir": "", - "use_all_radar_configs": false, - "median_sweep_count": 5 - } } -} \ No newline at end of file +} diff --git a/run_config_examples/run_config_librevna_multi_per_point.example.json b/run_config_examples/run_config_librevna_multi_per_point.example.json new file mode 100644 index 0000000..533cba1 --- /dev/null +++ b/run_config_examples/run_config_librevna_multi_per_point.example.json @@ -0,0 +1,318 @@ +{ + "radar": { + "model": "librevna_multi", + "serial": "206830985532", + "remote_host": "127.0.0.1", + "remote_port": 50209, + "driver_mode": "native", + "mock_signal_hz": 5000000.0, + "visa_library": "", + "multi_device": { + "slave_serials": [ + "206930965532", + "206930A15532" + ], + "force_external_reference": true, + "recovery_attempts": 3, + "output_switch_positions": 1, + "input_switch_positions": 1, + "stimulus_switch_positions": 2 + }, + "kamil_adc": { + "project_dir": "", + "executable_path": "", + "tty_path": "", + "args": [], + "env": {}, + "startup_timeout_s": 5.0, + "sweep_timeout_s": 5.0, + "stop_timeout_s": 2.0, + "phase_calibration": { + "phase0_rad": 0.0, + "freq0_hz": 2046000000.0, + "phase1_rad": 300.0, + "freq1_hz": 5612000000.0 + }, + "band": { + "start_hz": 2100000000.0, + "stop_hz": 5500000000.0, + "points": 2048 + } + }, + "laser_control": { + "enabled": false, + "port": "", + "mode": "manual", + "pi_coeff1_p": 2560, + "pi_coeff1_i": 128, + "pi_coeff2_p": 2560, + "pi_coeff2_i": 128, + "manual": { + "temp1": 25.0, + "temp2": 25.0, + "current1": 30.0, + "current2": 30.0 + }, + "variation": { + "variation_type": "CHANGE_CURRENT_LD1", + "static_temp1": 25.0, + "static_temp2": 25.0, + "static_current1": 30.0, + "static_current2": 30.0, + "min_value": 30.0, + "max_value": 35.0, + "step": 0.1, + "time_step": 20, + "delay_time": 3, + "temp_tolerance_c": 0.03 + } + }, + "sweep": { + "start_hz": 1000000.0, + "stop_hz": 6000000000.0, + "if_bandwidth_hz": 50000.0, + "stimulus_power_dbm": -10.0, + "dwell_us": 2, + "points": 201 + } + }, + "switches": { + "port1": { + "name": "port1", + "driver_mode": "mock", + "driver": "h7992", + "radar_port": 1, + "positions": 4, + "default_position": 0, + "gpio_chip": "/dev/gpiochip0", + "pin_a": 17, + "pin_b": 27, + "invert_logic": false + }, + "port2": { + "name": "port2", + "driver_mode": "mock", + "driver": "h7992", + "radar_port": 2, + "positions": 4, + "default_position": 0, + "gpio_chip": "/dev/gpiochip0", + "pin_a": 22, + "pin_b": 23, + "invert_logic": false + } + }, + "control_button": { + "enabled": false, + "gpio_chip": "/dev/gpiochip0", + "pin": -1, + "active_low": true, + "bias": "", + "debounce_ms": 50, + "action": "capture_tmp_reference" + }, + "logging": { + "level": "debug" + }, + "run": { + "settling_ms": 0, + "idle_sleep_ms": 2, + "continuous": true, + "processing_live_config_path": "python_app/runtime/processing_live.json", + "locator_server": { + "device_id": 3, + "protocol_version": 1, + "host": "0.0.0.0", + "port": 8888, + "max_payload_bytes": 65536, + "client_queue_size": 32, + "logger_name": "locator_runtime" + }, + "combos": [ + { + "input": 0, + "output": 0 + }, + { + "input": 1, + "output": 0 + }, + { + "input": 2, + "output": 0 + }, + { + "input": 3, + "output": 0 + }, + { + "input": 0, + "output": 1 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 1 + }, + { + "input": 3, + "output": 1 + }, + { + "input": 0, + "output": 2 + }, + { + "input": 1, + "output": 2 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 0, + "output": 3 + }, + { + "input": 1, + "output": 3 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 3 + } + ] + }, + "preprocess": { + "s21": { + "calibration": { + "set_name": "smoke_cal3", + "bundle_path": "" + }, + "reference": { + "set_name": "smoke_cal3", + "bundle_path": "" + } + }, + "s11": { + "calibration": { + "open": { + "set_name": "", + "bundle_path": "" + }, + "short": { + "set_name": "", + "bundle_path": "" + }, + "load": { + "set_name": "", + "bundle_path": "" + } + }, + "reference": { + "set_name": "", + "bundle_path": "" + } + }, + "notch": { + "enabled": true, + "bands_hz": [], + "taper_width_hz": 40000000.0, + "taper_type": "cosine" + } + }, + "gpr": { + "relative_permittivity": 1.0, + "tx_geometry": [ + { + "output_pos": 0, + "x_m": 0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 1, + "x_m": -0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 2, + "x_m": 0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 3, + "x_m": -0.905, + "y_m": 0.0, + "z_m": 0.0 + } + ], + "rx_geometry": [ + { + "input_pos": 0, + "x_m": -0.18, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 1, + "x_m": 0.485, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 2, + "x_m": -0.49, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 3, + "x_m": 0.185, + "y_m": 0.0, + "z_m": 0.0 + } + ] + }, + "rings": { + "raw": { + "name": "/radar_raw_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "raw_tap": { + "name": "/radar_raw_tap_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "preprocessed": { + "name": "/radar_preprocessed_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "preprocessed_tap": { + "name": "/radar_preprocessed_tap_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "results": { + "name": "/radar_results_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + } + } +} diff --git a/run_config_examples/run_config_librevna_multi_per_point_lowband.example.json b/run_config_examples/run_config_librevna_multi_per_point_lowband.example.json new file mode 100644 index 0000000..a279d05 --- /dev/null +++ b/run_config_examples/run_config_librevna_multi_per_point_lowband.example.json @@ -0,0 +1,318 @@ +{ + "radar": { + "model": "librevna_multi", + "serial": "206830985532", + "remote_host": "127.0.0.1", + "remote_port": 50209, + "driver_mode": "native", + "mock_signal_hz": 5000000.0, + "visa_library": "", + "multi_device": { + "slave_serials": [ + "206930965532", + "206930A15532" + ], + "force_external_reference": true, + "recovery_attempts": 3, + "output_switch_positions": 1, + "input_switch_positions": 1, + "stimulus_switch_positions": 2 + }, + "kamil_adc": { + "project_dir": "", + "executable_path": "", + "tty_path": "", + "args": [], + "env": {}, + "startup_timeout_s": 5.0, + "sweep_timeout_s": 5.0, + "stop_timeout_s": 2.0, + "phase_calibration": { + "phase0_rad": 0.0, + "freq0_hz": 2046000000.0, + "phase1_rad": 300.0, + "freq1_hz": 5612000000.0 + }, + "band": { + "start_hz": 2100000000.0, + "stop_hz": 5500000000.0, + "points": 2048 + } + }, + "laser_control": { + "enabled": false, + "port": "", + "mode": "manual", + "pi_coeff1_p": 2560, + "pi_coeff1_i": 128, + "pi_coeff2_p": 2560, + "pi_coeff2_i": 128, + "manual": { + "temp1": 25.0, + "temp2": 25.0, + "current1": 30.0, + "current2": 30.0 + }, + "variation": { + "variation_type": "CHANGE_CURRENT_LD1", + "static_temp1": 25.0, + "static_temp2": 25.0, + "static_current1": 30.0, + "static_current2": 30.0, + "min_value": 30.0, + "max_value": 35.0, + "step": 0.1, + "time_step": 20, + "delay_time": 3, + "temp_tolerance_c": 0.03 + } + }, + "sweep": { + "start_hz": 30000000.0, + "stop_hz": 200000000.0, + "if_bandwidth_hz": 50000.0, + "stimulus_power_dbm": -10.0, + "dwell_us": 2, + "points": 201 + } + }, + "switches": { + "port1": { + "name": "port1", + "driver_mode": "mock", + "driver": "h7992", + "radar_port": 1, + "positions": 4, + "default_position": 0, + "gpio_chip": "/dev/gpiochip0", + "pin_a": 17, + "pin_b": 27, + "invert_logic": false + }, + "port2": { + "name": "port2", + "driver_mode": "mock", + "driver": "h7992", + "radar_port": 2, + "positions": 4, + "default_position": 0, + "gpio_chip": "/dev/gpiochip0", + "pin_a": 22, + "pin_b": 23, + "invert_logic": false + } + }, + "control_button": { + "enabled": false, + "gpio_chip": "/dev/gpiochip0", + "pin": -1, + "active_low": true, + "bias": "", + "debounce_ms": 50, + "action": "capture_tmp_reference" + }, + "logging": { + "level": "debug" + }, + "run": { + "settling_ms": 0, + "idle_sleep_ms": 2, + "continuous": true, + "processing_live_config_path": "python_app/runtime/processing_live.json", + "locator_server": { + "device_id": 3, + "protocol_version": 1, + "host": "0.0.0.0", + "port": 8888, + "max_payload_bytes": 65536, + "client_queue_size": 32, + "logger_name": "locator_runtime" + }, + "combos": [ + { + "input": 0, + "output": 0 + }, + { + "input": 1, + "output": 0 + }, + { + "input": 2, + "output": 0 + }, + { + "input": 3, + "output": 0 + }, + { + "input": 0, + "output": 1 + }, + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 1 + }, + { + "input": 3, + "output": 1 + }, + { + "input": 0, + "output": 2 + }, + { + "input": 1, + "output": 2 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 0, + "output": 3 + }, + { + "input": 1, + "output": 3 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 3 + } + ] + }, + "preprocess": { + "s21": { + "calibration": { + "set_name": "smoke_cal3", + "bundle_path": "" + }, + "reference": { + "set_name": "smoke_cal3", + "bundle_path": "" + } + }, + "s11": { + "calibration": { + "open": { + "set_name": "", + "bundle_path": "" + }, + "short": { + "set_name": "", + "bundle_path": "" + }, + "load": { + "set_name": "", + "bundle_path": "" + } + }, + "reference": { + "set_name": "", + "bundle_path": "" + } + }, + "notch": { + "enabled": true, + "bands_hz": [], + "taper_width_hz": 40000000.0, + "taper_type": "cosine" + } + }, + "gpr": { + "relative_permittivity": 1.0, + "tx_geometry": [ + { + "output_pos": 0, + "x_m": 0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 1, + "x_m": -0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 2, + "x_m": 0.905, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "output_pos": 3, + "x_m": -0.905, + "y_m": 0.0, + "z_m": 0.0 + } + ], + "rx_geometry": [ + { + "input_pos": 0, + "x_m": -0.18, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 1, + "x_m": 0.485, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 2, + "x_m": -0.49, + "y_m": 0.0, + "z_m": 0.0 + }, + { + "input_pos": 3, + "x_m": 0.185, + "y_m": 0.0, + "z_m": 0.0 + } + ] + }, + "rings": { + "raw": { + "name": "/radar_raw_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "raw_tap": { + "name": "/radar_raw_tap_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "preprocessed": { + "name": "/radar_preprocessed_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "preprocessed_tap": { + "name": "/radar_preprocessed_tap_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + }, + "results": { + "name": "/radar_results_simulator", + "capacity": 50, + "slot_size_bytes": 2097152 + } + } +}